运行应用程序时如何使AndroidStudio生成所有ABI?

时间:2018-12-06 16:21:45

标签: android android-studio android-ndk ndk-build

我有一个Android应用程序,该应用程序使用JNI库,并支持所有Android的ABI。

当我从AndroidStudio单击“运行”时,它只会构建针对设备默认ABI(仿真器上为x86_64或设备上为arm64-v8a)的库。

我想在启动时禁用此优化并构建所有ABI,我该怎么做?


上下文:

默认行为对于大多数应用程序来说都是有意义的,但是我的应用程序充当插件并被动态加载到其他应用程序中,其中某些应用程序仅是32位的-因此我需要在APK中嵌入多个ABI。

此外,作为单元测试的一部分,我捆绑了someapp-x86.apksomeapp-x86_64.apk等作为测试模块的资源,并自动将其安装并执行作为测试的一部分。

    def copyApkTask = task ("copy${testVariant.name.capitalize()}ApkAssets", type: Copy) {
        from tasks.getByPath(':someApp:packageArmeabi_v7aDebug')
        from tasks.getByPath(':someApp:packageArm64_v8aDebug')
        from tasks.getByPath(':someApp:packageX86Debug')
        from tasks.getByPath(':someApp:packageX86_64Debug')

        into assetTask.outputDir
        include '*.apk'
    }

这在独立运行gradle时可以很好地工作,但是从AndroidStudio失败并出现错误

  

无法为ABI构建:x86支持的ABI为:arm64-v8a


我一直试图找出答案,而我所能找到的只是 ExternalNativeBuildTask.java#321。不幸的是,这似乎来自gradle插件的旧版本。

0 个答案:

没有答案