Gradle插件--多渠道打包

DEMO地址:https://github.com/zhaopingfu/listener25_channel

多渠道打包

这里只是在本地写了两个插件,没有上传到jcenter上面

原理

Android7.0之后心出来了一个V2签名,通过分析是v1签名还是v2,在里面合适的位置插入渠道信息
参考链接:
    https://source.android.com/security/apksigning/
    https://source.android.com/security/apksigning/v2
    https://android.googlesource.com/platform/build/+/android-cts-7.0_r15/tools/signapk/src/com/android/signapk
在plugin模块/src/main/resources下有三张图片,是写了apk中如何存储的    

使用

  • 第一步

    将plugin模块和channel模块拷贝到项目中,并在settings.gradle中进行配置
    
    plgin模块的任务是将渠道信息写入安装包
    
    channel模块是将渠道信息读取出来
    
  • 第二步

    在命令行(Terminal)中生成插件
    
    gradlew :plugin:pCPPTML
    gradlew :channel:PCPPTML
    
  • 第三步

    修改工程的build.gradle,添加插件

示例

   buildscript {
       repositories {
           jcenter()
           mavenLocal()
       }
       dependencies {
           classpath 'com.android.tools.build:gradle:2.3.3'
           classpath 'com.pf.channel:channel-plugin:1.0.0'
       }
   }

   allprojects {
       repositories {
           jcenter()
           mavenLocal()
       }
   }
  • 第四步

    在app下创建channel.txt文件,里面存放渠道信息,一行一个渠道信息

    修改app模块下的build.gradle

示例

 apply plugin: 'com.pf.channel'
 channel {
 //    baseApk "${buildDir}/outputs/apk/app-debug.apk"
 //    outDir "${buildDir}/outputs/channel"
     baseApk "${projectDir}/app-release.apk"
     outDir "${projectDir}/channel"
     channelFile "${projectDir}/channel.txt"
 }
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
         exclude group: 'com.android.support', module: 'support-annotations'
     })
     compile 'com.android.support:appcompat-v7:25.3.1'
     compile 'com.android.support.constraint:constraint-layout:1.0.2'
     testCompile 'junit:junit:4.12'

     compile 'com.pf.channel:channel:1.0.0'
 }
  • 第五步

    打一个Release版本的包,将路径放在app下,名字为app-release,如果不在要在build.gradle中修改

    在命令行中打包 gradlew :app:assembleChannel

    打出来的包在/app/channel下,这些包都可以安装

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 开发中,Gradle 是一个非常重要的构建工具,可以用来构建和打包 Android 应用程序。Gradle 插件是一种工具,可以扩展 Gradle 的功能,使其能够支持更多的功能。而多渠道打包Android 应用程序开发中非常重要的一个方面,它可以让我们将应用程序打包成不同的版本,并发布到不同的应用商店或市场上。 在 Android Studio 中,我们可以通过自定义 Gradle 插件来实现多渠道打包,具体步骤如下: 1. 创建 Gradle 插件项目 在 Android Studio 中创建一个新项目,选择 Gradle 插件项目模板。这将创建一个 Gradle 插件项目,并生成一些默认的代码和文件。 2. 实现多渠道打包插件项目中,我们需要实现多渠道打包的功能。这可以通过 Gradle 的 productFlavors 和 buildTypes 配置来实现。我们可以定义多个 productFlavors,并为每个 productFlavor 配置不同的参数,例如应用程序的包名、应用程序名称等。在 buildTypes 中,我们可以为每个 buildType 配置不同的参数,例如应用程序的版本号、是否开启混淆等。 3. 打包应用程序 在插件项目中,我们可以编写一个 Gradle 任务来实现应用程序的打包。这个任务可以使用 Gradle 提供的 assemble 任务来实现。我们可以为每个 productFlavor 和 buildType 配置不同的打包参数,并使用 Gradle 的 assemble 任务来生成应用程序的 APK 文件。 4. 发布应用程序 在插件项目中,我们可以编写一个 Gradle 任务来实现应用程序的发布。这个任务可以使用 Gradle 提供的 uploadArchives 任务来实现。我们可以为每个 productFlavor 和 buildType 配置不同的发布参数,并使用 Gradle 的 uploadArchives 任务将应用程序发布到不同的应用商店或市场上。 总的来说,自定义 Gradle 插件多渠道打包Android 应用程序开发中非常重要的一个方面。通过自定义 Gradle 插件,我们可以实现更加灵活和高效的应用程序打包和发布。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值