【Android增量升级系列_03】 增量更新项目中遇到的一些异常
2013-12-31 22:07
519 查看
异常1:Caused by: java.lang.UnsatisfiedLinkError: Couldn't load Patcher: findLibrary returned null
问题描述:
(一):
1.装在手机上的时候正常
2.装在模拟器上,出面下面的异常,这是由于模拟器和手机可能不是同一个类型的CPU结构造成载入.so库文件失败造成的
(二):
载入.so时,把lib***.so
解决思路:
(一):
1.不同的ARM架构 lib下的 armeabi 改成 armeabi-v7a
2.如果是Intel Atom(x86) 需要把 lib下的 armeabi 改成 x86
(二):
备注:
lib下的 armeabi 文件夹名 改成 armeabi-v7a 或者 x86
armeabi和armeabi-v7a ,x86是表示cpu的类型。
异常2:java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
产生该问题原因:
1. 在线程中调用handler的sendMessage方法
2.AsyncTask中的doInBackground方法不可直接操作UI
解决方法:
在调用handler的方法前执行Looper.prepare()。Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建一个消息循环,调用Looper.loop()来使消息循环起作用
例:
因为activity的主线程是自己创建消息队列的,所以在Activity中新建Handler时,不需要先调用Looper.prepare()。
问题描述:
(一):
1.装在手机上的时候正常
2.装在模拟器上,出面下面的异常,这是由于模拟器和手机可能不是同一个类型的CPU结构造成载入.so库文件失败造成的
(二):
载入.so时,把lib***.so
public HelloJni extends Activity { static { System.loadLibrary("libhello-jni"); //这里出错System.loadLibrary("hello-jni") 才行 } .... }以上这两种都会造成载入library returned null 的异常
解决思路:
(一):
1.不同的ARM架构 lib下的 armeabi 改成 armeabi-v7a
2.如果是Intel Atom(x86) 需要把 lib下的 armeabi 改成 x86
(二):
public HelloJni extends Activity { static { System.loadLibrary("hello-jni"); //这里出错System.loadLibrary("hello-jni") 才行 } .... }
备注:
lib下的 armeabi 文件夹名 改成 armeabi-v7a 或者 x86
armeabi和armeabi-v7a ,x86是表示cpu的类型。
异常2:java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
产生该问题原因:
1. 在线程中调用handler的sendMessage方法
2.AsyncTask中的doInBackground方法不可直接操作UI
解决方法:
在调用handler的方法前执行Looper.prepare()。Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建一个消息循环,调用Looper.loop()来使消息循环起作用
例:
class LooperThread extends Thread{ <public Handler mHandler; public void run() { <Looper.prepare(); mHandler = new Handler() { public void handleMessage(Message msg) { // process incoming messages here } }; Looper.loop(); }
因为activity的主线程是自己创建消息队列的,所以在Activity中新建Handler时,不需要先调用Looper.prepare()。
相关文章推荐
- 【Android增量升级系列_02】 浅谈Android增量更新服务端的实现方法
- 【Android增量升级系列_01】 浅谈Android增量更新客户端的实现方法
- 【Android增量升级系列_01】 浅谈Android增量更新客户端的实现方法
- 【Android增量升级系列_01】 浅谈Android增量更新客户端的实现方法
- vs升级c++项目遇到的一些问题
- Android热更新开源项目Tinker源码解析系列之三:so热更新
- android 开发中遇到的一些小的知识点在此做一个记录(持续更新)
- 项目中遇到的一些问题或异常以及处理方法
- Android版本更新时对SQLite数据库升级或者降级遇到的问题
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
- [一般问题] android导入项目中遇到的一些问题及解决方法
- android中遇到的一些问题整理--不断更新中
- 增量升级(省流量更新)的Android客户端实现
- 对“Android应用的自动升级、更新模块的实现”的一些改进
- Android应用市场省流量更新(增量升级)原理解析
- [置顶] Android实现应用的增量更新\升级
- android bsdiff 增量升级更新 热补丁 hotpatch(一)
- Android studio导入项目后异常和 升级2.2 之后 Maven插件不能使用解决
- 一些比较好的Android 开源项目(不定期更新)
- 项目适配iOS9遇到的一些问题及解决办法(持续更新)