安卓开发之你该知道的Linux命令
来源:互联网 发布:献给虚无的供物 知乎 编辑:程序博客网 时间:2024/05/16 01:40
Android目录结构
data
- app:用户安装的应用
- data:应用的专属文件夹
- system:系统的配置信息,注册表文件
- anr:anr异常的记录信息
dev:devices的缩写
- 存放设备所对应的文件(Linux中所有硬件在系统中都会用一个文件来表示)
mnt:mount的缩写
- 挂载在系统上的设备:sdcard,u盘
proc:硬件配置,状态信息
- cpuinfo、meminfo
sbin:system bin
- 系统重要的二进制执行文件
- adbd:服务器的adb进程( adbd:eclipse和Android设备建立连接的Android端的进程)
system:
- app:存放系统应用,默认不能删除
- bin:Android中可执行的linux指令文件
- etc:host:主机名和ip地址的映射
- permissions:platfrom.xml:Android定义的权限
- fonts:Android中自带的字体
- framework:存放谷歌提供的java api
- lib:核心功能的类库,C/C++文件
- media/audio:存放Android的音效文件
- tts:语音发声引擎,默认不支持中文
- usr:用户设备的配置信息,键盘编码和按键编码的映射
- xbin:是专为开发人员准备的二进制指令
Android下的Linux指令
- su:superuser
- 切换到超级用户
- rm:remove,删除文件
- rm 文件名
- ls:列出目录下的所有文件和文件夹
- ls -l:查看文件的详细信息
- ls -a:查看隐藏文件
- cd:切换到某个目录
- cat:查看文件内容
- cat 文件名
- 不要cat二进制可执行文件
- mv:move 修改文件名
- mv 原文件名 新文件名
- mkdir:创建文件夹
- mkdir 文件夹名字
- rmdir:删除文件夹
- rmdir 文件夹名字
- touch:创建新文件
- touch 文件名
- chmod:change mode,切换文件访问权限
- chmod 777 文件名
- echo:回显数据;重定向数据
- echo 数据 > 文件名
- sleep:睡眠几秒
- df:显示指定目录的容量
- id:打印当前用户的id
- uid=0:root
- uid=1000:system
- uid=2000:shell
- uid=10000+:一般应用程序的id
- ps:列出系统中运行的所有进程
- kill:杀死指定pid的进程
- kill pid
- chown:change owner,修改拥有者
- chown 0.0 文件名
- mount:挂载文件系统
- mount -o remount rw /:挂载当前目录为可读可写权限
- mount -o remount rw /system:重新挂载指定目录
Android特有的指令
am
- am start -n com.itheima.helloworld/com.itheima.helloworld.MainActivity:开启指定的activity
- am kill com.itheima.helloworld:杀死指定的进程,但是不会杀死影响用户体验的进程
- am force-stop com.itheima.helloworld:强制杀死指定进程
pm:
- pm disable 包名:冻结指定应用
- pm enable 包名:解冻指定应用
monkey:自动测试指令
- monkey -p com.itheima.helloworld 1000:测试指定应用1000次
刷模拟器,rom写文件(su)
- 如果想让真实手机运行这些指令,手机必须要有root权限
- 刷root原理:把su二进制文件拷贝到/system/bin或者/system/xbin
- Android刷root软件,工作的原理全部都是利用系统的漏洞实现
- rom:可以理解为android系统的安装文件
- 把su文件和superuser.apk写入img文件
执行su指令
Runtime.getRuntime().exec("su");
小案例:冻结解冻应用
- 冻结和解冻指定的应用
-
RootTools.sendShell(“pm disable ” + package, 300000);
RootTools.sendShell(“pm enable ” + package, 300000);
小案例:零权限读取用户隐私数据
直接修改短信数据库访问权限
RootTools.sendShell("chmod 777 data/data/com.android.providers.telephony/databases/mmssms.db", 300000);SQLiteDatabase db = SQLiteDatabase.openDatabase("data/data/com.android.providers.telephony/databases/mmssms.db", null, SQLiteDatabase.OPEN_READONLY);Cursor cursor = db.query("sms", new String[]{"body", "address"}, null, null, null, null, null);while(cursor.moveToNext()){ String body = cursor.getString(0); String address = cursor.getString(1); System.out.println(body + ";" + address);}RootTools.sendShell("chmod 660 data/data/com.android.providers.telephony/databases/mmssms.db", 300000);
静默安装
- 为什么有静默安装的需求
- 正规应用。电子市场,方便用户静默安装
- 流氓软件。后台偷偷下载安装。
自动下载应用,然后静默安装
//静默安装RootTools.sendShell("pm install sdcard/flowstat.apk", 30000);//打开RootTools.sendShell("am start -n com.jijian.flowstat/com.jijian.flowstat.TrafficWidgetSetting", 30000);//卸载应用RootTools.sendShell("pm uninstall com.jijian.flowstat", 30000);//删除下载的apk包RootTools.sendShell("rm sdcard/flowstat.apk", 30000);
修改字体
- 把ttf文件刷进img中
- Android系统默认的中文字体为DroidSansFallBack.ttf
- 用你想使用的字体ttf文件替换掉这个文件即可
修改开机动画
- 从真机中得到bootanimation.zip
- 把bootanimation.zip放入system/media目录下
删除锁屏密码
- 删除data/system下的key文件
- 文本密码为password.key
- 手势密码为gesture.key
0 0
- 安卓开发之你该知道的Linux命令
- 关于BLE的android开发,你该知道的一切
- 也许你知道的Linux命令
- 你应该知道的linux命令--lsof
- 那些你不知道的linux命令
- 你所不知道的 Linux 命令!
- C#之你该知道的东西1.0
- 菜鸟的安卓内核开发之旅1--安装Ubuntu及熟悉常用linux命令
- 安卓开发,你必须知道的一些基本第三方
- 10个你可能不知道的安卓Studio开发技巧
- 安卓5.x的Palette之你不知道的事
- 如何开始你的安卓开发之旅
- 开发必备---你应该知道的一些 ADB 命令
- 开发必备---你应该知道的一些 ADB 命令
- 开发必备---你应该知道的一些 ADB 命令
- 你该知道的东西 <Android优化>
- 你该知道的音频常见接口
- 你该知道的json解析
- 04_多线程_死锁
- SpringMVC查找POJO对象的流程
- Android常见错误(二)
- 利用spring aop 处理异常
- ActiveMQ -- 消息持久化
- 安卓开发之你该知道的Linux命令
- 数据结构实验之查找六:顺序查找
- c3p0异常,exception is java.lang.NoClassDefFoundError: com/mchange/v2/log/jdk14logging/ForwardingLogger
- 关于xml文件转换成java对象以及java对象转换成xml的工具类
- sftp
- Android中home键监听一个好用的方法。(按home键后播放器停止播放)
- 回家吃饭Android客户端整理后总结
- iOS 调用系统铃声及震动
- ListView常用扩展之一-具有弹性的ListView