Android 使用系统级别的文件生成系统签名,让你的app变成系统级别的apk,只使用于Android的设备,如果是发布在应用市场的app可以忽略
就在刚才项目想的一个设备是第三方采购的,项目做完了,打不出apk包,然后找厂家问了一下,厂家给了一个方案,接着就不好使;没办法只能寻找第二种方案了.
第一步在清单文件中加入:
android:sharedUserId="android.uid.system"
在那加呢?
现在看明白了吧
这里列举2个方案可以任意尝试:
前提条件你需要有这俩个文件(很重要看3遍):
platform.pk8 和 platform.x509.pem
如果你没有,你可以找相对应的给你提供;也可以在这个目录下找一下:
在build\target\product\security可以找到
方案1:
这里还需要一个jar包
signapk.jar
**
windows的
**
使用Android studio 生成一个debug的apk,然后找到你的debug的apk的位置和platform.pk8 和 platform.x509.pem以及jar包放在一个目录下,在当前目录下打开你的cmd,执行下面的命令
java -jar signapk.jar platform.x509.pem platform.pk8 <你debug的apk的名字> <要生成apk的名字>
mac的
需要在终端的服务中找到服务偏好设置设置
在目录里打开终端 执行命令
java -jar signapk.jar platform.x509.pem platform.pk8 <你debug的apk的名字> <要生成apk的名字>
方案2:
window和Mac和上面的一样操作步骤这里就不说了
这里也需要在同一个目录下执行
- pem文件
Mac的这里要特别注意这里会生成一个platform.pem文件,如果你执行命令后没有看到这个文件,在platform.pem这个前面加上你的绝对路径
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.pem -nocrypt
- 生成pkcs12
别名是什么 我理解就是打包时候的keyAlias
Mac的这里要特别注意这里会生成一个platform.pk12文件,如果你执行命令后没有看到这个文件,在platform.pk12这个前面加上你的绝对路径
openssl pkcs12 -export -in platform.x509.pem -inkey platform.pem -out platform.pk12 -name <这里是别名>
随后会要求输入密码:
Enter Export Password: (输入密码android,默认是android,如是自己制作的key,输入对应的密码)
Verifying - Enter Export Password:(验证密码android)
3.生成jks文件
Mac的这里要特别注意这里会生成一个签名文件,如果你执行命令后没有看到签名文件,在签名文件前面加上你的绝对路径
keytool -importkeystore -deststorepass <你上一步输入的密码> -destkeypass <你上一步输入的密码> -destkeystore <签名文件的名字> -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass <你上一步输入的密码> -alias <这里是别名>
好了 这个时候就会有签名文件了
配置
接下来就是在Android studio 里面配置了
把你生成出来的签名文件放到项目下面
在build中配置:
这个配置在Android{}下
signingConfigs {
名称 {
storeFile file('..\\你签名文件名字') //我的就是mydebug.jks
storePassword '你设置的密码'
keyPassword '你设置的密码'
keyAlias = '你设置的别名'
}
}
配置编译和打包
buildTypes {
release {
........
signingConfig signingConfigs.你上面叫的名称
}
debug {
signingConfig signingConfigs.你上面叫的名称
}
}
接下来大功告成,完美