文章目录

  • 一、报错信息
  • 二、解决方案 ( 指定 APK 打包动态库的 CPU 架构 )

一、报错信息


外部引用 so 动态库 , 如果只有一个 armeabi-v7a 的动态库 , 那么如果在 arm64 的手机上执行 , 就会报如下出错误 ;

2021-04-25 10:06:47.317 13637-13688/kim.hsl.webp E/libc: Access denied finding property "vendor.debug.egl.profiler"
2021-04-25 10:06:47.331 13637-13637/? E/AndroidRuntime: FATAL EXCEPTION: mainProcess: kim.hsl.webp, PID: 13637java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/kim.hsl.webp-BVtfbEbSAp4Nev90KIUIGg==/base.apk"],nativeLibraryDirectories=[/data/app/kim.hsl.webp-BVtfbEbSAp4Nev90KIUIGg==/lib/arm64, /system/lib64]]] couldn't find "libwebp.so"at java.lang.Runtime.loadLibrary0(Runtime.java:1012)at java.lang.System.loadLibrary(System.java:1669)at kim.hsl.webp.MainActivity.<clinit>(MainActivity.kt:17)at java.lang.Class.newInstance(Native Method)at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69)at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45)at android.app.Instrumentation.newActivity(Instrumentation.java:1215)at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2869)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)at android.os.Handler.dispatchMessage(Handler.java:106)at android.os.Looper.loop(Looper.java:193)at android.app.ActivityThread.main(ActivityThread.java:6718)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

二、解决方案 ( 指定 APK 打包动态库的 CPU 架构 )


上述报错在低版本的 Gradle 插件 和 Gradle 中可以自动兼容 , 不需要进行额外设置 ;

在如下配置中 , 只有一个 armeabi-v7a 的动态库 , 系统会自动兼容配置 , 运行时如果在 arm64 的手机上会自动向下兼容使用 armeabi-v7a 的动态库 ;

如果在高版本的 Gradle 插件与 Gradle 中 , 如下配置 , 就会报上述错误 ;

这时就需要指定 APK 打包动态库的 CPU 架构 , 在 Module 下的 build.gradle 构建脚本中 , 进行如下设置 ;

android {defaultConfig {//配置 APK 打包 哪些动态库//  示例 : 如在工程中集成了第三方库 , 其提供了 arm, x86, mips 等指令集的动态库//        那么为了控制打包后的应用大小, 可以选择性打包一些库 , 此处就是进行该配置ndk{// 打包生成的 APK 文件指挥包含 ARM 指令集的动态库abiFilters "armeabi-v7a" /*, "arm64-v8a", "x86", "x86_64"*/}}
}

完整配置文件 :

plugins {id 'com.android.application'id 'kotlin-android'
}android {compileSdkVersion 30buildToolsVersion "30.0.3"defaultConfig {applicationId "kim.hsl.webp"minSdkVersion 14targetSdkVersion 30versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"//配置 APK 打包 哪些动态库//  示例 : 如在工程中集成了第三方库 , 其提供了 arm, x86, mips 等指令集的动态库//        那么为了控制打包后的应用大小, 可以选择性打包一些库 , 此处就是进行该配置ndk{// 打包生成的 APK 文件指挥包含 ARM 指令集的动态库abiFilters "armeabi-v7a" /*, "arm64-v8a", "x86", "x86_64"*/}}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}kotlinOptions {jvmTarget = '1.8'}}dependencies {implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"implementation 'androidx.core:core-ktx:1.3.2'implementation 'androidx.appcompat:appcompat:1.2.0'implementation 'com.google.android.material:material:1.3.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.4'implementation files('libs\\libwebp.jar')testImplementation 'junit:junit:4.+'androidTestImplementation 'androidx.test.ext:junit:1.1.2'androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

【错误记录】Android Studio 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态库的 CPU 架构 )相关推荐

  1. 【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )

    文章目录 一.报错信息 二.解决方案 ( Android Studio 配置外部 so 动态库两种方法 ) 1.jniLibs 目录存放 2.libs 目录存放 一.报错信息 外部引用 so 动态库 ...

  2. android内置第三方APP为系统应用,第三方APP内置到/system/app目录下报错java.lang.UnsatisfiedLinkError,so文件不加载

    项目场景: 在无系统签名的情况下,将第三方APP内置到/system/app目录下,可以将第三方应用变为系统应用,用户无法直接卸载.不过前提是手机需要root. 问题描述 使用es文件管理工具将第三方 ...

  3. 【错误记录】NDK 报错 java.lang.UnsatisfiedLinkError 的一种处理方案 ( 主应用与依赖库 Module 的 CPU 架构配置不匹配导致 )

    文章目录 一.问题描述 二.问题排查 三.解决方案 一.问题描述 NDK 开发 , 在调用 JNI 对应 Java 类时 , 静态代码块中 System.loadLibrary 语句调用时 , 报如下 ...

  4. java 导入包报错_Intellij IDEA 导入个推jar包 报错java.lang.NoClassDefFoundError

    Intellij IDEA使用的是Gradle,发现个推服务器SDK没有Gradle的导入方式,不会用Maven,只好选择jar包方式导入 却遇到了一个坑. 想通过导入jar包方式使用个推的SDK,直 ...

  5. Android Studio 升级 gradle:3.6.0 报错:Entry name 'xxx-xxx.xml' collided

    Android Studio 升级 gradle:3.6.0 报错:Entry name 'xxx-xxx.xml' collided 删除掉目录中所有的build文件夹,重新Sync编译

  6. Android Studio Arctic Fox 新版本不能 allprojects 报错问题

    最近升级到Android Studio Arctic Fox 2020.3.1 Patch版本,发现这个问题,一些第三方库没有引用成, 原因:之前的项目build.gradle文件配置里面的allpr ...

  7. Android Studio导入外部资源的三种方式

    在Android Studio打开导入外资源的路径:File->Project Structure- 第一步:选择Dependencies 第二步:选择要添加依赖的modules 第三步:为mo ...

  8. 【错误记录】Android Studio 编译时 Kotlin 代码编译报错 ( Not enough information to infer type variable T )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 Kotlin 代码中调用 findViewById(R.id.button) 代码 , 编译时报如下错误信息 : Not enough info ...

  9. 【错误记录】Android Studio 编译时 Kotlin 代码编译报错 ( 升级支持库时处理 @NonNull 参数 )

    文章目录 一.报错信息 二.报错分析 三.解决方案 一.报错信息 最近处理支持库 , 将所有的支持库都升级到了 28.0.028.0.028.0.0 ; implementation 'com.and ...

最新文章

  1. MySQL存储过程和函数示例
  2. 软件架构设计_给非专业人士介绍——软件架构设计工作
  3. Linux常用命令全名
  4. 在非主线程中创建窗口
  5. Java正则表达式获取网页所有网址和链接文字
  6. 采用计算机发布调度命令时 必须严格遵守,实用文档其他之铁路调度命令格式图片调度命令规范格式...
  7. 重置Oracle密码
  8. Coremail邮件系统存在配置信息泄露漏洞(CNVD-2019-16798)
  9. Spring IoC,Spring Bean示例教程
  10. 「洛谷3469」「POI2008」BLO-Blockade【Tarjan求割点】
  11. python安装time模块_Python之路-Python常用模块-time模块
  12. Transformer-based模型的综述:AMMUS : A Survey of Transformer-based Pretrained Models in NLP
  13. 曲苑杂坛--清除维护计划产生的日志文件
  14. redis 入门+掌握
  15. 基于CLIP实现以文精准搜图
  16. 视频消重软件百度云 小视频修改md5
  17. redux和react-redux
  18. 微信小程序相关知识点和云音乐项目制作遇到的问题及解决
  19. (读书笔记)大数据分析计算机基础
  20. 2022-2028全球与中国家用电器换向器市场现状及未来发展趋势

热门文章

  1. cisco网络故障处理手册
  2. VMM2012应用指南之2- 准备VMM2012虚拟机
  3. cisco pix防火墙命令使用
  4. ebtables安装和使用
  5. .Net Micro Framework研究—TCP/IP通信
  6. mysql查看数据库命令
  7. APP的UI测试要点
  8. jQuery美化select下拉框
  9. 每秒处理请求数和并发的关系
  10. 特征选择和特征生成问题初探