Android Extensions: Downgrade to old Android variant processing logic when 'experimental' flag is disabled (KT-19270)
This commit is contained in:
committed by
Yan Zhulanow
parent
3bb7febeb8
commit
6002281874
+7
-2
@@ -55,8 +55,13 @@ internal val Module.androidExtensionsIsEnabled: Boolean
|
|||||||
internal val ModuleInfo.androidExtensionsIsExperimental: Boolean
|
internal val ModuleInfo.androidExtensionsIsExperimental: Boolean
|
||||||
get() {
|
get() {
|
||||||
val module = (this as? ModuleSourceInfo)?.module ?: return false
|
val module = (this as? ModuleSourceInfo)?.module ?: return false
|
||||||
if (isTestMode(module)) return true
|
return module.androidExtensionsIsExperimental
|
||||||
return module.getOptionValueInFacet(EXPERIMENTAL_OPTION) == "true"
|
}
|
||||||
|
|
||||||
|
internal val Module.androidExtensionsIsExperimental: Boolean
|
||||||
|
get() {
|
||||||
|
if (isTestMode(this)) return true
|
||||||
|
return getOptionValueInFacet(EXPERIMENTAL_OPTION) == "true"
|
||||||
}
|
}
|
||||||
|
|
||||||
val ModuleInfo.androidExtensionsGlobalCacheImpl: CacheImplementation
|
val ModuleInfo.androidExtensionsGlobalCacheImpl: CacheImplementation
|
||||||
|
|||||||
+28
@@ -28,6 +28,7 @@ import org.jetbrains.android.facet.AndroidFacet
|
|||||||
import org.jetbrains.kotlin.android.synthetic.AndroidConst.SYNTHETIC_PACKAGE_PATH_LENGTH
|
import org.jetbrains.kotlin.android.synthetic.AndroidConst.SYNTHETIC_PACKAGE_PATH_LENGTH
|
||||||
import org.jetbrains.kotlin.android.synthetic.idea.AndroidPsiTreeChangePreprocessor
|
import org.jetbrains.kotlin.android.synthetic.idea.AndroidPsiTreeChangePreprocessor
|
||||||
import org.jetbrains.kotlin.android.synthetic.idea.AndroidXmlVisitor
|
import org.jetbrains.kotlin.android.synthetic.idea.AndroidXmlVisitor
|
||||||
|
import org.jetbrains.kotlin.android.synthetic.idea.androidExtensionsIsExperimental
|
||||||
import org.jetbrains.kotlin.android.synthetic.res.*
|
import org.jetbrains.kotlin.android.synthetic.res.*
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
@@ -110,6 +111,33 @@ class IDEAndroidLayoutXmlFileManager(val module: Module) : AndroidLayoutXmlFileM
|
|||||||
private fun SourceProvider.toVariant() = AndroidVariant(name, resDirectories.map { it.canonicalPath })
|
private fun SourceProvider.toVariant() = AndroidVariant(name, resDirectories.map { it.canonicalPath })
|
||||||
|
|
||||||
private fun getAndroidModuleInfo(androidFacet: AndroidFacet): AndroidModule? {
|
private fun getAndroidModuleInfo(androidFacet: AndroidFacet): AndroidModule? {
|
||||||
|
if (androidFacet.module.androidExtensionsIsExperimental) {
|
||||||
|
return getAndroidModuleInfoExperimental(androidFacet)
|
||||||
|
}
|
||||||
|
|
||||||
|
val applicationPackage = androidFacet.manifest?.`package`?.toString()
|
||||||
|
|
||||||
|
if (applicationPackage != null) {
|
||||||
|
val mainVariant = androidFacet.mainSourceProvider.toVariant()
|
||||||
|
|
||||||
|
val method = try { androidFacet::class.java.getMethod("getFlavorSourceProviders") } catch (e: NoSuchMethodException) { null }
|
||||||
|
val variants: List<AndroidVariant>? = if (method != null) {
|
||||||
|
val sourceProviders = method.invoke(androidFacet) as List<SourceProvider>?
|
||||||
|
sourceProviders?.map { it.toVariant() } ?: listOf()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
val model = AndroidGradleModel.get(androidFacet.module)
|
||||||
|
model?.flavorSourceProviders?.map { it.toVariant() } ?: listOf(androidFacet.mainSourceProvider.toVariant())
|
||||||
|
}
|
||||||
|
|
||||||
|
if (variants != null) {
|
||||||
|
return AndroidModule(applicationPackage, listOf(mainVariant) + variants)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getAndroidModuleInfoExperimental(androidFacet: AndroidFacet): AndroidModule? {
|
||||||
val applicationPackage = androidFacet.manifest?.`package`?.toString() ?: return null
|
val applicationPackage = androidFacet.manifest?.`package`?.toString() ?: return null
|
||||||
|
|
||||||
val allResDirectories = androidFacet.getAppResources(true)?.resourceDirs.orEmpty().mapNotNull { it.canonicalPath }
|
val allResDirectories = androidFacet.getAppResources(true)?.resourceDirs.orEmpty().mapNotNull { it.canonicalPath }
|
||||||
|
|||||||
Reference in New Issue
Block a user