its*_*ers 17 android gradle android-studio
我在Android Studio中使用gradle创建了一个新的应用程序,现在我需要在资源中制作大约10个具有不同包名和值的版本.我在示例中制作了自定义flavor,并希望使用自定义值替换此自定义flavor中的一些字符串.我找到了这样的例子:
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: ['version': '2.2'])
Run Code Online (Sandbox Code Playgroud)
但我不知道该把它放在哪里.据我所知,我需要把它放到单独的任务中,但如何通过IDE调用此任务?
此外,我需要在Java类和Content Provider的auth中替换一些变量,也许我需要通过将文件复制到flavor1文件夹并让gradle合并它来实现这一点,但似乎错误的解决方案是存储多个文件的副本line ...也许我需要为这一切使用其他一些解决方案?
这是build.gradle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.2'
}
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':JazzyListView')
compile project(':ABS')
compile project(':Volley')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
versionCode 5
versionName "3.0"
minSdkVersion 8
targetSdkVersion 17
}
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
res.srcDirs = ['src/main/res']
}
}
productFlavors {
flavor1 {
packageName "com.example.flavor1"
}
flavor2 {
packageName "com.example.flavor2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
gol*_*rox 18
我遇到了类似的问题.我想将Jenkins内部版本号添加到从strings.xml合并的字符串中.这是Android Gradle插件0.12.+的解决方案.
// Insert the build number into strings.xml
android.applicationVariants.all{ variant ->
variant.mergeResources.doLast{
ext.env = System.getenv()
def buildNumber = env.BUILD_NUMBER
if (buildNumber != null) {
File valuesFile = file("${buildDir}/intermediates/res/${variant.dirName}/values/values.xml")
println("Replacing revision number in " + valuesFile)
println("Build number = " + buildNumber)
String content = valuesFile.getText('UTF-8')
content = content.replaceAll(/devBuild/, buildNumber)
valuesFile.write(content, 'UTF-8')
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可能希望根据要执行的操作挂钩到不同的Gradle任务.看一下Android构建中的任务来解决这个问题.
http://tools.android.com/tech-docs/new-build-system/user-guide
UPDATE:在某些时候,Android的摇篮插件改为遍历应用程序从关键字的变体的方式每到所有.我的答案已经更新以反映更改,但如果此代码不向控制台打印任何内容,请尝试切换到每个.
在“src”文件夹中,创建与“main”文件夹具有相同层次结构的“flavor1”和“flavor2”文件夹。如果 main/res/values 中有 strings.xml,您也可以在flavor1/res/values 中执行此操作,并在其中包含替换值。它可能会在 IDE 中显示错误,但仍应构建并运行。
| 归档时间: |
|
| 查看次数: |
22160 次 |
| 最近记录: |