我正在使用支持Android的C ++框架Open Frameworks开发Android应用程序。它的Android项目使用Gradle实验性插件来支持C ++。我已经能够得到这些来构建运行良好的未签名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发行版。并且该插件的当前文档页面上说,我们可以“继续在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位的APK。我发现的文档似乎不适用于我从Open Frameworks获得的Gradle文件。
关于我尝试解决此问题的注意事项:
(据我所知,Gradle插件版本与此表中映射的Gradle发行版不同。)
我在任何地方都可以找到与Gradle Experiment插件0.11.0一起使用哪个版本的Gradle发行版的唯一来源,是对相关问题的答案。我问了答录者他们使用的是哪个版本的Android Studio,他们说的是3.1,但没有提及代码签名(我现在问过有关此问题的信息)。
看起来“ Android Gradle插件”版本始终与Android Studio版本相同,因此似乎无法通过Android Studio 3.5.1运行Android Gradle插件3.0版本,对吗?
因此,基于以上内容,我尝试了:
Android Studio(以及因此的Gradle插件版本)2.3.2,具有使用Gradle发行版3.3.0的实验性Gradle 0.9.3(共同设计32位APK-不知道如何执行64位)
Android Studio(以及因此的Gradle插件版本)3.0.0,带有使用Gradle发行版3.3.0的Experimented Gradle 0.9.3(共同设计32位APK-不知道如何执行64位)
Android Studio(以及因此的Gradle插件版本)3.0.0(使用Gradle发行版4.1.0的Experimented Gradle 0.11.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?
在开放框架论坛的帮助下,经过数天的反复敲击,我最终设法使其工作。它不仅涉及代码签名,还涉及使用支持64位版本的OpenFrameworks版本以及大量特定设置和步骤。
我关于最终可用的步骤,版本和设置的注释在此处:https : //forum.openframeworks.cc/t/notes-on-steps-i-took-to-successfully-get-a-64-bit-apk -发布到Google应用商店/ 33722
同时,如果有人对主题有任何其他有用的信息,请在此处的答案中分享。除了我的以外,我将悬赏最有用/最相关的答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句