繁体   English   中英

具有不同applicationId的Android风格打破了应用程序行为和外观

[英]Android flavors with different applicationId broke application behavior and look

我正在使用以下build.gradle

apply plugin: 'com.android.application'

def final appId = "com.example.app"

android {
    compileSdkVersion 23
    buildToolsVersion '24.0.1'

    defaultConfig {
        vectorDrawables.useSupportLibrary = true
        applicationId appId
        buildConfigField "String", "DBNAME", "\"mydb.db\""
    }

    testOptions {
        unitTests.returnDefaultValues = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFile 'proguard-rules.pro'
        }
    }
    productFlavors {
        rel {
            minSdkVersion 14
            applicationId = "${appId}"
            buildConfigField "String", "DBNAME", "\"mydb.db\""
            targetSdkVersion 23
            versionCode 33
            versionName '1.4'
        }
        dev {
            minSdkVersion 14
            applicationId =  "${appId}.dev"
            buildConfigField "String", "DBNAME", "\"mydb_dev.db\""
            targetSdkVersion 3
            versionCode 1
            versionName '1.4-beta'

        }
    }
}

...

我没有将代码从main复制到reldev源集,我刚刚为每种风格创建了单独的文件:res / values / strings.xml,res / values / colors.xml,google-service.json。

应用程序构建良好,使用不同的applicationId并在同一设备上单独安装。

对于rel味道,一切都运行良好,它的applicationId = 'com.example.app'等于原始包名和实际的源包名。

但是我获得了非常奇怪的行为,并寻找dev风格,它变成了applicationId = 'com.example.app.dev'

首先,我看到动画无法正常工作,因为它们似乎变成了错误的坐标。

其次,我有许多片段,动态膨胀视图,它们部分显示或根本不显示 - 在不同的运行中不同。

我建议问题是我对类有相同的包名,可能会出现如此模糊的类标识。

我看到getContext()为两种风格返回相同的类'com.example.app.MainActivity',我认为这很重要。

我不想复制每个源集下的所有源代码,因为我不需要在那里进行更改 - 代码仍然相同。

什么是解决方案?

这是一种错误,需要花费很多时间才能解决......

我指向了targetSdkVersion 3而不是targetSdkVersion 23

(我很惊讶它正在建造)

问题解决了,Android Flavors非常棒!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM