Android App拥有system权限

在有些Android板子上,app需要拥有system权限,才能访问硬件资源。

而app拥有system权限的方法很简单,只需要修改AndroidManifest.xml文件,添加共享系统进程属性:

android:sharedUserId="android.uid.system"android:sharedUserId="android.uid.shared"android:sharedUserId="android.media"

但这时候App无法直接安装到目标板子上,会提示签名信息不对,所以需要对apk进行系统签名。

系统签名

系统签名的方法有很多种

  1. 把App放到Android源码中编译,需要修改Android.mk文件,而且,App源码是普通(Eclipse)格式。
  2. 手动签名,需要signapk.jar,签名命令:java -jar signapk.jar ……
  3. 使用keytool-importkeypair,将签名信息导入到keystore中,然后使用xx.jks对apk进行签名。

因为我们目前一般使用Android Studio开发调试App,而第一种和第二种,开发调试就很麻烦。所以我们采用第三种,使用工具将签名信息导入到keystore中,利用Android Studio对apk进行签名。

相关文件:

platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh

platform.x509.pem、platform.pk8从目标板子的Android源码中获得
keytool-importkeypair下载
demo.jks通过Android Studio生成,或者自己原有的即可
signature.sh编写如下

#!/bin/sh# 转换平台签名命令./keytool-importkeypair -k demo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias demo# demo.jks : 签名文件# 123456 : 签名文件密码# platform.pk8、platform.x509.pem : 系统签名文件# demo : 签名文件别名

运行

如下操作需要在Linux环境中。

$ sudo chmod a+x signature.sh$ ./signature.sh

将重新生成的demo.jks放到相对目录下面,用Android Studio进行签名即可。

如果想要更加省事,可以配置builde.gradle
在android区域下(与defaultConfig同级)添加配置:

signingConfigs {    release {        storeFile file("../signature/demo.jks")        storePassword '123456'        keyAlias 'demo'        keyPassword '123456'    }    debug {        storeFile file("../signature/demo.jks")        storePassword '123456'        keyAlias 'demo'        keyPassword '123456'    }}

参考:https://www.jianshu.com/p/47265c8899b5

更多相关文章

  1. 系统签名apk--转
  2. android socket 配置文件
  3. Android学习笔记之mainfest文件中android属性
  4. android 下载文件注意事项
  5. android wifi子系统
  6. Android内核开发:图解Android系统的启动过程
  7. Android framework系统手势
  8. mainfest文件中android属性

随机推荐

  1. 查询SQL Server Index上次Rebuild时间的
  2. SQL Server中查看对象定义的SQL语句
  3. SQL Server自定义异常raiserror使用示例
  4. SQL Server存储过程中使用表值作为输入参
  5. sqlserver中存储过程的递归调用示例
  6. 一道关于数据库(经典父子级 ID 关联)更新
  7. 关于SQL的几道小题详解(sql进阶)
  8. 深入分析SQL Server 存储过程
  9. SQL函数substr使用简介
  10. SqlServer中查看当前Open的Cursor方法