APK安装到手机之后的目录结构
$APP_INSTALL/oat/*.odex //优化之后的dex文件
$APP_INSTALL/oat/*.vdex //包含*.dex文件
$APP_INSTALL/*.apk
查看APK包名
apkanalyzer apk summary [apk]
aapt dump badging [apk]
apkanalyzer
位于$SDK_HOME/tools/bin/apkanalyzer
aapt
位于$SDK_HOME/build-tools/$VERSION/aapt
APK系统签名
系统签名类型:
1. testkey
2. platform
3. shared
4. media
应用程序的
Android.mk
中有一个LOCAL_CERTIFICATE
字段指定签名类型,未指定默认使用testkey
.
signapk.jar
1.签名文件位置
$ALPS/build/target/product/security/
Android.mk
media.pk8
media.x509.pem
platform.pk8
platform.x509.pem
README
shared.pk8
shared.x509.pem
testkey.pk8
testkey.x509.pem
verity_key
verity.pk8
verity.x509.pem
2.工具位置
$ALPS/out/host/linux-x86/framework/signapk.jar//需要编译源码生成
3.签名
java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk
命令报错
Failed to load any of the given libraries: [
conscrypt_openjdk_jni-linux-x86_64,
conscrypt_openjdk_jni-linux-x86_64-fedora,
conscrypt_openjdk_jni
]
执行:
java -Djava.library.path=$LIB_PATH -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk
$LIB_PATH
为libconscrypt_openjdk_jni.so
库目录,位于:$ALPS/prebuilts/sdk/tools/linux/lib64/
或者$ALPS/out/host/linux-x86/lib64
Android Studio签名
1.把pkcs8
格式的私钥转化成pkcs12
格式
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt
2.把x509.pem
公钥转换成pkcs12
格式
openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name androiddebugkey
这里会提示输入密码,默认密码是android
,如是自己制作的key
,输入对应的密码
3.生成platform.keystore
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore debug.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey
android
为密码