Jenkins+Gradle+Android+多渠道包 (一)

目的是QA可以自己登陆Jenkins选择要构建的版本,结果以邮件的方式通知(包括构建信息,静态代码分析结果,APK下载链接,二维码等),然后存档。

  • 构建使用Gralde。
  • 打包,生成二维码,存档是Python脚本实现。

打多渠道包

打多渠道包有很多方法,我用的是,生成一个签名后的APK,然后在APK包种META-INF目录下添加一个空文件,文件名包含渠道信息,Android中读这个文件来获取信息,通过代码的方式设置给友盟。这样可以避免反复编译,签名。

修改脚本 Python:

def generate( channel_name ):
    shutil.copy(apk_file, target_apk)
    zipped = zipfile.ZipFile(target_apk, 'a', zipfile.ZIP_DEFLATED)
    content_file = "META-INF/Channel_"+channel_name+".txt"
    zipped.write(empty_content, content_file)
    zipped.close()
    return target_apk

怎样取渠道信息然后循环修改就看个人情况了

Android中读取

private static String getContent(Context context, String channelKey){
    String sourceDir = context.getApplicationInfo().sourceDir;
    String key = "META-INF/" + channelKey;
    String ret = "";
    ZipFile zipfile = null;
    try {
        zipfile = new ZipFile(sourceDir);
        Enumeration<?> entries = zipfile.entries();
        while (entries.hasMoreElements()) {
            ZipEntry entry = ((ZipEntry) entries.nextElement());
            String entryName = entry.getName();
            if (entryName.startsWith(key)) {
                ret = entryName;
                break;
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (zipfile != null) {
            try {
                zipfile.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    String[] split = ret.split("_");
    String channel = "DEV";
    if (split != null && split.length >= 2) {
        channel = ret.substring(split[0].length() + 1);
    }
    return channel;
}

给友盟设置给友盟

AnalyticsConfig.setChannel(String channel)
时间: 2024-08-04 12:35:19

Jenkins+Gradle+Android+多渠道包 (一)的相关文章

美团的android多渠道包的3种方法

转: http://tech.meituan.com/mt-apk-packaging.html 美团Android自动化之旅—生成渠道包 zhihu2014-06-13 10:06 概述 每当发新版本时,美团团购Android客户端会被分发到各个应用市场,比如豌豆荚,360手机助手等.为了统计这些市场的效果(活跃数,下单数等),需要有一种方法来唯一标识它们. 团购客户端目前通过渠道号(channel)来区分不同的市场,代码中使用Config.channel变量记录该渠道号.比如,豌豆荚市场中美

Jenkins+Gradle+android+SonarQube

一.环境 1. ubuntu14.04(64位) 2. jdk 1.7 3. ant 1.9 4. jenkins 1.606 5. tomcat 7.0.5 6. android sdk 7. gradle 8. nexus 9. sonarqube 二.安装 1. JDK环境变量 vim ~/.bashrc export JAVA_HOME=/usr/local/lib/jvm/jdk1.7.0_60 export JRE_HOME=$JAVA_HOME/jre export CLASSPA

jenkins+gradle+android环境变量配置

1.jenkins添加gradle插件 2.环境变量配置[mac mini] 可以自己写profile文件,也可以放到/etc/.profile里面. JDK: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0.jdk/Contents/Home Android[adt-bundle]: export ANDROID_HOME=/Users/git/android/adt-bundle-mac-x86_64-20130514/

windows环境下jenkins+gradle+Android 自动打包部署

第一步,搭建jenkins环境 1.安装下载jenkins jenkins运行依赖Java开发环境,安装jenkins前,先安装好JDK,并配置好环境变量 进入jenkins 的官网 https://jenkins.io/ , 根据搭建平台的不同下载,我使用的是 windows 平台 2.配置 Jenkins 安装完成后,在浏览器中访问 : http://localhost:8080/, 你将会看到如下界面 ,然后开始配置 Jenkins. 3.Jenkins 插件安装和超级管理员配置 填写完密

ant 打包含aidl文件的Android多渠道包

打多渠道不多说了,说说打aidl文件的(aidl不解释) 1.配置aidl.exe文件路径: 2.写个target,来编译aidl 3.将aidl生成的java文件,copy到gen下面的目录下 4. 木有了哈哈哈!! 有问题留言吧!!

android多渠道包打包工具

直接贴地址 http://blog.mcxiaoke.com/gradle-packer-plugin/

Android开发之Jenkins+Gradle实现持续集成、apk多渠道打包

前言: 首先很高兴大家来阅读王某人这篇文章,我干肯定大部分公司的发版流程是这样的,android程序员小李打出各渠道包,发给运维小胡,小胡将个渠道包上传各大应用市场,就这样送审了... 我们反过来想一想,程序员小李的工作有意义吗,首先肯定耽误它手头的工作吧,对于公司来说程序员的时间就是金钱,还有如果哪一天程序员小李脑子发热了,忘记改debug参数了,忘记改versioncode值了,这些后果谁来承担呢? 不要怕,下面我们就来认识下今天得主人公,Jenkins+Gradle: Jenkins简介

Gradle实战:Android多渠道打包方案汇总

查看原文:http://blog.csdn.net/u010818425/article/details/52319382 Gradle实战系列文章: <Gradle基本知识点与常用配置> <Gradle实战:不同编译类型的包同设备共存> <Gradle实战:发布aar包到maven仓库> <Gradle实战:执行sql操作hive数据库> 本文将延续之前几篇博客的风格,先从基本概念入手,这有助于我们对后文的理解: 在后续的代码中如果忘了某个概念的具体意义,

Android Studio 打多渠道包

最近,公司的项目开始使用谷歌官方最新推出的IDE--Android Studio 1.0,发现使用studio打渠道包很容易. 下面以友盟统计为例. 第一步,在项目中的androidmanifest文件中,原本是这么配置的 <meta-data android:name="UMENG_CHANNEL" android:value="WanDouJia" /> 现在只需将这个value设置成变量,如下: <meta-data android:name