Android,遇到的错误

1

java.lang.UnsatisfiedLinkError: dlopen failed: library "libsqlite.so" not found

原因是7.0以后,Andorid不允许直接访问系统的私有so文件了。
1 把targetSdkVersion改小于24。
2 apk中带上需要的so文件,这儿是libsqlite.so
  1. 下载附件中的so文件,放到对应的文件夹下,如libs/armv7-abi/libsqlite.so,并注意你的gradle是否引用了这个目录,如 jniLibs.srcDirs = ['libs']
  2. 编译测试。
  3. 通过Android Studio的Analyze APK功能[Build -> Analyze APK...], 或直接解开apk包,查看是apk的lib目录下是否已包含libsqlite.so文件
如果还是有问题看以下:

//Java.lang.UnsatisfiedLinkError: dlopen failed: “liblame.so” is 32-bit instead of 64-bit错误
//如果系统先使用64bit的库文件时,则后续的库文件都是以64bit来加载执行,故会出现此问题。
//如果使用本地库文件的话,则会根据相应的架构abi来选择是32bit还是64bit。
//无法确定系统应用使用哪种架构abi,故在64bit模式下运行。
//系统会从lib目录下的(armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips64, mips)文件夹中查找本地库文件,不同的架构加载不同的文件夹下的库文件
//64bit的架构从arm64-v8a、x86_64、mips64这些目录中加载,如果你的arm64-v8a文件夹下刚好有这个需要使用到的库文件,则不会从其他文件夹如armeabi加载该库文件
//过滤掉64bit的库文件,全部使用32bit的库文件 加入以下方法 在app:Module中的 defaultConfig {}中
ndk {
abiFilters "armeabi" , "armeabi-v7a" , "x86" , "mips"
}


2

AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

必须添加FLAG_ACTIVITY_NEW_TASK

 直接调用Context类的startActivity; 这种启动的Activity没有栈 不能通过standard方式启动


3

在开发过程中,有的时候引入了多个三方库.在调用的时候会出现版本对应不上的原因.就会出现如标题的异常.解决的办法就是在你的build.gradle里面加入如下代码块:
configurations. all {
resolutionStrategy. eachDependency {
DependencyResolveDetails details ->
def requested = details. requested
if (requested. group == 'com.android.support' ) {
if (! requested. name. startsWith( "multidex" )) {
details. useVersion '24.1.0' } } }}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值