第一种:使用keytool-importkeypair生成keystore文件,后缀名为.jks,放到android studio中。
1、下载keytool-importkeypair 地址:https://github.com/getfatday/keytool-importkeypair
2、在源码中拷贝 platform.x509.pem、platform.pk8(位于../build/target/product/security)不同厂商的位置不同,需要正确路径下的platform.x509.pem、platform.pk8,否则签名会失败。
3、在linux平台下新建一个文件夹,把 keytool-importkeypair platform.x509.pem、platform.pk8 拷贝到这个文件夹下,使用以下命令:
./keytool-importkeypair -k [jks文件名] -p [jks的密码] -pk8 platform.pk8 -cert platform.x509.pem -alias [jks的别名]
./keytool-importkeypair -k demo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias demo
其中demo.jks是生成的签名文件123456是密码demo是别名,然后再用命令
keytool -importkeystore -srckeystore demo.jks -destkeystore demo_sign.jks -deststoretype pkcs12
迁移到行业标准格式即可,这样我们就可以在android studio 中使用我们的系统签名文件了
4、 打开android studio 在项目的根目录新建一个文件夹然后在app的build.gradle的android闭包中添加如下代码
android{
compileSdkVersion 25
buildToolsVersion "26.0.2"
defaultConfig {
applicationId"com.honeywell.applock"
minSdkVersion 19
targetSdkVersion 25
}
signingConfigs {
release {
storeFile file('../platformSign/demo_signed.jks')
storePassword '123456'
keyAlias 'demo'
keyPassword'123456'
}
debug {
storeFile file("../platformSign/demo_signed.jks")
storePassword '123456'
keyAlias 'demo'
keyPassword'123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug{
signingConfig signingConfigs.debug
}
}
}
然后运行项目即可。也可以用下面这种方式生成签名的apk
第二种:用signapk.jar 直接签名apk
1、 找到源码中的signapk.jar包(./out/host/linux-x86/framework/signapk.jar或是./prebuilts/sdk/tools/lib/signapk.jar)
2、在源码中拷贝 platform.x509.pem、platform.pk8(位于../build/target/product/security)不同厂商的位置不同,需要正确路径下的platform.x509.pem、platform.pk8,否则签名会失败。
3、把signapk.jar platform.x509.pem、platform.pk8和需要签名的apk放在一个文件下,使用命令:
Java -jar signapk.jar platform.x509.pem platform.pk8 demo.apk new.apk
注意:在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId=”android.uid.system”这个属性。