小编Mat*_*olz的帖子

Android NDK - 使用gradle支持multlib

我的问题是针对64位Android系统的原生Android开发.

我正在寻找一种方法,使用gradle构建系统在64位Android系统上配置32位编译本机库的支持.应用程序应使用的库仅作为32位版本提供.将这些库移植到64位是非常耗时且容易出错的.

因此,我想配置gradle来部署这些预先构建的32位二进制文​​件,并使用32位版本的Android应用程序.

当前配置导致以下错误:

 E/AndroidRuntime? FATAL EXCEPTION: main
    Process: <application_name>, PID: 2170
    java.lang.UnsatisfiedLinkError: 
dalvik.system.PathClassLoader
[DexPathList[[zip file "/data/app/<application_name>/base.apk"],
nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]] 
enter code here`couldn't find "libmynativelibrary.so"
    at java.lang.Runtime.loadLibrary(Runtime.java:366)
Run Code Online (Sandbox Code Playgroud)

好像PathClassLoader在错误的目录中看起来好像.我检查了提供的apk文件,它缺少库.libapk中没有文件夹.构建系统不会包含32位库.由于armv7这些库只有一个预建版本在app/src/main/jnilibs文件夹中.

我必须补充一点,这个设置适用于任何32位Android系统.我之前尝试过模拟器和物理设备.

如何使用gradle激活multiarch 32/64bit支持?或者如何使用Android Studio/gradle将32位应用程序部署到64位Android系统?

我在网上搜索了一个关于这个主题的链接,但它指的是旧的构建系统:https://source.android.com/source/64-bit-builds.html.我不知道如何采用描述来进行gradle.

我使用的是Android Studio(Build:141.1989493,2015年6月6日).该project/build.gradle是不变.该app/build.gradle文件如下所示:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "<application_name>"
        minSdkVersion 1
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), …
Run Code Online (Sandbox Code Playgroud)

android 32bit-64bit android-ndk android-studio android-gradle-plugin

9
推荐指数
1
解决办法
2619
查看次数