1. 区分abd命令和Android的shell命令,如 pull/push命令是abd中的命令,很容易用在shell中。
2. shell中的几个常用命令:
su:获得超级用户权限;
chmod:文件权限的修改,对文件进行操作时先看清权限。
3. init.rc文件:
4. 属性服务:
5. ADB进程:
6. 服务管理器ServiceManager:
7. 进程间通信Binder机制(类似与Linux中ICP的概念):
8. Ashmem(类似与malloc):
9. AID和UID:
10.临时Root和永久Root
3.Android中常见的文件目录:
shell中的所有命令在system/bin目录下
init.rc在根目录下
静默安装:
1.安装方式:
a.系统应用安装:开机时完成,需要加入开机执行的脚本,没有安装界面
b.网络下载应用安装:通过系统market应用完成,没有安装界面
‘ c.ADB工具中进行安装:使用pm install命令,没有安装界面
d.第三方应用安装:通过APK文件安装,有界面,由PackageInstaller.apk应用处理安装及卸载过程的界面
2.安装流程及路径:
a./system/app:x系统自带的应用程序存放,Root权限才可更改
b./data/app:用户程序的安装目录,有删除权限。安装时把apk文件复制到此目录下
c./data/data:存放应用程序的数据
d./data/dalvik-cache:将apk中的dex文件安装到此目录下
3.安装过程:复制apk安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录下,并在data/data目录下创建对应的应用数据目录。
我们在应用程序中控制安装应用app,即PackageInstaller.apk,其实就是发送一个如下的intent,去调用PackageInstaller.apk进行安装:
<span style="white-space:pre"> </span>/*安装apk*/
<span style="white-space:pre"> </span>Intent intent=new Intent();
<span style="white-space:pre"> </span>intent.setAction(Intent.ACTION_VIEW);
<span style="white-space:pre"> </span>intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
<span style="white-space:pre"> </span>intent.setDataAndType(Uri.parse("file://"+fileName),"application/vnd.android.package-archive");
<span style="white-space:pre"> </span>context.startActivity(intent);
静默安装就是绕过
PackageInstaller.apk中的权限授予提示,继续完成安装步骤。有两种方式:
1.找到PackageInstaller.apk原码,跳过权限授予提示,直接调用后面的安装API即可完成安装。
2.使用pm install命令进行安装。
待续。。。。。