产品风味 [从 eclipse 迁移到 android studio]
Product flavour [Migrating from eclipse to android studio]
我已将我的应用程序从 eclipse 迁移到 android studio,现在我正在尝试 运行 产品口味。
我一直在关注 http://blog.robustastudio.com/mobile-development/android/building-multiple-editions-of-android-app-gradle/
上的博客
以下是我从 eclipse 导入时的构建结构。
我能够在构建变体中看到变体 window。
以下是build.gradle
应用插件:'com.android.application'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':volley')
compile 'com.google.android.gms:play-services-gcm:7.5.0'
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
compile 'com.android.support:appcompat-v7:21.0.+'
}
android {
compileSdkVersion 22
buildToolsVersion "22.0.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
defaultConfig {
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true;
proguardFiles getDefaultProguardFile('proguard-project.txt');
}
}
productFlavors {
demo {
applicationId "com.demo.app"
}
}
lintOptions {
checkReleaseBuilds false;
abortOnError false;
}
}
我希望 Constants.java 文件可用于不同的口味,因为它对各个口味有不同的值。
以下是一般工作室项目中的构建结构
app/
|--libs/
|--src/
|--vanilla/
| |--java/
| |--com/example/
| |--Flavor.java
|--strawberry/
| |--java/
| |--com/example/
| |--Flavor.java
|--main/
|--java/
| |--...
|--res/
| |--...
|--AndroidManifest.xml
但是从eclipse迁移过来的结构好像完全不一样。
我试图在 src [demo/com.demo.app] 中创建一个目录来检查风味变体。但它不起作用。任何人都可以指导我吗?我如何着手为从 Eclipse 迁移的项目提供产品风味支持
当您从 Eclipse 导入项目时,Android Studio 会保持相同的文件夹结构,因此您的源代码不会移动太多。
这意味着您将无法使用默认源位置。这就是为什么你的 build.gradle 有 sourceSets
闭包:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
此块设置所有默认代码(main
配置)的位置。
如果您不想更改项目结构,可以根据自己的喜好在 sourceSets
中添加另一个块。以下示例将允许您将 demo
风格的所有代码放在 demo/src
:
下
sourceSets {
main {}
demo {
manifest.srcFile 'demo/AndroidManifest.xml'
java.srcDirs = ['demo/src']
resources.srcDirs = ['demo/src']
aidl.srcDirs = ['demo/src']
renderscript.srcDirs = ['demo/src']
res.srcDirs = ['demo/res']
assets.srcDirs = ['demo/assets']
}
}
另一种选择是完全删除 sourceSets
闭包并更新您的项目结构以匹配 Gradle 支持的项目的标准结构。
我已将我的应用程序从 eclipse 迁移到 android studio,现在我正在尝试 运行 产品口味。 我一直在关注 http://blog.robustastudio.com/mobile-development/android/building-multiple-editions-of-android-app-gradle/
上的博客以下是我从 eclipse 导入时的构建结构。
我能够在构建变体中看到变体 window。
以下是build.gradle
应用插件:'com.android.application'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':volley')
compile 'com.google.android.gms:play-services-gcm:7.5.0'
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
compile 'com.android.support:appcompat-v7:21.0.+'
}
android {
compileSdkVersion 22
buildToolsVersion "22.0.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
defaultConfig {
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true;
proguardFiles getDefaultProguardFile('proguard-project.txt');
}
}
productFlavors {
demo {
applicationId "com.demo.app"
}
}
lintOptions {
checkReleaseBuilds false;
abortOnError false;
}
}
我希望 Constants.java 文件可用于不同的口味,因为它对各个口味有不同的值。
以下是一般工作室项目中的构建结构
app/
|--libs/
|--src/
|--vanilla/
| |--java/
| |--com/example/
| |--Flavor.java
|--strawberry/
| |--java/
| |--com/example/
| |--Flavor.java
|--main/
|--java/
| |--...
|--res/
| |--...
|--AndroidManifest.xml
但是从eclipse迁移过来的结构好像完全不一样。 我试图在 src [demo/com.demo.app] 中创建一个目录来检查风味变体。但它不起作用。任何人都可以指导我吗?我如何着手为从 Eclipse 迁移的项目提供产品风味支持
当您从 Eclipse 导入项目时,Android Studio 会保持相同的文件夹结构,因此您的源代码不会移动太多。
这意味着您将无法使用默认源位置。这就是为什么你的 build.gradle 有 sourceSets
闭包:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
此块设置所有默认代码(main
配置)的位置。
如果您不想更改项目结构,可以根据自己的喜好在 sourceSets
中添加另一个块。以下示例将允许您将 demo
风格的所有代码放在 demo/src
:
sourceSets {
main {}
demo {
manifest.srcFile 'demo/AndroidManifest.xml'
java.srcDirs = ['demo/src']
resources.srcDirs = ['demo/src']
aidl.srcDirs = ['demo/src']
renderscript.srcDirs = ['demo/src']
res.srcDirs = ['demo/res']
assets.srcDirs = ['demo/assets']
}
}
另一种选择是完全删除 sourceSets
闭包并更新您的项目结构以匹配 Gradle 支持的项目的标准结构。