赞
踩
项目需求:给客户第三方定制的 扫读笔 上 开发 Launcher 应用,其中有一个定时关机的功能
/**
* 关机(需要系统权限)
* @param context
*/
public static void shutdownSys(Context context) {
Intent intent = new Intent();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
intent.setAction("com.android.internal.intent.action.REQUEST_SHUTDOWN");
} else {
intent.setAction("android.intent.action.ACTION_REQUEST_SHUTDOWN");
}
intent.putExtra("android.intent.extra.KEY_CONFIRM", false);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
android:sharedUserId=“android.uid.system”
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.launcher"
android:sharedUserId="android.uid.system"
android:versionCode="47"
android:versionName="4.2021.0315.1" >
platform.pk8、platform.x509.pem
解压 keytool-importkeypair 签名工具文件夹,
把 系统签名文件 platform.pk8、platform.x509.pem ,
还有自已apk普通的签名文件 jxw-key.jks
一起放入到签名工具文件夹中。
工具不能在Windows环境下使用,我是在centos中执行,需要给keytool-importkeypair文件权限:
[root@localhost soft]# chmod 7777 keytool-importkeypair
在次执行命令:
./keytool-importkeypair -k jks的文件名 -p jks的密码 -pk8 platform.pk8 -cert platform.x509.pem -alias jks的别名
成功后,就将系统签名引入到自已的jks中了。
在Android工程中,将如下内容添加到app的build.gradle中便可。
signingConfigs { debug { storeFile file("d:/sign/jxw-key.jks") storePassword 'jks的密码' keyAlias 'jks的别名' keyPassword 'jks的密码' v1SigningEnabled true v2SigningEnabled true } release { storeFile file("d:/sign/jxw-key.jks") storePassword 'jks的密码' keyAlias 'jks的别名' keyPassword 'jks的密码' v1SigningEnabled true v2SigningEnabled true } }
配置完之后,就可以直接Build ->Build APK 生成的apk就可以直接安装了。
我们还可以将apk推入到/system/app系统目录下,因为用户apk和系统apk安装后,
他们的存放目录是不一样的。执行如下步奏:
1.首先连接手机,进入命令行,输入:adb root,使得adb获取root权限。
2.输入:adb shell,进入安卓shell
3.输入:mount -o remount /system,将system路径挂载为可读可执行,否则后边会报Read-only权限问题,或者直接输入adb remount。
4.输入:chmod 777 system/,修改system及子目录为可读写执行权限。
5.输入:adb push 本地路径+apk文件名 目的路径(/system/app)
6.输入adb reboot,重启机器,如果程序安装成功则大功告成,如果没有安装,则需要我们手动安装了,首先进入/system/app路径,使用:pm install apk包名,安装apk包。
1.android 源码目录build\target\product\security 取platform.pk8 platform.x509.pem放到一个目录下
2 openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt //生成shared.priv.pem
3 openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name androiddebugkey //生成pkcs12
Enter Export Password: (输入密码android,默认是android,如是自己制作的key,输入对应的密码)
Verifying - Enter Export Password:(输入密码android)
4 生成debug.keystore
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore debug.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey
Warning:
JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore debug.keystore -destkeystore debug.keystore -deststoretype pkcs12” 迁移到行业标准格式 PKCS12。
首先需要配好 openssl 和 jdk 的环境变量,然后重启电脑
然后把系统签名文件 platform.pk8、platform.x509.pem 放在同一个目录下
在此目录下输入以下命令,
//第一步:
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
//第二步:
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:****** -name *****
//第三步:用java环境中的 keytool 工具生成签名文件
keytool -importkeystore -deststorepass ****** -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass ******
最后就可以成功得到 具有系统权限的签名文件 platform.jks
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。