Android分渠道多应用名打包方案
来源:互联网 发布:iphone8销量数据 编辑:程序博客网 时间:2024/05/22 09:46
转载请注明出处
http://blog.csdn.net/u014513456/article/details/74783579
Author:ruanjianjiagou@163.com背景
为优化APP在商店的应用排名,往往在不同的应用商店会有不同的AppName,需求方要求,某一个名字可能对应多个渠道。应为企业级应用会选择在上线的APP最后一步选择加密方案,所以修改App名称应该放在加密之前,由此有以下打包方案。
本文主要讲解多渠道打包方案,打包的准备工作不在此篇展开。
准备工作
- 根据市场要求的AppName 的包
- 对应包的加密工作
产物目录如下规则存放
···package文件夹
·
······A文件夹
·
·····name1.apk 自定义文件名
·····该文件名对应的渠道配置信息······B文件夹
·
·····name2.apk 自定义文件名
·····该文件名对应的渠道配置信息
····python脚本
以上文件目录详情如下图所示
根目录的python脚本如下
说明:主要是遍历每个文件夹中的apk包和对应的渠道信息生成对应的包放在根据文件名生成的文件夹中
最后将中间文件删除
注:本打包方案适用于signerVersion v1的签名方式
#!/usr/bin/python# coding=utf-8import zipfileimport shutilimport os# 空文件 便于写入此空文件到apk包中作为channel文件src_empty_file = 'info/czt.txt'# 创建一个空文件(不存在则创建)#f = open(src_empty_file,'w') #f.write('111')#f.close()# 获取当前目录中所有的apk源包src_apks = []def eachFile2(filepath): print "我要读取的文件路径"+filepath eachFile3(filepath)def eachFile(filepath): pathDir = os.listdir(filepath) for allDir in pathDir: child = os.path.join('%s/%s/' % (filepath, allDir)) # print child if os.path.isdir(child): eachFile2(child)def eachFile3(path): dirs = os.listdir(path) print 'eachFile3' for file in dirs: dirs_cook = path+'/'+file print os.path.isfile(dirs_cook) if os.path.isfile(dirs_cook): extension = os.path.splitext(file)[1][1:] if extension in 'apk': src_apks.append(file) print '执行正常'# python3 : os.listdir()即可,这里使用兼容Python2的os.listdir('.')#获取当前文件夹路径 filePath = os.path.split(os.path.realpath(__file__))[0]#执行方法eachFile(filePath)for file in os.listdir('.'): if os.path.isfile(file): extension = os.path.splitext(file)[1][1:] if extension in 'apk': src_apks.append(file)#获取渠道列表channel_file = 'info/channel.txt'f = open(channel_file)lines = f.readlines()f.close()for src_apk in src_apks: # file name (with extension) src_apk_file_name = os.path.basename(src_apk) # 分割文件名与后缀 temp_list = os.path.splitext(src_apk_file_name) # name without extension src_apk_name = temp_list[0] # 后缀名,包含. 例如: ".apk " src_apk_extension = temp_list[1] #分割版本号 mylist = src_apk_name.split('-') version = mylist[1] # 创建生成目录,与文件名相关 output_dir = src_apk_name + '/' # 目录不存在则创建 if not os.path.exists(output_dir): os.mkdir(output_dir) # 遍历渠道号并创建对应渠道号的apk文件 for line in lines: # 获取当前渠道号,因为从渠道文件中获得带有\n,所有strip一下 target_channel = line.strip() f = open(src_empty_file,'w') f.write(target_channel) f.close() # 拼接对应渠道号的apk target_apk = output_dir + mylist[0] + "-" + target_channel + "-" + mylist[1] + src_apk_extension # 拷贝建立新apk shutil.copy(src_apk, target_apk) # zip获取新建立的apk文件 zipped = zipfile.ZipFile(target_apk, 'a', zipfile.ZIP_DEFLATED) # 初始化渠道信息 empty_channel_file = "META-INF/channel" # 写入渠道信息 #zipped.write(src_empty_file, empty_channel_file) print(target_channel) zipped.writestr(empty_channel_file, target_channel) # 关闭zip流 zipped.close()
暂存后续文件目录补充。
阅读全文
0 0
- Android分渠道多应用名打包方案
- Gradle分渠道/包名/应用名打包Apk
- Android分渠道打包
- Android 分渠道打包原理
- Android Studio分渠道打包
- Android 渠道打包优化方案
- android build文件分渠道打包
- 分渠道打包
- 【Android】使用Gradle实现分渠道打包,指定应用名称,应用图标,应用标识和环境切换
- Android 分渠道批量打包 常用插件工具
- Android studio 代码混淆、分渠道打包和反编译
- Android studio 使用Grandle进行分渠道打包
- Android使用友盟进行分渠道打包和统计
- android:获取渠道名
- android渠道批量打包
- 为Android应用增加渠道信息 自动化不同渠道的打包过程
- 为Android应用增加渠道信息 自动化不同渠道的打包过程
- 为Android应用增加渠道信息 自动化不同渠道的打包过程
- git 配置增强版log
- 二维数组中的查找
- Win7 U盘安装Ubuntu16.04
- mysql中文问题
- (28)接口
- Android分渠道多应用名打包方案
- 1306: 找用户名
- #507. 「LibreOJ NOI Round #1」接竹竿 dp
- SSH连接服务器+让服务器记住密码及IP
- 替换空格
- 用Java代码自动添加按钮
- 判断屏幕有没有设置解锁密码
- 执行Shiro logout后,报如下错误: org.apache.shiro.session.UnknownSessionException: There is no session with id
- matlab与机器学习(二)程序基本操作(含代码解析)