开始使用新的 android studio 看起来非常灵活,但这通常会带来陡峭的学习曲线。希望在这里得到一些帮助。
我已经构建了一个应用程序并使用此 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")
}
这非常有效,一旦我学习了语法,它就会比以前的系统更容易使用。
现在我的问题。
我基本上想添加一些产品口味。
我目前使用谷歌分析来跟踪点击次数、使用统计数据等简单的事情。
过去[在 android studio 之前]通常以免费/付费版本分发我的应用程序。
我想为以下内容创建构建风格: 谷歌免费玩 谷歌播放付费 亚马逊免费 亚马逊付费
这些应用程序的代码应该大部分相同,但它们不可能是相同的,例如在您的亚马逊应用程序中添加指向 google play 的链接会给您带来一些麻烦。因此,我需要在构建风格中拥有独特的类。
我正在阅读一些文档并观看谷歌谈论如何设置构建风格,但我有点困惑。
有人可以帮我定义这个项目的文件夹结构吗?
当前应用程序结构
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
我可以将新文件夹放置在任何地方吗?如何将它们与成绩链接起来以正确构建变体?
最佳答案
您应该做的第一件事是将这些风格添加到您的 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
此时,您的应用程序中将具有三个不同的概念:
构建类型: 调试
和发布
产品风格:googleFree
、googlePaid
、amazonFree
和 amazonPaid
构建变体:构建类型和风格的组合
googleFreeDebug
googleFreeRelease
googlePaidDebug
googlePaidRelease
亚马逊FreeDebug
亚马逊免费发布
亚马逊付费调试
amazonPaidRelease
flavor 特定资源:
为了定义资源,您应该:
app
src
main
java
res
googlePaid
java
res
googleFree
java
res
amazonPaid
java
res
amazonFree
java
res
有了这个结构,您就可以将所有共享内容放在 main
下,而特定于 flavor 的内容将存在于每个 flavor 的文件夹中。然后,当构建应用程序的特定变体时,android 和 gradle 将为您解析正确的资源。如果您有兴趣了解更多详情,请参阅Resource Merging .
将风格添加到您的 build.gradle 文件后,如果您同步您的项目,Android Studio 将能够选择您的构建变体,您可以从 IDE 中选择这些变体:
关于Android Studio 构建风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551880/