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)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。