我试图用一些命令创建一个批处理文件,因此一旦它运行,它将更改文件中的一些字符串,构建项目并生成APK签名。 我需要更改的字符串是: - 程序包名称(com.company.project) - 某些图像(如图标,启动画面,...) - 某些与应用程序无关的无关字符串。从命令行自定义构建Android应用程序
对于最后2件事,我知道该怎么做,但对于软件包名称,我觉得在应用程序的根文件夹(包括子目录)中找到并替换该字符串的所有出现是错误的。
ant
对此有任何方法或命令吗?
另外我遇到了一个问题,同时运行命令ant release
。 我去了我的根文件夹,运行命令,它会得到错误。 所以我必须去eclipse,清理项目并让它自动构建(没有生成APK,因为它会在你尝试在设备上运行它时这样做),所以在这个时候我的bin文件夹只包含文件夹:classes, dexedLibs,res和Manifest.xml文件。然后我可以去CL并运行ant release
。 那么有没有办法从CL做这一切?像干净和构建的东西,所以我可以在没有问题后运行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 ....文件夹中的图标/ png文件以进行自定义。
我完全不知道该怎么做。我想:
buildTypes{
flavor1{
copy{
from('src/res/'){
include '**/*.xml'
filter{String line -> line.replaceAll(string_to_be_replaced, replaced_string)}
}
into '$buildDir/res'
}
}
}
但没有
此时,没有人应该编写新的自定义Ant脚本。请转到Gradle for Android。这不仅是支持的命令行构建系统的前进,它还通过产品风格处理您正在寻找的所有内容。 – CommonsWare
好吧,现在我有了渐进式,我该如何设置这些值?在build.gradle文件中?怎么样?谢谢 – AAlferez