1. Android架构图: 

 底层Linxu Kernel
 库层LIBRARY: (SQlite、opengl|es,surfece Manager) 和 Android Delvik Vritual Machine
 Application Framenwork: Activity Manager \ WiFi Manager\ Location Manager....
 Applicaton : 游戏 、应用

 2. Android目录结构

 2.1.  data 目录

/data/data       安装应用内部存储位置
/data/app        用户级别应用安装,apk原包路径
/data/anr        apk anr崩溃详细信息
/data/local/tmp  临时文件路径
/data/system/ 2个文件 相当于windows注册表
  系统应用在: system/app下
packages.list  相当于windows下的注册表这2个文件
 com.android.smoketest 10058 0 /data/data/com.android.smoketest default none
    包名    用户id   0 内部空间路径 
    packages.xml    
    权限
    包名,代码路径,native库路径,权限列表

</package>
     <package name="com.android.providers.telephony" codePath="/system/priv-app/TelephonyProvider" nativeLibraryPath="/system/priv-app/TelephonyProvider/lib" publicFlags="805846533" privateFlags="8" ft="162d9f6e478" it="162d9f6e478" ut="162d9f6e478" version="23" sharedUserId="1001">
         <sigs count="1">
             <cert index="1" key="308204a830820390a003020102020900b3998086d056cffa300d" />
         </sigs>
         <perms>
             <item name="android.permission.WRITE_SETTINGS" granted="true" flags="0" />
             </item>
         </perms>
     </package>
   </package>

 2.2.  /dev 设备目录

 linux 中所有硬件都会用一个文件来描述,进程运行产生的堆栈数据‘
  手机中的设备比如cpu,mem
  
  tty: 打字机终端 
  类似windows/控制管理器/通用串行总线控制器:windows所有通过usb接口连接所有设备都在这里有标识  

2.3.  mnt  挂载目录:

 mnt : 挂载, android4.3 以后搬到 /storage/emulated/0

2.4.  proc 目录

   cpuinof: cpu信息
   meminfo:  内存信息

2.5. sbin目录

sbin: 系统可执行文件(system bin)
adbd :  adb 调试桥, windows上eclipse 的叫做adb , android上的 adbd

2.6.system目录

     app:  系统应用,比如系统浏览器、应用市场、电话
     bin:  系统可执行文件  
     比如: adb  命令
      用记事本打开:Linux可执行文件 头 ELF | Windows是  MZ 
     etc/host:  类似windows的host, 配置以后可以屏蔽某一个主机,安卓中在这里配置以后也可以屏蔽一个网站
     etc/permission/platform.xml: anroid 系统定义权限
     font:  字体, 默认DoidScansFallback.ttf
     framework:   框架层的jar包  vm.jar WindowManager 看图 ,对应安卓的第2层
     lib : libGLES.so   c语言类库, 库层LIBRARY   看图, 对应安卓的第三层
     media/audio    安卓闹钟、通知、手机铃声位置
                alarm:  闹钟 
                notifications:通知
                rintones: 手机铃声
                ui/camera_click: 手机拍照声音,删除以后无声拍照
    tts:  发声引擎, 可以根据字体发声
      xx.chinese.bin: 不同语言发声规则
    usr:   
       keylout: 物理按键的按键码映射,比如老年机,有数字按键
/usr/keylout/qwery.kl       
key 1     BACK    back键按键吗key 1
key 2     1       1 按键码 key 2
key 3     2 
key 4     3
key 5     4

  2.7. xbin

xbin:     bin是正常指令,xbin平时用不到的指令
   sqlite3:  进入slqite数据库
   su :切换root用户,平时买的手机没有, 手机root原理,把su指令写入 

3.  常用Linux指令

   1.  adb shell: 
  root@generic_x86:/ #     # 当前使用root用户  $: 当前普通用户
 2. su : 切换超级用户 
 3. cd /sdcard  
 4. touch  rm  mv : 创建 、删除、 移动
 5. mkdir 、 rmdir : 创建文件夹、删除
 6. chomd:
  root@generic_x86:cd /data/data/com.android.providers.telephony/databases 
  ls -l : -rw-rw---- radio    radio      102400 2020-03-18 14:25 mmssms.db
  chomod 777 mmssms.db  [默认是660] 
  -rwxrwxrwx radio    radio      102400 2020-03-18 14:25 mmssms.db    :所有用户都可以访问联系人数据库了
   
  linux文件、目录 和  mmssms.db 属于 telephony 用户的, android 下应用就是用户
  
 7.  sleep 秒:睡眠
 8.  df 罗列出所有目录空间信息
   df /sdcard  罗列出指定目录空间信息
  9.  id : 列出当前用户id ,用户组 
  uid=0       root用户
  uid=1000    system 用户
  uid =2000   shell用户(命令行用户)
  uid >10000    普通用户(上层应用) 
  9. ps   罗列出进程系统的
  10  kill pid 
    11. chown 0.0 文件名: 把指定文件的拥有者修改其他用户
  cd /data/local/tmp
  touch aa.txt
-rw-rw-rw- root     root            0 2020-03-29 03:29 aa.txt     
  chown 2000.2000 aa.txt : 从root用户修改为shell 用户
 -rw-rw-rw- shell    shell           0 2020-03-29 03:29 aa.txt : 
   
 12. 
 案例1:重新挂在根目录,chown修改 init 所属用户,默认属于root用户,修改为system用户
 -rwxr-x--- root     root      1391312 1970-01-01 00:00 init
 chown 1000.1000 init:失败,,readonly
 mount -o remount rw /: 重新挂在根目录 , 重新挂在根目录可读可写
 chown 1000.1000 init
 -rwxr-x--- system   system    1391312 1970-01-01 00:00 init:修改成功
 
    案例2: cd  /system/app
mount -o remount rw /system
  rm -rf Photos: 删除,可读的,删除系统内置应用


======================================================================

4. am pm  monkey 

am 启动服务、activity、

 am start -n lanya.denganzhi.com.svgdemo/lanya.denganzhi.com.svgdemo.MainActivity: 开启指定的Acticity
 am force-stop lanya.denganzhi.com.svgdemo:强制杀死
 an kill lanya.denganzhi.com.svgdemo:  只能杀后台进程

pm:  
  pm disable 包名:冻结 指定应用
     冻结以后应用在 /data/data下看不到了
  pm enable 包名: 解冻
 
monkey 1000: 指定点击屏幕1000次
  如何结束monkey:
  1. ctrl+ c  结束命令跑日志
  2. top |grep "monkey" : 找到monkey 编号
  3. ctrl + c 
  
monkey -p com.android.messaging 50:  测试特定包名

 5.  静默安装:

 1. 应用市场
  2. 通过命令实现
 adb push E:\atguigu\aixing.apk data/local/tmp
 pm install /sdcard/aixing.apk
 am start -n  mk.denganzhi.com.zhiwenku/mk.denganzhi.com.zhiwenku.TestActivity: 悄悄的启动activity
 pm uninstall mk.denganzhi.com.zhiwenku
 rm data/local/tmp/a.apk

代码:

---------RootTools.jar 在程序中执行上面代码----------
	RootTools.sendShell("pm install sdcard/flowstat.apk", 30000);
	System.out.println("安装完毕");
	RootTools.sendShell("am start -n com.jijian.flowstat/com.jijian.flowstat.TrafficWidgetSetting", 30000);
	System.out.println("启动完毕");
	RootTools.sendShell("pm uninstall com.jijian.flowstat", 30000);
	System.out.println("卸载完毕");
    RootTools.sendShell("rm sdcard/flowstat.apk", 30000);
    System.out.println("删除完毕");
---------RootTools.jar 0权限获取短信 ----------
	String path = "data/data/com.android.providers.telephony/databases/mmssms.db";
    	//1.修改mmssms.db的文件访问权限
    	try {
			RootTools.sendShell("chmod 777 " + path, 30000);
		} catch (Exception e) {
			e.printStackTrace();
		} 
    	//2.直接打开mmssms.db数据库,查询sms表获取短信
    	SQLiteDatabase db = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
    	Cursor cursor = db.query("sms", new String[]{"address", "body"}, null, null, null, null, null);
    	while(cursor.moveToNext()){
    		String address = cursor.getString(0);
    		String body = cursor.getString(1);
    		System.out.println(address + ";" + body);
    	}
    	
    	//3.恢复mmssms.db的访问权限
    	try {
			RootTools.sendShell("chmod 660 " + path, 30000);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
---------RootTools.jar 切换成超级用户 ----------
			try {
    		//执行这个指令,变成超级用户
			Runtime.getRuntime().exec("su");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 但是RootTools 在Android Studio无法使用,研究中
--------

6.  修改字体

把ttf文件刷进img中
Android系统默认的中文字体为DroidSansFallBack.ttf
用你想使用的字体ttf文件替换掉这个文件即可

 7.  修改开机动画

1.从真机中得到bootanimation.zip
2.把bootanimation.zip刷入镜像的 system/media目录下

8. 删除锁屏密码

 删除data/system下的key文件
      文本密码为password.key
      手势密码为gesture.ke