一、非系统 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 <specific device> 指定 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文件安装到指定序列号设备上面
复制代码
评论