android 多渠道打包

发布时间:2020-06-25 00:48:36 作者:home_xu
来源:网络 阅读:373

1、packerNg 式打包

        Android应用使用的APK文件就是一个带签名信息的ZIP文件,根据 ZIP文件格式规范,每个ZIP文件的最后都必须有一个叫 Central Directory Record 的部分,这个CDR的最后部分叫”end of central directory record”,这一部分包含一些元数据,它的末尾是ZIP文件的注释。注释包含Comment Length和File Comment两个字段,前者表示注释内容的长度,后者是注释的内容,正确修改这一部分不会对ZIP文件造成破坏,利用这个字段,我们可以添加一些自定义的数据,PackerNg项目就是在这里添加和读取渠道信息。

   <a href='https://github.com/mcxiaoke/packer-ng-plugin/blob/master/sample/build.gradle' > 对应github地址</a>


2、META-INF 式打包

可以只修改已有apk的渠道标志,快,批量,原理简单


3、Gradle 打渠道包

基本原理是利用Gradle的 manifest merger 功能 

这个功能的主要用途是能够在运行时替换AndroidManifest.xml里面的内容

第一步 在AndroidManifest.xml里配置meta-data

<meta-data

        android:name="UMENG_CHANNEL"

        android:value="${UMENG_CHANNEL_VALUE}" />

第二步 在模块的build.gradle文件的defaultConfig里加上PlaceHolder定义


android {

    ...


    defaultConfig {

        ...

        manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"default_channel" ]

    }   

}


这里的作用有两个,一是声明UMENG_CHANNEL_VALUE是可替换值的PlaceHolder,二是为其设置默认值。



第三步 在模块的build.gradle文件里添加ProductFlavors配置

android {

    productFlavors {

        default_channel{}

        wandoujia{}

        _360{}

        yingyongbao{}

        xiaomi{}

        baidu{}

        huawei{}

        jifeng{}

    }

    productFlavors.all { flavor ->

        flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]

    }

}    



第四步 一次生成所有渠道包


到工程目录下运行gradlew assembleRelease。

可以看到这次编译一共产生了对应productFlavors段的不同渠道包。


可以反编译每个apk,打开AndroidManifest.xml看看,发现友盟这一段的配置已经相应的被修改了。


<meta-data

        android:name="UMENG_CHANNEL"

        android:value="default_channel" />


还可以利用Gradle生成单独的渠道包  

如 gradlew assembleWandoujiaRelease  


推荐阅读:
  1. Android渠道包介绍
  2. Android多渠道快速打包如何实现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android 渠道打包 批量打包

上一篇:小水智能-智慧建筑智能楼宇3D可视化系统,实现数据交互场景的多样化

下一篇:UNIX网络编程-第一部分(简介)-笔录

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》