首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用保护功能之后,崩溃: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader

启用保护功能之后,崩溃: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader
EN

Stack Overflow用户
提问于 2018-08-27 07:43:30
回答 2查看 769关注 0票数 1
代码语言:javascript
复制
Process: com.online.bysmart, PID: 14766
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.online.bysmart-2/base.apk"],nativeLibraryDirectories=[/data/app/com.online.bysmart-2/lib/arm64, /system/lib64, /vendor/lib64]]] couldn't find "libmiio.so"

    at java.lang.Runtime.loadLibrary0(Runtime.java:984)
    at java.lang.System.loadLibrary(System.java:1530)
    at com.xiaomi.miio.JNIBridge.<clinit>(JNIBridge.java:6)
    at com.xiaomi.miio.JNIBridge.hencrypt(Native Method)
    at com.xiaomi.miio.MiioLocalAPI.get_token(MiioLocalAPI.java:779)
    at com.xiaomi.miio.MiioLocalAPI$13.run(MiioLocalAPI.java:761)
    at java.lang.Thread.run(Thread.java:760)

========================================================================= 在我的应用程序build.gradle文件中注释:

代码语言:javascript
复制
dependencies {    
    compile fileTree(include:['*.jar'], dir: 'libs')
    compile files('libs/miio.jar')
    ...
}

splits {
    abi {
        enable true
        reset()
        include 'armeabi' ,'armeabi-v7a','arm64-v8a', 'x86'
        universalApk false
    }
}

sourceSets {
    main {
        jni.srcDirs = []
        jniLibs.srcDirs = ['libs']
    }
}

buildTypes {
    release {
        minifyEnabled true
        zipAlignEnabled true
        shrinkResources false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
}

根目录文件中的=========================================================================

代码语言:javascript
复制
--libs
    --arm64-v8a//folder name
        --libmiio.so//file
    --miio.jar//file

========================================================================= In pro卫士规则.proguard:

代码语言:javascript
复制
 -dontwarn com.xiaomi.**
 -keep class com.xiaomi.**{*;}
 -keep interface com.xiaomi.** { *;}
EN

回答 2

Stack Overflow用户

发布于 2018-08-27 08:03:09

这些天我在网上搜索,终于找到了解决办法!如果您正在使用Android,只需编辑根文件夹中的gradle.properties并添加android.useDeprecatedNdk=true即可。然后编辑应用程序文件夹中的build.gradle文件,将abiFilters设置如下:

代码语言:javascript
复制
android {
....
defaultConfig {
    ....
    ndk {
        abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
    }
}

}

有关更多信息,您可以在堆栈溢出上看到如何在64位Android设备上使用32位本机libaries如何在64位Android-L平台上使用32位本机库

您也可以检查这个帖子

票数 0
EN

Stack Overflow用户

发布于 2018-08-28 06:17:23

由于我的应用程序build.gradle配置,找到了根本原因:

代码语言:javascript
复制
splits {
    abi {
        enable true
        reset()
        include 'armeabi' ,'armeabi-v7a','arm64-v8a'
        universalApk false
    }
}

但是在我的libs文件夹中,我不配置armeabi文件夹

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52034768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档