android studio 加载so文件各种错误

在Android Studio中遇到加载SO文件错误,如UnsatisfiedLinkError和找不到库的问题。解决方法包括确保SO文件放置在jniLibs下,并根据设备平台(如armeabi, armeabi-v7a, x86等)放置对应版本。对于Genymotion模拟器,可能需要安装ARM Translation插件,不同版本的Genymotion需要对应版本的插件,通过CMD执行补丁脚本并重启模拟器。" 136125651,13871089,osgdb_pic编译教程:跨平台Qt+OSG/osgEarth,"['osg编译', 'osgEarth编译', '图像格式', '软件开发', '跨平台开发', 'Qt框架']

错误一:  Caused by: java.lang.UnsatisfiedLinkError: Couldn't load mad: findLibrary returned null

网上很多例子都不太全,发现一个问题搞了半天

如果在build.gradle配置如下
sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}在src/main下建立jniLibs文件夹是不会打包lib的,也不会再工程右侧显示正取导入到工程中,去掉上面配置



在build.gradle文件中添加
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}
调用代码如下:
public class TestJNI {
    static {        // 加载动态库
        System.out.println("start load lib");
       System.loadLibrary("app");
        System.out.println("end load lib");
    }
    public static native String Hellowold();
    public native int AddInteger(int a, int b);
错误二:java.lang.UnsatisfiedLinkError: Couldn't load mad from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.ajis.jnidemo.loadsolibrarydemo-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.ajis.jnidemo.loadsolibrarydemo-2, /vendor/lib, /system/lib]]]: findLibrary returned null
        at java.lang.Runtime.load

 

还是因为没有找到so文件,jiniLibs下有几个文件,分别放置x86,64为等需要lib,有时只在一个目录不一定能找到,因为你没有看现在时什么平台,慢慢删除加载尝试。一直摸索……

还有一个armeabi通用文件夹,一般情况放这里可以。so文件一定要放在jniLibs下,不是放在libs下。

 

错误三:在Genymotion 上Library '/system/lib/libhoudini.so' not found

问题三解决方法:

去下载插件

把genymotion arm translation拖进genymotion模拟器里
    5.x的使用方法
    使用方法:
    在 Genymotion 里面建立 5.0 or 5.1 的模拟器。
    开机后把 ARM_Translation_lollipop.zip
    (请勿解压)拖到模拟器中,自动安装。
    先不要重启模拟器,打开CMD命令行,输入adb shell /system/etc/houdini_patcher.sh
    完成后重启模拟器。
    5.0以下的使用方法
    在 Genymotion 里面建立4.x的模拟器。
    开机后把Genymotion-ARM-Translation
    或者Genymotion-ARM-Translation_v1.1
    (请勿解压)拖到模拟器中,自动安装。
    完成后重启模拟器。

地址 http://www.pc6.com/softview/SoftView_509493.html

接着又出现问题四:

201 - /data/data/com.example.ajis.jnidemo.loadsolibrarydemo/lib/libmad.so is not a valid ELF object!

弄了半天还是问题三没安装好,一定要对应版本安装。

通关 继续砌墙

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值