android studio3.0多渠道打包以及签名注意事项

       说到多渠道,这里不得不提一下友盟统计,友盟统计是大家日常开发中常用的渠道统计工具,而我们的打包方法就是基于友盟统计实施的。按照友盟官方文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值:

(一)在AndroidManifest.xml里设置动态渠道变量

data
    android:name="UMENG_CHANNEL"
    android:value="${UMENG_CHANNEL_VALUE}" />

(二)在app目录下的build.gradle设置productFlavors

      假定我们需要打包的渠道为酷安市场、360、小米、百度、豌豆荚所谓ProductFlavors其实就是可定义的产品特性,配合 manifest meta-data 使用的时候就可以达成在一次编译过程中产生多个具有自己特性配置的版本。这个配置的作用就是为每个渠道包产生不同的 UMENG_CHANNEL_VALUE 的值,方便后台统计。

android {  
    productFlavors {
        kuan {}
        xiaomi {}
        qh360 {}
        baidu {}
        wandoujia {}
    }  

    productFlavors.all { 
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] 
    }
}

(三)导入数字证书,即xx.keystore或xx.jks文件,它用来对我们的APP进行签名,是导出APP的一个钥匙,一般需要我们自己生成, 使用Eclipse 打包生成的签名是xxx.keystore文件,而用Android  studio 生成的签名是xxx.jks文件.   

特别注意很多第三方市场,我们上传apk的时候,他们只支持keystore,需要把.jks签名转化为.keystore!

android studio3.0多渠道打包以及签名注意事项_第1张图片

(四)选择签名版本(建议V1,V2同时勾选)

android studio3.0多渠道打包以及签名注意事项_第2张图片

从图中可以看到多了签名版本的选择,如果勾选的是v2(Full APK Signature),在7.0和以上的android系统版本手机上安装没有问题,但是7.0以下和测试机上(5.0.1)会安装失败

问题描述(v1和v2)

Android 7.0中引入了APK Signature Scheme v2,v1呢是jar Signature来自JDK
V1:应该是通过ZIP条目进行验证,这样APK 签署后可进行许多修改 - 可以移动甚至重新压缩文件。
V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。好处显而易见,更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),从而加快应用安装速度。


解决方案一

v1和v2的签名使用
只勾选v1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式
只勾选V2签名7.0以下会直接安装完显示未安装,7.0以上则使用了V2的方式验证
同时勾选V1和V2则所有机型都没问题

解决方案二

在app的build.gradle的android标签下加入如下

signingConfigs {
    debug {
        v1SigningEnabled true
        v2SigningEnabled true
    }
    release {
        v1SigningEnabled true
        v2SigningEnabled true
    }
}


你可能感兴趣的:(android)