我有一个Android应用程序,该应用程序使用JNI库,并支持所有Android的ABI。
当我从AndroidStudio单击“运行”时,它只会构建针对设备默认ABI(仿真器上为x86_64
或设备上为arm64-v8a
)的库。
我想在启动时禁用此优化并构建所有ABI,我该怎么做?
上下文:
默认行为对于大多数应用程序来说都是有意义的,但是我的应用程序充当插件并被动态加载到其他应用程序中,其中某些应用程序仅是32位的-因此我需要在APK中嵌入多个ABI。
此外,作为单元测试的一部分,我捆绑了someapp-x86.apk
,someapp-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插件的旧版本。