Android apk如何签名

刚入职的时候,固件中 app 需要在源码中编译,不是很理解,为什么不使用 IDE 编译,然后 copy 到 
/system/app/*,咨询导师,得到反馈 app 需要使用系统的权限,在 AndroidManifest.xml 中声明了
系统权限android:sharedUserId="android.uid.system"


一、随着工作时间延长,慢慢理解了 apk 签名机制,为了解决上述疑问,出现了 2 套解决方案:

方案1:单独签名解决方案
1.找到平台签名文件“platform.pk8”和“platform.x509.pem”
文件位置 android/build/target/product/security/

2.签名工具“signapk.jar”
位置:android/prebuilts/sdk/tools/lib

3.签名证书“platform.pk8 ”“platform.x509.pem ”,签名工具“signapk.jar ”放置在同一个文件夹;

4.执行命令
java -jar signapk.jar platform.x509.pem platform.pk8 Demo.apk signedDemo.apk 
或者直接在Ubuntu 编译环境执行 java -jar out/host/linux-x86/framework/signapk.jar build/target/product/security/platform.x509.pem build/target/product/security/platform.pk8 input.apk output.apk

方案2:IDE 中添加源码平台生成证书 platform.keystore,生成平台platform.keystore文件步骤如下:

1.编译平台签名文件“platform.pk8”和“platform.x509.pem”
文件位置:android/build/target/product/security/

2.把pkcs8格式的私钥转化成pkcs12格式:
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt

3.把x509.pem公钥转换成pkcs12格式:
openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name androiddebugkey 密码都是:android

4.生成platform.keystore (加粗字体分别设置store password、key alias和key password,配置签名时会用到)
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore platform.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey

二、Eclipse 添加证书

将生成的platform.keystore导入eclipse 在eclipse下Windows/preferences/Android/build中设置“Custom debug keystore”为刚才生成的platform.keystore即可


webp

调试apk时直接点击Debug As —> Android Application即使用系统签名签名了该apk

三、Android Studio 添加证书

1.配置签名文件路径和密码等  (注意:store password、key alias和key password要与上述方案2的第四步的密码和名称保持一致)
此图像的alt属性为空;文件名为image.png

完成上述配置后,app下的build.gradle文件会自动生成如下配置:
此图像的alt属性为空;文件名为image-2-1024x627.png

2.引用配置的签名
此图像的alt属性为空;文件名为image-3.png

点击“ok”后build.gradle会自动生成如下代码:
此图像的alt属性为空;文件名为image-4-1024x663.png

转载自该处

0

留下评论