我想创建第二个构建类型,它应该与现有的调试类型完全相同。目前我有两种构建类型:调试和发布。可以通过单击运行调试版本,并使用调试密钥库自动签名。
我通过Build -> Generate signed APK
向导手动编译发布版本。
因此,为了克隆调试构建类型,我首先添加了第二个构建类型,名为" local"到app build.graddle文件:
buildTypes {
...
debug {
debuggable true
minifyEnabled false
}
local {
debuggable true
minifyEnabled false
}
}
然后我创建了app/src/local/res
并添加了一些文件。
然后我执行gradle resync并在左侧选项卡中选择新的构建类型:
最后我点击了运行按钮,我希望它能正常工作。这个IntelliJ help article表示调试签名配置是默认配置:
这意味着如果您没有手动配置工件 在“运行/调试配置”中选择“部署默认APK”选项: 在Android应用程序对话框中,IntelliJ IDEA将使用预定义的 生成的
的证书中的值
而是显示此对话框:
当我单击修复按钮时,它会打开整个应用程序模块的签名配置对话框。但是,我不想签署这个apk用于发布,我需要使用调试证书进行签名。另外我注意到已经创建了一个新的assembleLocal
gradle任务,但它生成了一个未对齐的apk。在这个文件夹中,我可以看到常规调试apks在未对齐版本和最终版本中正确生成。
我如何才能克隆调试版本类型?
答案 0 :(得分:27)
您可以在build.gradle
文件中指定哪个signingConfig
应与buildType
一起使用。
要使用与默认调试signingConfig
相同的buildType
进行签名,请使用以下命令:
buildTypes {
local {
signingConfig signingConfigs.debug
}
/* NOTE: the debug block is not required because it is a default
* buildType configuration; all of its settings are defined implicitly
* by Android Studio behind the scenes.
*/
}
如果您更喜欢使用本地系统上的自定义密钥库,请改用以下代码:
signingConfigs {
local {
storeFile file("/path/to/custom.keystore")
storePassword "password"
keyAlias "MyLocalKey"
keyPassword "password"
}
}
buildTypes {
local {
signingConfig signingConfigs.local
}
}
答案 1 :(得分:25)
此外,您可以使用以下命令使您的Build类型类似于debug:
initWith(buildTypes.debug)
以下是一个例子:
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://theidasworld.com"'
}
debug {
versionName 'APP BETA'
buildConfigField "Integer", "PIN", "0000"
buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://debug.theidasworld.com"'
}
inspection {
initWith(buildTypes.debug) // keep versionName and PIN from 'debug'
buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://inspection.theidasworld.com"'
}
}
...
答案 2 :(得分:1)
其他方式可能是使用口味。
示例:
producFlavors{
app1{}
app2{}
}