Android Studio buildflavors
Android Studio buildflavors
开始使用新的 android 工作室似乎非常灵活,但通常会带来陡峭的学习曲线。希望在这里得到一些帮助。
我构建了一个应用程序并使用此 build.gradle 文件部署了它
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "me.test.simpleProject
minSdkVersion 10
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
signingConfigs {
release {
storeFile file("../my.keystore.jks")
storePassword System.getenv("and_ks_pw")
keyAlias System.getenv("and_ky_alias")
keyPassword System.getenv("and_k_pw")
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
debuggable true
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
compile project(":Library:lib_my_lib_a")
compile project(":Library:lib_my_lib_b")
compile project(":Library:lib_my_lib_c")
}
这很好用,一旦我学会了语法,它就会比以前的系统更容易使用。
现在我的问题。
我想基本上添加几个产品口味。
我目前使用 google 分析来跟踪点击次数、使用情况统计数据等简单的事情。
过去 [在 android studio 之前] 通常以免费/付费版本分发我的应用程序。
我想为以下项目创建 say build flavors:
google 免费玩
google玩付费
亚马逊免费
亚马逊付费
这些应用程序的代码应该大部分相同,但它们不可能是因为,例如在您的亚马逊应用程序中将 links 添加到 google play 会给您带来一些麻烦。所以我需要在构建风格中具有独特的 类。
我正在阅读一些文档并观看 google 关于设置构建风格的讨论,但我有点困惑。
谁能帮我定义这个项目的文件夹结构?
当前应用结构
test/
.gradle/
.idea/
app/
app/build
app/libs <-- empty
app/src
app/.gitignore
app/app.iml
app/build.gradle
app/proguard-rules.pro
build/
gradle/
Library/lib_a
Library/lib_b
Library/lib_c
.gitignore
build.gradle
gradle.properties
gradlew
gradlew.bat
local.properties
settings.gradle
test.iml
我可以将新文件夹放在任何地方吗?我如何 link 升级它们以正确构建变体?
要在您的应用中使用风味,您应该具有如下结构:
app
src
flavor1
java
res
flavor2
java
res
main
java
res
您必须在 build.gradle
:
中定义口味
productFlavors {
flavor1 {
//
}
flavor2 {
//
}
}
然后你可以使用不同的依赖项:
dependencies {
releaseCompile
debugCompile
flavor1Compile
flavor1DegubCompile
}
例如:
dependencies {
freeCompile 'com.google.android.gms:play-services:7.5.0'
}
您应该做的第一件事是将这些风格添加到 gradle 脚本的 android
部分内:
productFlavors {
googleFree {
applicationId = "com.your.app.gfree"
}
googlePaid {
applicationId = "com.your.app.gpaid"
}
amazonFree {
applicationId = "com.your.app.afree"
}
amazonPaid {
applicationId = "com.your.app.apaid"
}
}
请注意,如果需要,您可以为您的应用程序定义不同的包名称,以及一些额外的属性。完整详情:Gradle Plugin - Build Variants
此时,您的应用程序中将具有三个不同的概念:
构建类型: Debug
和 Release
产品口味:googleFree
、googlePaid
、amazonFree
和amazonPaid
构建变体:构建类型和风格的组合
googleFreeDebug
googleFreeRelease
googlePaidDebug
googlePaidRelease
amazonFreeDebug
amazonFreeRelease
amazonPaidDebug
amazonPaidRelease
风味特定资源:
要定义资源,您应该:
app
src
main
java
res
googlePaid
java
res
googleFree
java
res
amazonPaid
java
res
amazonFree
java
res
有了这个结构,您可以将所有共享的东西放在 main
下,而特定风味的东西将存在于每个风味的文件夹中。然后,在构建应用程序的特定 变体 时,android 和 gradle 将为您解析正确的资源。如果您对更多详细信息感兴趣,请参阅 Resource Merging。
将风格添加到您的 build.gradle 文件后,如果您同步项目,Android Studio 将能够选择您的构建变体,您可以 select 这些来自IDE:
开始使用新的 android 工作室似乎非常灵活,但通常会带来陡峭的学习曲线。希望在这里得到一些帮助。
我构建了一个应用程序并使用此 build.gradle 文件部署了它
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "me.test.simpleProject
minSdkVersion 10
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
signingConfigs {
release {
storeFile file("../my.keystore.jks")
storePassword System.getenv("and_ks_pw")
keyAlias System.getenv("and_ky_alias")
keyPassword System.getenv("and_k_pw")
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
debuggable true
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
compile project(":Library:lib_my_lib_a")
compile project(":Library:lib_my_lib_b")
compile project(":Library:lib_my_lib_c")
}
这很好用,一旦我学会了语法,它就会比以前的系统更容易使用。
现在我的问题。
我想基本上添加几个产品口味。
我目前使用 google 分析来跟踪点击次数、使用情况统计数据等简单的事情。
过去 [在 android studio 之前] 通常以免费/付费版本分发我的应用程序。
我想为以下项目创建 say build flavors: google 免费玩 google玩付费 亚马逊免费 亚马逊付费
这些应用程序的代码应该大部分相同,但它们不可能是因为,例如在您的亚马逊应用程序中将 links 添加到 google play 会给您带来一些麻烦。所以我需要在构建风格中具有独特的 类。
我正在阅读一些文档并观看 google 关于设置构建风格的讨论,但我有点困惑。
谁能帮我定义这个项目的文件夹结构?
当前应用结构
test/
.gradle/
.idea/
app/
app/build
app/libs <-- empty
app/src
app/.gitignore
app/app.iml
app/build.gradle
app/proguard-rules.pro
build/
gradle/
Library/lib_a
Library/lib_b
Library/lib_c
.gitignore
build.gradle
gradle.properties
gradlew
gradlew.bat
local.properties
settings.gradle
test.iml
我可以将新文件夹放在任何地方吗?我如何 link 升级它们以正确构建变体?
要在您的应用中使用风味,您应该具有如下结构:
app
src
flavor1
java
res
flavor2
java
res
main
java
res
您必须在 build.gradle
:
productFlavors {
flavor1 {
//
}
flavor2 {
//
}
}
然后你可以使用不同的依赖项:
dependencies {
releaseCompile
debugCompile
flavor1Compile
flavor1DegubCompile
}
例如:
dependencies {
freeCompile 'com.google.android.gms:play-services:7.5.0'
}
您应该做的第一件事是将这些风格添加到 gradle 脚本的 android
部分内:
productFlavors {
googleFree {
applicationId = "com.your.app.gfree"
}
googlePaid {
applicationId = "com.your.app.gpaid"
}
amazonFree {
applicationId = "com.your.app.afree"
}
amazonPaid {
applicationId = "com.your.app.apaid"
}
}
请注意,如果需要,您可以为您的应用程序定义不同的包名称,以及一些额外的属性。完整详情:Gradle Plugin - Build Variants
此时,您的应用程序中将具有三个不同的概念:
构建类型: Debug
和 Release
产品口味:googleFree
、googlePaid
、amazonFree
和amazonPaid
构建变体:构建类型和风格的组合
googleFreeDebug
googleFreeRelease
googlePaidDebug
googlePaidRelease
amazonFreeDebug
amazonFreeRelease
amazonPaidDebug
amazonPaidRelease
风味特定资源:
要定义资源,您应该:
app
src
main
java
res
googlePaid
java
res
googleFree
java
res
amazonPaid
java
res
amazonFree
java
res
有了这个结构,您可以将所有共享的东西放在 main
下,而特定风味的东西将存在于每个风味的文件夹中。然后,在构建应用程序的特定 变体 时,android 和 gradle 将为您解析正确的资源。如果您对更多详细信息感兴趣,请参阅 Resource Merging。
将风格添加到您的 build.gradle 文件后,如果您同步项目,Android Studio 将能够选择您的构建变体,您可以 select 这些来自IDE: