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
|
||||
get() {
|
||||
val module = (this as? ModuleSourceInfo)?.module ?: return false
|
||||
if (isTestMode(module)) return true
|
||||
return module.getOptionValueInFacet(EXPERIMENTAL_OPTION) == "true"
|
||||
return module.androidExtensionsIsExperimental
|
||||
}
|
||||
|
||||
internal val Module.androidExtensionsIsExperimental: Boolean
|
||||
get() {
|
||||
if (isTestMode(this)) return true
|
||||
return getOptionValueInFacet(EXPERIMENTAL_OPTION) == "true"
|
||||
}
|
||||
|
||||
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.idea.AndroidPsiTreeChangePreprocessor
|
||||
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.descriptors.ModuleDescriptor
|
||||
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 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 allResDirectories = androidFacet.getAppResources(true)?.resourceDirs.orEmpty().mapNotNull { it.canonicalPath }
|
||||
|
||||
Reference in New Issue
Block a user