我试图用一些命令制作批处理文件,所以一旦它运行,它会改变文件中的一些字符串,构建项目并生成APK签名。我需要改变的字符串是:-包名(com.company.project)-一些图像(如图标,启动画面,…)-从应用程序中指定的一些不相关的字符串。
对于最后2件事,我知道如何做到这一点,但对于包名,我觉得只是找到并替换应用程序根文件夹(包括子目录)中该字符串的所有出现是有问题的。
ant
有什么方法或命令可以做到这一点吗?
我还遇到了一个问题,而运行命令ant release
。我找到根文件夹,运行命令,结果出错了。所以我不得不去eclipse,清理项目并让它自动构建(没有生成APK,因为当你试图在设备上运行它时它会这样做),所以在那一点上,我的bin文件夹只包含文件夹:classes, dexedLibs, res和Manifest.xml文件。
然后我可以进入CL并运行ant release
。有没有办法从CL中完成这些呢?像清洁和构建这样的东西,所以我可以在没有问题的情况下运行ant release
命令?
注意:对于find and replace
,我使用名为FNR的.exe来完成这项工作
我现在使用gradle,可以通过更改包名来构建,但在构建中还有一些事情我想做。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....中的图标/png文件自定义文件夹
我完全不知道该怎么做。我试着:buildTypes{
flavor1{
copy{
from('src/res/'){
include '**/*.xml'
filter{String line -> line.replaceAll(string_to_be_replaced, replaced_string)}
}
into '$buildDir/res'
}
}
}
但没有
我需要更改的字符串是:-包名(com.company.project)
如果您要根据这是调试构建还是发布构建来更改这些内容,您可以在构建类型的包名称上指定后缀:
android {
buildTypes {
debug {
packageNameSuffix ".debug"
}
}
}
或者,如果您要更改这些内容为其他内容,您可以创建产品口味并替换每种口味的包装名称:
android {
productFlavors {
flavor1 {
packageName "com.example.flavor1"
}
flavor2 {
packageName "com.example.flavor2"
}
}
}
- 一些图像(如图标,闪屏,…)-一些与应用程序特定的无关字符串。
您可以为构建类型(例如,src/debug/
)或产品风格(例如,src/flavor1/
)创建源集,并在其中拥有资源的替换版本。这将处理您的图像,以及您的"无关字符串",如果您将其定义为字符串资源。
源集也可以包含Java代码,尽管这会变得越来越复杂,因此我建议您使用字符串资源和替换资源。