linux替换包的脚本,Andorid 自动替换logo打包脚本(支持windows和linux)
import zipfile #导入文件解压模块
import os,sys #导入os模块
import xml.dom.minidom #导入XML相关模块
from xml.dom.minidom import parse #导入XML相关模块
import shutil #导入文件处理模块
iconAttrName = "android:icon"#android的icon
roundIconAttrName = "android:roundIcon"#高版本上会有一个圆形的icon
outPath = sys.path[0]"/packUtil/"#解压目录
zipFileName = "yuanyuan.zip"#源文件的压缩文件
fileName = "yuanyuan"#解压后的文件目录
manifestPath = "/app/src/main/AndroidManifest.xml"#android配置文件目录
resPath = "/app/src/main/res/"#资源文件的目录
replaceLogoName = "ic_launcher.png"#替换的logo名称
replaceRoundLogoName = "ic_launcher_round.png"#替换的圆形logo名称
androidManifestTag = "application"#Android配置清单文件
cmd_gen_apk = "gradlew assembleRelease"#生成android包的命令,生成目录/app/build/outputs/apk/release/app-release.apk,
#找到application里面的根节点,获取到icon和roundicon的对应的图片名称
def parseXmlAndReplaceLogo(xmlPath):
domTree = parse(xmlPath)
rootNode = domTree.documentElement
applicationInfo = rootNode.getElementsByTagName(androidManifestTag)
app = applicationInfo[0]
if app.hasAttribute(iconAttrName):
print(app.getAttribute(iconAttrName))
replaceIcon(app.getAttribute(iconAttrName),1)
if app.hasAttribute(roundIconAttrName):
print(app.getAttribute(roundIconAttrName))
replaceIcon(app.getAttribute(roundIconAttrName),2)
#判断图片的位置,一般是在mipmap中,但是不排除部分开发者的不规范,放在drawable下面
#获取到路径和图片名称
def replaceIcon(dirAndName,type):
if "drawable" in dirAndName:
replaceMipMap(dirAndName.split("/")[1],type,"drawable")
elif "mipmap" in dirAndName:
replaceMipMap(dirAndName.split("/")[1],type,"mipmap")
else:
print("未找到相对应的图片")
#开始替换图片,logo文件只支持png
def replaceMipMap(logoFileName,type,dirstart):
print("开始替换文件..."+logoFileName)
resAllPath = outPath+fileName+resPath
resDirs = os.listdir(resAllPath)
newFileName = replaceLogoName
if type==2:
newFileName = replaceRoundLogoName
for f in resDirs:
if(f.startswith(dirstart)):
print("获取到文件目录:"+f)
print("移除文件:"+resAllPath+f+"/"+logoFileName+".png")
logoFilePath = resAllPath+f+"/"+logoFileName+".png"
if(os.path.exists(logoFilePath)):
os.remove(logoFilePath)
else:
continue
root = os.getcwd()
if(f.endswith("hdpi")):
shutil.copy(root+"/icon/icon-hdpi/"+newFileName,resAllPath+f+"/"+logoFileName+".png")
elif(f.endswith("ldpi")):
shutil.copy(root+"/icon/icon-ldpi/"+newFileName,resAllPath+f+"/"+logoFileName+".png")
elif(f.endswith("mdpi")):
shutil.copy(root+"/icon/icon-mdpi/"+newFileName,resAllPath+f+"/"+logoFileName+".png")
elif(f.endswith("xhdpi")):
shutil.copy(root+"/icon/icon-xhdpi/"+newFileName,resAllPath+f+"/"+logoFileName+".png")
elif(f.endswith("xxhdpi")):
shutil.copy(root+"/icon/icon-xxhdpi/"+newFileName,resAllPath+f+"/"+logoFileName+".png")
elif(f.endswith("xxxhdpi")):
shutil.copy(root+"/icon/icon-xxxhdpi/"+newFileName,resAllPath+f+"/"+logoFileName+".png")
else:
print("未找到对应尺寸的图片替换")
print("替换完成。。。")
#检查java环境配置
def configJavaEnv():
print("检查java环境")
conDomTree = parse("config.xml")
rootNode = conDomTree.documentElement
javaPath = rootNode.getElementsByTagName("javaPath")[0].childNodes[0].data
print("找到java环境位置:"+javaPath)
return javaPath
#写入环境配置
def writeJavaEnvToProperties(value):
file = open("gradle.properties",mode="r+")
testline = "org.gradle.java.home="+value
isConfig = False
for line in file:
if(testline==line.strip()):
isConfig = True
break;
if(not isConfig):
file.writelines("\n"+testline)
file.flush()
file.close()
print("已写入配置文件")
#改变工作目录到android Project目录
def changeDir(workPath):
os.chdir(workPath)
#生成安装包
def genReleaseApk():
os.system(cmd_gen_apk)
print("开始解压压缩包文件...")
file = zipfile.ZipFile(zipFileName,"r")
file.extractall(path=outPath)
file.close()
print("文件解压完毕,查找配置文件AndroidManifest文件...")
xmlFilePath = outPath+fileName+manifestPath
parseXmlAndReplaceLogo(xmlFilePath)#解析xml并替换图标
#配置javahome
gradleJdkPath = configJavaEnv()
print("切换工作目录...")
workPath = sys.path[0]+"/"+fileName
changeDir(workPath)
print("准备写入配置文件...")
writeJavaEnvToProperties(gradleJdkPath)
#生成安装包
genReleaseApk()
linux替换包的脚本,Andorid 自动替换logo打包脚本(支持windows和linux)相关推荐
- linux win im,IM即时通讯软件“喧喧”介绍:支持Windows、Linux、Mac系统
喧喧是一款免费.开源.安全的IM即时通信软件,它支持Windows.Linux.Mac系统,Linux平台提供64位/32位的.tar.gz..deb..rpm软件包下载,兼容Ubuntu和CentO ...
- 解决Linux依赖包的烦恼,教你如何打包依赖,覆盖常用Linux
前言 有时候遇到Linux无法连接互联网的时候,安装软件就成了一个很头大的麻烦事,各种依赖安装,那么怎么去解决这个问题呢?文章末有一键脚本 打包,是一个不错的选择,下面开始实践! 目录 ------- ...
- 条形码识别软件linux,条形码读取器Barcode Reader Toolkit 2021全新升级!支持Windows和Linux,算法升级!...
Barcode Reader Toolkit for Windows是一个工具包,允许开发人员在其应用程序中添加条形码检测.该工具包将图像文件或内存位图作为输入,并返回有关每个条形码的信息,包括值,类 ...
- windows兼容Linux php,支持windows与linux的php计划任务的实现方法
本文实例讲述了支持windows与linux的php计划任务的实现方法.包括了在winows下利用winodows计划任务来操作,还有在linux中利用linux的方法来实现.分享给大家供大家参考.具 ...
- 免费的XShell替代品,同时支持Windows,macOS,Linux!又来一款国产良心工具....
来源:toutiao.com/i6694563184428188171 引言 FinalShell是一款免费的国产的集SSH工具.服务器管理.远程桌面加速的良心软件,同时支持Windows,macOS ...
- jadx 支持 Windows、Linux、 macOS,能够帮我们打开.apk, .dex, .jar,.zip等格式的文件
作者:JavaGuide 链接:https://www.zhihu.com/question/20264247/answer/2306405289 来源:知乎 著作权归作者所有.商业转载请联系作者获得 ...
- X86/ARM USB2.0/USB3.0转网口,支持Windows、Linux、Android、wince
USB to LAN方案 1.方案介绍 2.准备测试资料 3.linux系统下测试 4.android系统下测试 USB转LAN方案IC有: USB 3.0千兆以太网 ( AX88179) ...
- GmBox – 支持批量下载谷歌音乐MP3的客户端 (免费开源支持Windows、Linux与Mac)
谷歌音乐对于国人来说绝对是一个伟大的服务,它不仅所有MP3都是合法版权,而且还完全免费开放给大家下载.之前我们介绍过一款 谷歌音乐盒 的PC客户端,可以比网页版更方便地试听与下载正版音乐,可惜它只能在 ...
- 【githubdailyshare】可定制、现代化的跨平台文件管理器:Xplorer。支持 Windows、Linux、macOS
印尼高中生 Kimlim 开发的一款可定制.现代化的跨平台文件管理器:Xplorer. 支持 Windows.Linux.macOS 等主流桌面系统,允许直接预览图片.文档.视频,免费开放,基于 Ap ...
最新文章
- 9 大主题卷积神经网络(CNN)的 PyTorch 实现
- 注册窗口类RegisterClassEx AfxRegisterWndClass
- python编程入门 电子书-Python编程从入门到实践PDF电子书
- 图解VC++ opengl环境配置和几个入门例子
- svn 命令行_小型工作室搭建SVN经验
- [android]netd与NetworkManagementService初印象
- 动态硬盘转基本盘转换器
- Cisco防火墙概述和产品线
- python编程语言期中试题_MOOC Python编程的第六周测试,MOOCPython,语言,程序设计,测试题...
- 【整理】关于Android图形系统的一些事实真相
- 浅论汽车电子行业的汽车开放系统架构AUTOSAR
- AI赋能智慧图书馆,能否出现真正的书天堂?
- android 二维码扫描动画实现
- CSS图片保持原比例
- dll修复精灵无法链接服务器,教你一键dll修复精灵怎么使用
- android mmm 编译错误,Android 7.1 使用mmm编译模块失败
- 计算机组成原理-作业1
- 重拾Eclipse开发
- MD5.js,前端MD5加密
- Eclipse开发Android各种怪病
热门文章
- light oj 1011Marriage Ceremonies
- hibernate的native sql查询
- [转]Android最佳实践之:StrictMode介绍
- What is Gameplay
- 多线程同步之 WaitableTimer (等待定时器对象)[续三]
- Linux查找文件内容(grep)
- linux shell 下载并执行
- linux c 命令行参数处理函数 getopt()和getopt_long()
- wireshark 总体结构
- C语言实现修改文本文件中的特定行