android apk签名

 android开发者都知道apk需要签名,今天在网上搜索了一下apk签名的几种方式。这里列出来以防止忘记了。

1. 开发中对apk进行签名。 这个过程在build完成后自动进行,需要我们在IDE环境中配置keysotore文件路径。例如,  我们用androidstudio开发apk的时候,会在build.gradle制定debug/release build时的签名配置,如下所示:

   

signingConfigs {
    mitv {
        keyAlias 'mitv'
        keyPassword 'android'
        storeFile file('../mitv.keystore')
        storePassword 'android'
    }
}

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.mitv
    }
    debug {
        signingConfig signingConfigs.mitv
    }
}

上面的这个配置里,debug和release build的时候用了同一个签名配置,也就是用过来同一个keystore文件mitv.keystore.

这种方式的签名是在gradle build的时候就已经签名了。这是第一种签名方式,也是我们开发者常用的签名方式。

2. 如果我们已经拿到了一个现成的apk, 需要对这个apk进行签名该如何做呢? 这就需要用到android自带的signapk.jar这个工具jar包了,还需要
我们的证书和私钥文件, 执行如下命令即可(MyDemo.apk是需要重新签名的文件, MyDemo_signed.apk是前后的文件):
java -jar signapk.jar platform.x509.pem platform.pk8 MyDemo.apk MyDemo_signed.apk 

3. 如何从pem文件和pk8文件生成keystore文件呢? 执行下面的命令就可以:

1)把pk8转换成pk12格式

openssl pkcs8 -in shared.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt

2) 生成pk12的密钥文件

openssl pkcs12 -export -in shared.x509.pem -inkey shared.priv.pem -out shared.pk12 -name androiddebugkey

3) 生成keystore

keytool -importkeystore -deststorepass android -destkeypass android -destkeystore debug.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey


4. 如何使用keytool命令列出一个keystore文件里的entries呢? 用下面的命令:
keytool -list -keystore debug.keystore

这个命令的执行结果如下:
lierjian@lierjian-OptiPlex-7010:~/work/code/MiTV/MiTVOnlineVideoNew/duokantv/proj.android/m6_sig/test$ keytool -list -keystore debug.keystore
Enter keystore password:  

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

androiddebugkey, Mar 22, 2017, PrivateKeyEntry,
Certificate fingerprint (SHA1): 08:32:F8:EB:8B:B2:28:12:1A:6E:A9:0C:AD:D8:9D:58:2C:B1:9C:7D









博主设置当前文章不允许评论。

没有更多推荐了,返回首页