首页 > 代码库 > Jenkins+Gradle+Android+多渠道包 (一)
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)
Jenkins+Gradle+Android+多渠道包 (一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。