gradle + ndkbuild + android studio 2.2 如何设置支持的 ABI?
Posted
技术标签:
【中文标题】gradle + ndkbuild + android studio 2.2 如何设置支持的 ABI?【英文标题】:gradle + ndkbuild + android studio 2.2 how to set supported ABIs? 【发布时间】:2017-04-20 23:58:36 【问题描述】:我想使用 android studio 与 ndkbuild 的集成。
我的项目“原生”部分仅为 armeabi-v7a-hard 和 x86 构建,
如果我只是在 jni 目录中运行 ndk-build
,那么一切正常。
我在Application.mk
中有适当的台词:
APP_ABI := armeabi-v7a-hard x86
为了将项目集成到android studio中,我将这些行添加到build.gradle
:
externalNativeBuild
ndkBuild
path 'src/lib/jni/Android.mk'
但由于某种原因,gradle build
尝试使用 APP_ABI=armeabi
构建本机代码并失败,因为我的代码只能使用 armeabi-v7a-hard
构建。
那么我怎样才能告诉 gradle 只为 armeabi-v7a-hard
和 x86
构建我的代码,
或者只是不忽略来自Application.mk
的APP_ABI
行?
我尝试了这样的变体:
defaultConfig
ndk
abiFilters 'x86', 'armeabi-v7a-hard'
但是gradle
失败并显示这样的消息:
ABI [armeabi-v7a-hard] 不适用于平台,将 排除在建筑和包装之外。可用的 ABI 是 [armeabi, armeabi-v7a、arm64-v8a、x86、x86_64、mips、mips64]。
请注意,我使用的是 ndk 10,而不是最后一个 (ndk 13),其中 armeabi-v7a-hard
和 ndk.dir
在 local.properties
中的正确值。
【问题讨论】:
***.com/a/35275134/3290339 【参考方案1】:@Titan 提供的链接是设置 ABI 所需的全部内容。
它可能无法正常工作的原因是因为 armeabi-v7a-hard
在 2015 年已被弃用,因此定位它会导致此问题。你应该按照这个this post定位armeabi-v7a
【讨论】:
以上是关于gradle + ndkbuild + android studio 2.2 如何设置支持的 ABI?的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件ProductFlavor 配置 ( ProductFlavor#externalNativeBuild配置 | cmake 配置 | ndkBuild 配置 )