android 6.0的坑

来源:互联网 发布:手机弹钢琴的软件 编辑:程序博客网 时间:2024/06/07 03:19
我写博客只是为了记录一下自己犯下的那些错,如果有人看到了不爽,请勿喷。

国庆节前,公司加班加点的要上线项目,我那一个劲的在加班啊,连想女神的时间都没有了,其实功能也不算多,一个用户资料的编辑上传,一个车辆档案的资料编辑上传,还有一个就是违章查询(目测这个现在都还有bug,oh my),既然是加班加点弄出来,未经过严格测试的东西,现在是怎样也就怎样了,关键是不要奔溃就行。然而,事情远远没有我想的那么简单喔,哎,它奔溃的,妈的,国庆节那天,公司的群都炸了,哪个手机在用某某功能的时候奔溃了,主管内心是奔溃的,他肯定说我是个坑货,但是我好冤,明明测试了很多手机都没有这个问题,为什么偏偏他就出问题了呢。

第一时间想到的肯定是手机的系统问题,问题集中出现在华为的新的手机,华为最近更新了系统,很多手机都更新到了android 6.0的版本,这有什么关系呢?

java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/com.odin.parkinglog-1/lib/arm/libmsc.so: has text relocations 这个是废了很多周折才打印出来的log,先不说这个周折是怎么地艰险,先说说这个错误的日志说得是什么东西。

(引用)问题出现原因:

这个问题出现在loadLibrary()的过程中. 在Android 6.0之前, text reloactions问题, 会在编译的过程中, 作为warning报出来, log大致如下:
[plain] view plain copy

    ActivityManager: WARNING: linker: libdvm.so has text relocations. This is wasting memory and is a security risk. Please fix  

在Android6.0中,原来的warning升级为error,因此6.0系统中运行程序会crash。

具体看: http://blog.csdn.net/jiahui_zhu/article/details/50234311

简单的说就是原来的warming 变成了 error ,所以低版本是不会有这个问题的,坑了个爹的。
解决的办法,上面也提到了,但是这个不是一般人能够handle的,如果不嫌弃,就听我的,把targetSdkVersion改成22吧,问题就这样解决了,后续还有啥问题,还不知道

除了上面的问题,再说说那个周折吧,问什么说这是个周折呢,也是因为android 6.0的原因,app上做了错误日志保存到本地的操作,测试的时候,手机都没问题,但是偏偏就是android 6.0的手机就有鬼,它就不打log ,为什么它这么贱。
open failed: EACCES (Permission denied)

根本原因是 ,安卓6.0 对权限做了改变,访问内存卡要做动态的询问用户,已经不是      多的我不说啦, 具体看 :http://www.jianshu.com/p/e1ab1a179fbb

混淆后 Unknown Source 这个是混淆之后遇到的问题,没有混淆的话,程序正常运行,混淆后就遇到了这个问题 ,我把他里面说到的需要添加的混淆代码加了进去就行了,所以,混淆的话,我只相信它 http://www.jianshu.com/p/2dc92f79d47d
0 0