gradle + ndkbuild + android studio 2.2如何设置支持的ABI?

时间:2016-12-06 11:03:21

标签: android android-ndk arm abi

我想使用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-hardx86构建我的代码, 或者不要忽略APP_ABI中的Application.mk行?

我尝试这样的变种:

defaultConfig {
    ndk {
      abiFilters 'x86', 'armeabi-v7a-hard'
    }
}

gradle因此消息失败:

  

ABIs [armeabi-v7a-hard]不适用于平台,并且将是   不包括在建筑和包装中。可用的ABI是[armeabi,   armeabi-v7a,arm64-v8a,x86,x86_64,mips,mips64]。

请注意,我使用的是ndk 10,而不是最后一个(ndk 13),其中armeabi-v7a-hardndk.dir中的local.properties正确值。

1 个答案:

答案 0 :(得分:1)

@Titan提供的链接是设置ABI所需的全部。

之所以可能无法正常工作,是因为armeabi-v7a-hard在2015年已弃用,因此针对此目标会导致此问题。您应该按照此this post

定位armeabi-v7a