使用gradle构建配置文件对apk签名

作者 :
免费
  • 正文
  • 目 录

    一、gradle构建自动生成签名

    4.在gradle中配置签名信息

    我们都知道Android使用gradle来构建版本,因此我们也希望在gradle中配置好签名信息,在打包apk时更方便。
    在项目的build.gradle中,android下加入signingConfig信息。

    signingConfigs {
    debug {
    storeFile file("./h5.jks")
    storePassword "admin"
    keyAlias "h5"
    keyPassword "admin"
    v1SigningEnabled true
    v2SigningEnabled true
    }
    release {
    storeFile file("./h5.jks")
    storePassword "admin"
    keyAlias "h5"
    keyPassword "admin"
    v1SigningEnabled true
    v2SigningEnabled true
    }
    }

    5.jks与keystore

    从Eclipse开始做Android开发的小伙伴都知道,Eclipse默认生成的签名文件是keystore格式,而Android Studio生成的是jks格式。二者只是签名格式的不同,是可以进行转换的(如何转换,查看下一篇文章)。

    二、获取签名文件的md5值和sha256值

    在文章开始时,就提到了在许多开放平台注册时,需要用到apk签名的md5值和sha256值,怎么获取呢?这里提供了两种方法。

    1.用命令行获取md5值和sha256值

    keytool -v -list -keystore hyydev.jks
    

    如图4:

    使用gradle构建配置文件对apk签名-完美源码

    2.用代码获取md5值和sha256值

    除了用keytool命令获取外,也可以通过代码获取签名的md5值和sha256值。
    代码如下:

     
    public static String getSign(Context context, String packageName) {
    String signValidString = "";
    try {
    @SuppressLint("PackageManagerGetSignatures")
    PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, PackageManager.*GET_SIGNATURES*);
    signValidString = *getSignValidString*(packageInfo.signatures[0].toByteArray(), "MD5"); //参数可以填"SHA1"、"SHA256"
    } catch (Exception e) {
    }
    return signValidString;
    }
    private static String getSignValidString(byte[] paramArrayOfByte, String signType) throws NoSuchAlgorithmException {
    MessageDigest localMessageDigest = MessageDigest.*getInstance*(signType);
    localMessageDigest.update(paramArrayOfByte);
    return *toHexString*(localMessageDigest.digest()); //转为16进制显示,实现略去
    }

    三、获取系统签名

    Android系统的签名信息不是keystore或jks格式,它默认存在build\target\product\security目录下如图。如果需要获取系统签名的信息,需要在Ubuntu环境下把它转换为keystore或jks格式。

    使用gradle构建配置文件对apk签名-完美源码

    1.生成keystore签名文件

    1>.取platform.pk8 platform.x509.pem放到一个目录下
    2>.生成platform.pem

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

    3>.生成platform.p12

    openssl pkcs12 -export -in platform.x509.pem -inkey platform.pem -out platform.pk12 -name dev
    Enter Export Password: (输入密码,比如hyydev)
    Verifying - Enter Export Password:(输入密码,比如hyydev)

    4>.生成hyysign.keystore

    keytool -importkeystore -deststorepass android -destkeypass hyydev -destkeystore hyysign.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass hyydev -alias dev
    

    2.生成jks签名文件

    与生成keystore文件类似。
    1>.取platform.pk8 platform.x509.pem放到一个目录下
    2>.生成platform.pem文件

    openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
    

    3>.生成platform.p12

    openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:wmphp -name hyy
    

    4>.生成wmphp.jks

    keytool -importkeystore -deststorepass hyydev -destkeystore wmphpsign.jks -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass hyydev
    

    3.哪些apk的签名必须使用系统签名文件

    有些apk需要系统权限,比如实现关机指令。
    如何声明系统权限呢?
    在AndroidMainfest.xml的mainfest中加入:

    android:sharedUserId="android.uid.system"
    

    用到系统权限的apk,起签名必须使用系统签名,否则安装不上,会报错误如图6。

    使用gradle构建配置文件对apk签名-完美源码

     

     

    END
    如本资源侵犯了您的权益,请联系投诉邮箱admin@wmphp.com进行举报!我们将在收到邮件的1个小时内处理完毕。 本站仅为平台,发布的资源均为用户投稿或转载!所有资源仅供参考学习使用,请在下载后的24小时内删除,禁止商用! Wmphp.com(完美源码)助力正版,如您有自己的原创产品,可以联系客服投稿,代理出售! Wmphp.com(完美源码)客服QQ:136882447 Wmphp.com(完美源码)商务电话(仅对企业客户/个人用户):15120086569 (微信同步) 请注意:本站不提供任何免费的技术咨询服务,为了节约时间,下载前 请确认自己会技术
    完美源码 » 使用gradle构建配置文件对apk签名
    3797+

    本站勉强运行

    17996+

    用户总数

    695+

    资源总数

    0+

    今日更新

    2024-12-5

    最后更新时间