如何使用Gradle实验插件对64位Android APK进行代码签名?

德龙兹

我正在使用支持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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Android Studio中使用Gradle实验插件0.2.0将静态库(.a文件)与APK链接

来自分类Dev

使用Windows代码签名证书进行KEXT代码签名

来自分类Dev

让他人使用我的私钥对APK进行签名-如何?

来自分类Dev

Android在发布的apk上运行代码Google签名

来自分类Dev

测试是否使用特定密钥对.apk文件进行签名

来自分类Dev

使用Windows加密存储中的凭据对APK进行签名?

来自分类Dev

如何通过命令行对Swift应用进行代码签名?

来自分类Dev

如何在OS X Mojave上对gdb进行代码签名?

来自分类Dev

如何使用自签名证书对Mac OS X内核扩展进行代码签名

来自分类Dev

Android生成签名APK

来自分类Dev

通过Azure android签名构建管道对其进行签名后的.apk文件输出在哪里?

来自分类Dev

如何验证签名的Android .apk?

来自分类Dev

我只有apk文件(没有源代码)如何签名和zip对齐?

来自分类Dev

我可以使用受信任的代码签名证书对Windows Store应用程序进行代码签名吗?

来自分类Dev

使用相同的软件包名称和密钥对apk进行签名

来自分类Dev

如何使用Xcode5在Mac应用程序中对签名的可执行文件进行代码签名

来自分类Dev

如何使用Xcode5在Mac应用程序中对签名的可执行文件进行代码签名

来自分类Dev

Android Studio(Gradle)未创建签名的APK

来自分类Dev

在哪里使用贝宝的凭据和签名到android代码中进行链式支付

来自分类Dev

生成签名的Android APK(Cordova)

来自分类Dev

生成签名 APK 的 Android 错误

来自分类Dev

如何使用insignia.exe对wix捆绑包进行代码签名

来自分类Dev

如何创建未签名的apk

来自分类Dev

捆绑JavaFX应用程序时,如何对可执行启动器进行代码签名?

来自分类Dev

如何对Windows 8 Store应用程序的XML文件进行代码签名

来自分类Dev

由于私钥过滤器,使用signtool进行代码签名失败

来自分类Dev

我应该使用哪种类型的证书对Windows桌面应用程序进行代码签名?

来自分类Dev

对使用fastlane和CocoaPods作为动态框架构建的应用进行代码签名

来自分类Dev

Bitrise尝试使用错误的配置文件对嵌入式框架进行代码签名

Related 相关文章

  1. 1

    如何在Android Studio中使用Gradle实验插件0.2.0将静态库(.a文件)与APK链接

  2. 2

    使用Windows代码签名证书进行KEXT代码签名

  3. 3

    让他人使用我的私钥对APK进行签名-如何?

  4. 4

    Android在发布的apk上运行代码Google签名

  5. 5

    测试是否使用特定密钥对.apk文件进行签名

  6. 6

    使用Windows加密存储中的凭据对APK进行签名?

  7. 7

    如何通过命令行对Swift应用进行代码签名?

  8. 8

    如何在OS X Mojave上对gdb进行代码签名?

  9. 9

    如何使用自签名证书对Mac OS X内核扩展进行代码签名

  10. 10

    Android生成签名APK

  11. 11

    通过Azure android签名构建管道对其进行签名后的.apk文件输出在哪里?

  12. 12

    如何验证签名的Android .apk?

  13. 13

    我只有apk文件(没有源代码)如何签名和zip对齐?

  14. 14

    我可以使用受信任的代码签名证书对Windows Store应用程序进行代码签名吗?

  15. 15

    使用相同的软件包名称和密钥对apk进行签名

  16. 16

    如何使用Xcode5在Mac应用程序中对签名的可执行文件进行代码签名

  17. 17

    如何使用Xcode5在Mac应用程序中对签名的可执行文件进行代码签名

  18. 18

    Android Studio(Gradle)未创建签名的APK

  19. 19

    在哪里使用贝宝的凭据和签名到android代码中进行链式支付

  20. 20

    生成签名的Android APK(Cordova)

  21. 21

    生成签名 APK 的 Android 错误

  22. 22

    如何使用insignia.exe对wix捆绑包进行代码签名

  23. 23

    如何创建未签名的apk

  24. 24

    捆绑JavaFX应用程序时,如何对可执行启动器进行代码签名?

  25. 25

    如何对Windows 8 Store应用程序的XML文件进行代码签名

  26. 26

    由于私钥过滤器,使用signtool进行代码签名失败

  27. 27

    我应该使用哪种类型的证书对Windows桌面应用程序进行代码签名?

  28. 28

    对使用fastlane和CocoaPods作为动态框架构建的应用进行代码签名

  29. 29

    Bitrise尝试使用错误的配置文件对嵌入式框架进行代码签名

热门标签

归档