admin管理员组

文章数量:1614276

背景

这两天,一直在折腾,从app上获取Android设备上的SN问题,折腾良久,最终,还是使用系统签名的办法解决掉了,想着把开发的流程简单记录一下,也算一种积累了,可能存在很多问题,望海涵。

1、AndroidManifest.xml 中添加shareUserId

android:sharedUserId="android.uid.system"

 2、生成系统签名文件

在使用shareUserId之后,直接打包或者运行会报错闪退,具体错误应该是INSTALL_FAILED_SHARED_USER_INCOMPATIBLE这个问题,出错的原因,是在使用shareUserId之后,需要使用和系统相同的一个签名文件,所以就需要找Android的原生应用签名文件,具体见Google的git上的Android源码,地址如下:

https://android.googlesource/platform/build/+/donut-release/target/product/security

主要从Google的git上获取几个相应的文件,可以直接使用tgz进行下载,具体如下:

主要就是上面的两个文件:media.pk8、media.x509.pem

ps:有些设备可能厂家会对原生应用的签名文件进行修改,所以需要跟硬件厂家索要。

3、使用keytool工具进行签名生成

在准备好上面的两个签名文件之后,需要使用keytool进行签名生成,可从网上把keytool下载下来,地址如下:

https://github/getfatday/keytool-importkeypair

4、生成签名文件

在项目Android项目跟目录下,新建一个文件夹,例如叫signJks,并把准备的keytool和签名文件放到这个文件夹下

 

在signJks文件夹下,创建signature.sh脚本,担心有格式问题,可以使用git bash进行创建,在git bash中进入到signJks所在目录,执行touch signature.sh命令,回车就行了:

 

 使用文本编辑工具,或者其他开发软件,编辑signature.sh

./keytool-importkeypair -k demos.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias demos

 命令解释如下:

1,demos.jks是生成的签名文件名称;

2,-p 123456 为签名文件的密码

3,-alias demos是签名文件的别称

5、在Android项目中配置,具体配置为build.gradle,具体如下:

 找到,signingConfigs 可以根据上图进行调整,其中file是生成的签名文件的相对路径,例如:

../signJks/demos.jks

6、启动项目之前,尽量先clean && rebuild一次项目,在打包时注意更换签名地址。

本文标签: 方法系统android