好久没写了,写个so库的load流程吧,记录一下蓝牙libbluetooth_jni.so 和 bluetooth.default.so的加载之旅。

按照Android的傻逼逻辑,都是从APP -> JNI -> Hardware, 所以整体逻辑都应该是 APP 加载 JNI, JNI里面加载Hardware,所以是有通用性的,本文就以Bluetooth为主线介绍。

这一小节,只写什么时候开始加载。

先看旅行开始的地方: packages/apps/Bluetooth/AndroidManifest.xml

76    77        android:name=".btservice.AdapterApp"78        android:icon="@mipmap/bt_share"79        android:persistent="false"80        android:label="@string/app_name"
26 public class AdapterApp extends Application {27    private static final String TAG = "BluetoothAdapterApp";28    private static final boolean DBG = false;29    //For Debugging only30    private static int sRefCount=0;3132    static {33        if (DBG) Log.d(TAG,"Loading JNI Library");34        System.loadLibrary("bluetooth_jni");35    }

看这个应该很清楚,application一来就静态加载libbluetooth_jni.so库。据我优秀的上层同事说,这个application只有在APK打开的时候才调用,也就是手机“设置”界面,“蓝牙”界面中点击了打开按钮之后,才会调用。

那么问题就来了,如果本地更新了libbluetooth_jni.so或则bluetooth.default.so库之后,是不需要重启手机的,只需要重启蓝牙就行了。重启蓝牙,就会重新加载jni,就会重新加载stack。

要是再有谁喊我重启手机来保证so库已经更新,我跟他急!

这一节,写完了,后面再看,具体怎么加载的。
88

更多相关文章

  1. Android(安卓)手机无法连接mac解决办法
  2. android外存储的状态
  3. Android手机蓝牙实现多人即时聊天
  4. 第七章 使用Intents与Phone Dialer——上
  5. 异步加载图片
  6. android的手机任务管理器,关键功能实现方法总结
  7. Android中一张图片加载后所占用内存大小的获取与测试
  8. 打造Android万能上拉下拉刷新框架--XRefreshView(三)
  9. Android插件技术——(一)动态加载jar

随机推荐

  1. SQL高级应用之使用SQL查询Excel表格数据
  2. 用sql语句实现分离和附加数据库的方法
  3. Cont()与Where().Count()有时性能差别如
  4. SQL2000 全文索引完全图解
  5. mssql insert into 和insert into select
  6. sql2005 存储过程分页示例代码
  7. SQL Server 服务器优化技巧浅谈
  8. sqlserver 自动备份所有数据库的SQL
  9. 得到自增列的下一个会插入的id
  10. 几个简单的基本的sql语句