gpt4 book ai didi

android - 从命令行自定义构建 Android 应用程序

转载 作者:行者123 更新时间:2023-11-29 21:08:32 25 4
gpt4 key购买 nike

我正在尝试使用一些命令创建一个批处理文件,因此一旦它运行,它将更改文件中的一些字符串、构建项目并生成签名的 APK。我需要更改的字符串是:- 包名 (com.company.project)- 一些图像(如图标、闪屏……)- 应用程序特定的一些不相关的字符串。

对于最后两件事,我知道如何去做,但是对于包名,我觉得只是在应用程序的根文件夹(包括子目录)中查找并替换该字符串的所有出现是有问题的。

ant 有什么方法或命令可以做到这一点吗?

我在运行命令 ant release 时也遇到了问题。我转到我的根文件夹,运行命令,但出现错误。所以我不得不去 eclipse,清理项目并让它自动构建(没有生成 APK,因为当你尝试在设备上运行它时它会这样做)所以那时我的 bin 文件夹只包含文件夹:classes,dexedLibs 、res 和 Manifest.xml 文件。

然后我可以转到 CL 并运行 ant release。那么有什么办法可以从 CL 中完成所有这些操作吗?像 clean 和 build 这样的东西,这样我就可以在没有问题之后运行 ant release 命令了吗?

注意:对于查找和替换,我使用了一个名为 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'
}
}
}

什么都没有

最佳答案

The strings I need to change are: - The package name (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"
}
}
}
  • Some images (like icons, splash screen, ...) - some irrelevant string that are specific from the app.

您可以为构建类型(例如,src/debug/)或产品风格(例如,src/flavor1/)创建源集,并拥有资源的替换版本在他们中。这将处理您的图像,以及您的“无关字符串”(如果您将其定义为字符串资源)。

源集也可以包含 Java 代码,尽管这会逐渐变得更加复杂,因此我建议您改用字符串资源和替换资源。

关于android - 从命令行自定义构建 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23699821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com