如何对应用进行Android系统签名和常用adb命令总结
一、非系统APP应用添加系统权限的两种方法:
- 应用场景:系统权限(AndroidManifest.xml中manifest节点中加入android:sharedUserId=”android.uid.system”这个属性)
- 方法一:将APP工程放置到系统源码环境,进行编译,并打包到系统ROM包里面;则默认具有系统权限;
- 方法二:利用系统的签名文件,进行手动不依赖源码签名,本文就是介绍这种方法。
二、签名文件获取:
获取目标系统的签名文件,需要如下几个:
1.platform.pk8和platform.x509.pem,通常在源码环境的build\target\product\security目录下;
2.signapk包,通常在源码环境的build\tools\signapk目录下,包含如下文件:
三、签名环境配置:
拿到上述文件之后还不能直接签名,需要将signapk编译,生成一个signapk.jar包,步骤如下:
1.把signapk放到E盘(E:\signapk),命令行cd到此目录下(signapk.java代码目录)下执行:
E:\signapk>java SignApk.java
生成如下图的两个class文件:
2.新建路径:E:\signapk\temp\com\android\signapk
将刚才生成的两个class文件拷贝到此路径下:
3.在E:\signapk下执行如下指令:
E:\signapk>jar cvfm signapk.jar SignApk.mf -C temp\ .
注意格式:”temp\”后面的”.”前面有空格
经过上述三步,我们就得到了一个signapk.jar文件,也是我们签名需要的关键文件,下面就可以给你的apk签名了;配置好的环境如下:
四、给APK签名:
签名很简单,执行如下命令即可:
E:\signapk>java -jar signapk.jar platform.x509.pem platform.pk8 a.apk b.apk
至此,已经生成具有系统签名的apk了
五、adb命令在多设备连接情况下常用命令:
adb devices // 查询所有当前在线设备
adb shell // 进入目标设备的Linux Shell环境, 在该环境中可以执行一些linux命令.如在Linux Shell环境中执行ps可以查看android设备中运行的所有进程.在Linux Shell环境中执行exit可以退出Linux Shell环境
adb start-server // 开启adb服务
adb kill-server // 终止adb服务
adb version // 显示adb的版本号
adb install <apk file name> // 将指定的app安装到唯一连接到adb的设备上,后边跟的参数为安装包的文件名
adb install -r <apk file name> // 安装应用程序, 但是保留原有应用程序的所有数据
adb uninstall <package name> // 将包名指定的app从目标设备上卸载,后边跟的参数为应用程序的包名
adb uninstall -k <package name> // 将包名指定的app从目标设备上卸载, 但是保留配置文件和缓存
adb push <local> <remote> // 将本机的文件或目录拷贝到目标设备的文件系统中
adb pull <remote> <local> // 将目标设备中的文件或目录拷贝到本机中
adb shell dumpsys activity // 列出目标设备上的activity栈(back stack)和任务(task)的信息, 还有其他组件的一些信息和一些关于进程的信息
adb shell dumpsys packages // 列出一些系统信息和所有应用的信息
adb shell pm list permissions // 列出目标平台上的所有权限
adb shell pm list packages // 列出目标设备上安装的所有app的包名
adb shell pm list features // 列出目标设备上的所有feature
adb shell am start -n com.growingwiththeweb.example/.MainActivity // 使用adb命令启动一个页面
adb shell am start -n com.growingwiththeweb.example/com.growingwiththeweb.example.MainActivity
adb shell input keyevent 82 // 解锁屏幕
六、adb命令中用于确定目标设备的参数:
adb命令有三个重要的参数,当本机上连接了两个或以上的android设备时,这三个参数就有用武之地了:
* -d 说明adb命令的目标设备是唯一连接到adb的真机
* -e 说明adb命令的目标设备是唯一连接到adb的模拟器
* -s 指定adb命令的目标设备
以下为这三个参数的应用举例:
adb -d shell // 进入唯一连接到adb的真机的Linux Shell环境
adb -e install test.apk // 将test.apk安装到唯一连接到adb的模拟器上
adb -s emulator-5554 push weibo.apk /sdcard/test.apk // 将test.apk文件复制到emulator-5554的/sdcard/weibo.apk位置
adb -s <device-serial> install test.apk // 将test.apk文件安装到指定序列号设备上面