PackageManager分析(3)
来源:互联网 发布:数据维护需要学什么 编辑:程序博客网 时间:2024/04/29 23:07
Installer类分析。
1.Installer这个是PackageManager与底层C模块进行通信的工具类,同socket进行通信,PackageManager所有对apk的安装,卸载等操作都是通过Installer进行的。
2.对Installer的调用首先会调用ping()来判断socket是否已经连接。
3.连接方法:connect()。
mSocket = new LocalSocket();
LocalSocketAddress address = new LocalSocketAddress(
"installd", LocalSocketAddress.Namespace.RESERVED);
mSocket.connect(address);
连接socket文件installd。
4.断开方法:disconnect()。
if (mSocket != null) {
mSocket.close();
}
5.对socket文件的读写工具方法:
readBytes(byte buffer[], int len);
readReply();
writeCommand(String _cmd);
这些方法都是对socket文件进行读写,比如将命令写入socket文件,读取返回信息。
6.执行命令的方法:execute(String cmd);
private int execute(String cmd) {
String res = transaction(cmd);
try {
return Integer.parseInt(res);
} catch (NumberFormatException ex) {
return -1;
}
}
执行cmd的命令字符串。
7.transaction(String cmd);
transaction首先会判断连接,如果socket连接正常,就将cmd命令写入socket文件,并且接收返回信息,并且返回给execute。
8.对apk进行操作的方法一共有如下几个:
(1)install(String name, int uid, int gid);
安装apk
(2)dexopt(String apkPath, int uid, boolean isPublic);
优化dex文件
(3)movedex(String srcPath, String dstPath);
移动dex文件
(4)rmdex(String codePath);
删除dex文件
(5)remove(String name);
移动apk
(6)rename(String oldname, String newname);
重命名
(7)deleteCacheFiles(String name);
删除cache文件
(8)clearUserData(String name);
删除user data
(9)freeCache(long freeStorageSize);
释放cache空间
(10)setForwardLockPerm(String packagePathSuffix, int gid)
为apk文件增加前缀
(11)getSizeInfo(String pkgName, String apkPath, String fwdLockApkPath, PackageStats pStats)
获取apk信息
(12) moveFiles();
移动文件。
1.Installer这个是PackageManager与底层C模块进行通信的工具类,同socket进行通信,PackageManager所有对apk的安装,卸载等操作都是通过Installer进行的。
2.对Installer的调用首先会调用ping()来判断socket是否已经连接。
3.连接方法:connect()。
mSocket = new LocalSocket();
LocalSocketAddress address = new LocalSocketAddress(
"installd", LocalSocketAddress.Namespace.RESERVED);
mSocket.connect(address);
连接socket文件installd。
4.断开方法:disconnect()。
if (mSocket != null) {
mSocket.close();
}
5.对socket文件的读写工具方法:
readBytes(byte buffer[], int len);
readReply();
writeCommand(String _cmd);
这些方法都是对socket文件进行读写,比如将命令写入socket文件,读取返回信息。
6.执行命令的方法:execute(String cmd);
private int execute(String cmd) {
String res = transaction(cmd);
try {
return Integer.parseInt(res);
} catch (NumberFormatException ex) {
return -1;
}
}
执行cmd的命令字符串。
7.transaction(String cmd);
transaction首先会判断连接,如果socket连接正常,就将cmd命令写入socket文件,并且接收返回信息,并且返回给execute。
8.对apk进行操作的方法一共有如下几个:
(1)install(String name, int uid, int gid);
安装apk
(2)dexopt(String apkPath, int uid, boolean isPublic);
优化dex文件
(3)movedex(String srcPath, String dstPath);
移动dex文件
(4)rmdex(String codePath);
删除dex文件
(5)remove(String name);
移动apk
(6)rename(String oldname, String newname);
重命名
(7)deleteCacheFiles(String name);
删除cache文件
(8)clearUserData(String name);
删除user data
(9)freeCache(long freeStorageSize);
释放cache空间
(10)setForwardLockPerm(String packagePathSuffix, int gid)
为apk文件增加前缀
(11)getSizeInfo(String pkgName, String apkPath, String fwdLockApkPath, PackageStats pStats)
获取apk信息
(12) moveFiles();
移动文件。
- PackageManager分析(3)
- PackageManager分析(1)
- PackageManager分析(2)
- PackageManager 分析(1)
- Android Framework 分析---3PackageManager 分析
- PackageManager分析(4)
- PackageManager分析(5)
- android中的packagemanager分析
- Android Framework --- PackageManager 分析
- packageManager
- PackageManager
- PackageManager
- PackageManager
- PackageManager
- PackageManager(管理应用程序包)
- Android源码之“应用程序界面“分析二(PackageManager和PackageManagerService)
- Android近期任务列表 Recent Applicatoins 分析 + Android PackageManager
- [gitbook] Android框架分析系列之Android PackageManager
- JNI 的使用
- POJ 3253 Fence Repair 哈夫曼树/优先级队列
- PackageManager分析(2)
- BT技术概念 — 一些术语的意思
- zoj 2851 Code Formatter
- PackageManager分析(3)
- 为Eclipse指定Java VM
- Android 性能优化的一些方法(2)
- 自我时间管理:一分钟先生
- wc
- 周总结
- Android-BluetoothSocket建立有关蓝牙通讯的套接字
- OGRE碰撞检测MOC
- win7 remote to ubuntu 10.10 via (rdp +vnc)