如何使用Gradle实验插件对64位Android APK进行代码签名?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Gradle实验插件对64位Android APK进行代码签名?相关的知识,希望对你有一定的参考价值。
我正在使用开放框架(一种支持android的C ++框架)开发Android应用。它的Android项目使用Gradle实验性插件来支持C ++。 我已经能够获得这些文件来构建运行良好的APK [[未签名 APK(使用Android Studio 2.3.2、3.0、3.5或3.5.1,实验性Gradle插件0.9.3和Gradle发行版3.3 .0)。 但是现在我需要对它们进行代码签名并包括64位版本才能将它们发布到Android Store。
Gradle实验性插件始终需要为自己的每个版本使用特定的Gradle发行版。 current doc page for the plugin表示我们可以“在Android Studio 3.0或更高版本上继续使用实验性插件0.11.0”,但上述内容似乎在Android Studio 3.5和3.5.1中被我阻止了代码签名。[当我尝试使用最新版本的Android Studio(版本3.5或3.5.1)来“生成签名的APK”时,我被“需要4.1版本版本停止。”
当我尝试使用旧版本的Android Studio(2.3.2或3.0版)来“生成签名APK”时,我可以构建32位带代码签名的APK,但是我不知道如何构建64位APKs。
我发现的文档似乎不适用于我从Open Frameworks获得的Gradle文件。关于我尝试解决此问题的注意事项:(据我所知,Gradle插件版本与映射为in this table的Gradle发行版不同。)
我在任何地方都可以找到与Gradle实验插件0.11.0一起使用的Gradle
distribution版本的唯一来源是this answer to a related question。我问了答录者他们使用的是哪个版本的Android Studio,他们说的是3.1,但没有提及代码签名(我现在已经问过他们)。
看起来“ Android Gradle插件”版本始终与Android Studio版本相同,所以似乎没有办法在Android Studio 3.5.1上运行Android Gradle插件3.0版本,对吗?
>因此,基于以上,我尝试了:使用Gradle发行版3.3.0的带有实验性Gradle 0.9.3的Android Studio(因此也具有Gradle插件版本)2.3.2(共同设计32位APK-不知道如何做64位)
使用Gradle发行版3.3.0的带有实验性Gradle 0.9.3的Android Studio(因此也具有Gradle插件版本)3.0.0(共同设计32位APK-不知道如何做64位)
使用Gradle发行版4.1.0的带有实验性Gradle 0.11.0的Android Studio(以及相应的Gradle插件版本)3.0.0-我收到了Gradle错误:
*Gradle sync failed: Exception thrown while executing model rule: BaseComponentModelPlugin.Rules#createVariantData(ModelMap<AndroidBinaryInternal>, ModelMap<AndroidComponentSpec>, TaskManager) > afterEach()
Consult IDE log for more details (Help | Show Log) (21s 58ms)*
[我找到了有关如何使用Gradle HERE创建64位签名APK的假定文档,但是建议用于列出ABI过滤器的格式:
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
导致错误,Open Frameworks的项目build.gradle试图包含所有ABI,如build.gradle底部附近的android.productFlavors部分所示,如下所示:
def ofRoot(){ return '../../../' }
// Load common functions
apply from: ofRoot()+"libs/openFrameworksCompiled/project/android/common-functions.gradle"
buildscript {
apply from: "../../../libs/openFrameworksCompiled/project/android/ndk-verify.gradle"
repositories {
jcenter()
}
dependencies {
// Using the gradle-experimental version that supports c++
classpath 'com.android.tools.build:gradle-experimental:0.9.3'
}
}
allprojects {
repositories {
jcenter()
}
}
apply plugin: 'com.android.model.application'
model {
android {
// openFrameworks currently only supports compiling against SDK 19
compileSdkVersion = 23
buildToolsVersion = "25.0.3"
defaultConfig.with {
minSdkVersion.apiLevel = 23
targetSdkVersion.apiLevel = 28
versionCode = 4
versionName = "0.1.1"
}
}
android.ndk {
moduleName = ofAppModuleName()
toolchain = buildToolchain()
stl = compilerStl()
platformVersion = "21"
}
android.sources {
main {
jni {
source {
srcDirs= appSrcDirs(ofRoot())
includes = srcIncludes(ofRoot())
excludes = srcExcludes(ofRoot())
}
// Link to openFrameworks
dependencies {
project ":openFrameworksProject" linkage "static"
}
}
manifest {
source {
srcDirs = [ "." ]
}
}
res {
source {
srcDirs = [ "res" ]
}
}
java {
source {
srcDirs = [ "srcJava" ]
}
}
aidl {
source{
srcDirs = ['srcJava']
}
}
renderscript{
source{
srcDirs = ['srcJava']
}
}
jniLibs {
source {
srcDirs = ['libs']
}
}
assets {
source {
srcDirs = ['bin/data'] + addonData(ofRoot())
}
}
}
}
android.lintOptions {
abortOnError = false
}
android.buildTypes {
release {
minifyEnabled = false
}
}
// Setup the different types of flavors (arm / x86),
// and add linker flags based on that
android.productFlavors {
getAbis().each { abi ->
create(getFlavorName(abi)) {
ndk {
abiFilters.add(abi)
cppFlags.addAll(coreCppFlags(abi, ofRoot()))
cppFlags.addAll(addonCppFlags(abi, ofRoot()))
ldLibs.addAll(coreLdLibs(abi, ofRoot()))
ldLibs.addAll(addonLdLibs(abi, ofRoot()))
ldFlags.addAll(coreLdFlags(abi, ofRoot()))
ldFlags.addAll(addonLdFlags(abi, ofRoot()))
}
}
}
}
}
dependencies {
addonJavaDependencies(ofRoot()).each { dep ->
compile(project(path: dep[1] ))
}
compile project(path: ':ofAndroidLib')
}
但是这在codesign APK向导中仅产生32位Arm和386 ABI选项。
任何人都可以告诉我如何使用Android Studio(任何版本)为实验性插件构建经过代码签名的64位APK吗?
我正在使用开放框架(一种支持Android的C ++框架)开发Android应用。它的Android项目使用Gradle实验性插件来支持C ++。我已经能够将它们获取到...以上是关于如何使用Gradle实验插件对64位Android APK进行代码签名?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Android Gradle 插件 0.7 配置 NDK
Android Gradle 插件组件化中的 Gradle 构建脚本实现 ② ( 组件化基本实现 | Project 相关目录 | 定义组件切换标志位 | 切换插件导入 | 切换设置应用 ID )