我尝试使用某些命令制作批处理文件,因此一旦运行,它将更改文件中的某些字符串,构建项目并生成APK签名。 我需要改变的字符串是: - 包名称(com.company.project) - 一些图像(如图标,闪屏......) - 从应用程序中特定的一些不相关的字符串。
对于我知道如何做的最后两件事,但是对于包名,我觉得在应用程序的根文件夹(包括子目录)中找到并替换该字符串的所有出现都有问题。 / p>
ant
有没有办法或命令执行此操作?
在运行命令ant release
时,我遇到了一个问题。
我去了我的根文件夹,运行命令,它得到错误。
所以我不得不去eclipse,清理项目并让它自动生成(没有生成APK,因为当你尝试在设备上运行时它会这样做)所以此时我的bin文件夹只包含文件夹:classes,dexedLibs ,res和Manifest.xml文件。
然后我可以去CL并运行ant release
。
所以有没有办法从CL做到这一切?像clean和build之类的东西,所以我可以在没有问题的情况下运行ant release
命令?
注意:对于find and replace
我使用名为FNR的.exe来完成这项工作
修改 我现在正在使用gradle并且可以构建更改包名称,但是我仍然需要在build.gradle文件中执行一些操作并且无法使其正常工作。
这是build.gradle:
task("hello"){
println "Hello world!!"
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.8.+'
}
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
productFlavors {
flavor1 {
packageName "com.testCompany.testProject"
}
}
signingConfigs {
release {
storeFile file("keystore/android.keystore")
storePassword 'blah blah'
keyAlias "blah blah"
keyPassword 'blah blah blah'
}
}
buildTypes {
flavor1 {
zipAlign true
sourceSets {
main {
signingConfig signingConfigs.release
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}
}
}
我很确定我做错了。 所以我想: - 更改res / strings.xml文件中的一些字符串。 - 更改res / drawable ....文件夹中的icon / png文件以获取自定义文件。
我完全不知道该怎么做。我试过了:
buildTypes{
flavor1{
copy{
from('src/res/'){
include '**/*.xml'
filter{String line -> line.replaceAll(string_to_be_replaced, replaced_string)}
}
into '$buildDir/res'
}
}
}
但没有
答案 0 :(得分:2)
我需要更改的字符串是: - 包名称(com.company.project)
如果要根据这是调试版本还是发布版本来更改这些内容,可以specify a suffix on the package name for a build type:
android {
buildTypes {
debug {
packageNameSuffix ".debug"
}
}
}
或者,如果您要更改其他内容,可以create product flavors and replace the package name per flavor:
android {
productFlavors {
flavor1 {
packageName "com.example.flavor1"
}
flavor2 {
packageName "com.example.flavor2"
}
}
}
- 一些图片(如图标,启动画面,......) - 一些与应用程序不同的无关字符串。
您可以为构建类型(例如src/debug/
)或产品风格(例如src/flavor1/
)创建源集,并在其中包含资源的替换版本。这将处理您的图像,以及您的"无关的字符串"如果你把它定义为字符串资源。
源集也可以有Java代码,虽然这会逐渐变得更复杂,所以我建议您使用字符串资源和替换资源。