android - Android Studio 中的产品风格
问题描述
我无法让产品风味发挥作用。我有这个毕业
apply plugin: 'com.android.application'
android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 24
compileSdkVersion 27
}
signingConfigs {
release {
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
signingConfig signingConfigs.release
}
}
repositories {
maven { url "https://jitpack.io" }
}
flavorDimensions "dim1", "dim2", "dim3"
productFlavors {
flavor1 {
dimension "dim1"
applicationId "com.example.dim1.app"
}
flavor3 {
dimension "dim2"
applicationId "com.example.dim2.app"
}
flavor3 {
dimension "dim3"
applicationId "com.example.dim3.app"
}
}
sourceSets {
flavor1 {
java.srcDirs = ["W:/android-studio-projects/sharedid/app/src/main/java/"]
manifest.srcFile "W:/android-studio-projects/sharedid/app/src/example1/AndroidManifest.xml"
assets.srcDirs = ["W:/android-studio-projects/sharedid/app/src/example1/assets/"]
resources.srcDirs = ["W:/android-studio-projects/sharedid/app/src/main/res/", "W:/android-studio-projects/sharedid/app/src/example1/res/"]
}
flavor2 {
java.srcDirs = ["W:/android-studio-projects/sharedid/app/src/main/java/"]
manifest.srcFile "W:/android-studio-projects/sharedid/app/src/example2/AndroidManifest.xml"
assets.srcDirs = ["W:/android-studio-projects/sharedid/app/src/example2/assets/"]
resources.srcDirs = ["W:/android-studio-projects/sharedid/app/src/main/res/", "W:/android-studio-projects/sharedid/app/src/example2/res/"]
}
flavor3 {
java.srcDirs = ["W:/android-studio-projects/sharedid/app/src/main/java/"]
manifest.srcFile "W:/android-studio-projects/sharedid/app/src/example3/AndroidManifest.xml"
assets.srcDirs = ["W:/android-studio-projects/sharedid/app/src/example3/assets/"]
resources.srcDirs = ["W:/android-studio-projects/sharedid/app/src/main/res/", "W:/android-studio-projects/sharedid/app/src/example3/res/"]
}
}
}
dependencies {
api 'com.google.android.gms:play-services-maps:15.0.0'
api 'com.google.android.gms:play-services-location:15.0.0'
api 'com.android.support:appcompat-v7:27.1.1'
api 'com.github.PhilJay:MPAndroidChart:v2.0.8'
}
...
当我进入“构建|选择变体”时,我只能选择
模块:应用程序 构建变体:flavor1Flavor2Flavor3Debug,flavor1Flavor2Flavor3Release
我本来想得到
- 以下构建变体:flavor1Debug、flavor2Debug、flavor3Debug、flavor1Release、flavor2Release、flavor3Release
我试过“文件|用gradle文件同步项目”
...
我收到这个错误
原因:java.lang.RuntimeException:无法从 W:\android-studio-projects\sharedid\app\src\main\AndroidManifest.xml 读取 packageName
我都试过了
- 没有这样的文件(希望它会采用产品风味吗?)
- 让“主要”清单仅定义所有产品风味之间的共享内容
解决方案
我认为有两个不相关的问题:
目前,您有 2 种构建类型(自动创建的
debug
andrelease
)和 3 个维度(dim1
,dim2
anddim3
),每个都有 1 个变体(flavor1
fordim1
,flavor2
fordim2
,...),这最多给出:2 * 1 * 1 * 1 = 2 种组合
您应该切换到
dim1
具有 3 个变体(flavor1
和flaver2
)的 2 个构建类型和 1 个维度(例如)flavor3
:2 * 3 = 6 个 apk
您应该有一个主要清单。与其他资源不同,清单不是简单地被覆盖,而是从多个来源合并(有关更多详细信息,请参阅合并多个清单文件)。
它至少应该包含一个包名称(可能与最终的 applicationId 不同),正如Configure Product Flavors中的此注释所解释的那样:
注意:您仍然需要使用main/ manifest 文件中的package属性指定包名称。您还必须在源代码中使用该包名称来引用 R 类,或解析任何相关活动或服务注册。这允许您使用applicationId 为每个产品风味提供一个唯一的 ID 用于打包和分发,而无需更改您的源代码。
推荐阅读
- objective-c - 为什么我不能在 NSMutable 字典中设置对象
- c++ - 尝试将我的单个 Visual Studio 2010 C++ 项目构建为 exe 和 DLL,而不是再次创建新项目
- python - 战舰游戏..数据库和存储玩家数据的一些问题
- google-apps-script - 时间戳有问题
- jquery - Use update model value inside jquery function in angular 4
- python - Tensorflow - “str”对象没有属性“op” - Adam Optimizer - var_list
- c++ - XOR 在 C++ 中返回混乱的值
- javascript - Reference.child 失败:第一个参数是无效路径 =“/Users/[object Object]/device_token”
- python - 为什么我不能从列表中打印单个元组?
- c++ - 共享库中具有全局状态的 C++ 标头