脚本打包之python打apk

来源:互联网 发布:js判断 写法 编辑:程序博客网 时间:2024/05/18 03:46

打包平台是windows ,环境变量如有疑问请自行搜索

#打包平台是windows ,环境变量如有疑问请自行搜索import os, sys, os.pathimport shutilimport xml.dom.minidomimport timefrom xml.etree import ElementTree as ETfrom xml.etree.ElementTree import SubElementfrom xml.etree.ElementTree import Elementfrom xml.etree.ElementTree import ElementTreecurdir = os.path.split(os.path.realpath(__file__))[0]os.chdir(curdir)packageVersion = "1.0.0"  versionName = "1.0.0_100"  //资源目录version = "1.0.0"#拷贝资源源路径ResourcePath = "E://test/resource"packageName = "com.test.game"Android_Root_Path = "E://test/code_android"#拷贝资源目标路径Android_Res = Android_Root_Path + "/assets"//windows的cmd运行命令def run_cmd(cmdstr):        printlog(cmdstr)    ret = os.system(cmdstr)    if ret < 0:        printlog('run_cmd result = ' + str(ret))        exit(0)    else:        printlog('run_cmd result = ' + str(ret))def DownLoad_Resource(Path):    //如果有svn或者git更新文件,打包可以同步最新 我这里写的是svn    if os.path.isdir(Path):        run_cmd('svn cleanup %s' %Path)        run_cmd('svn revert --depth=infinity %s' %Path)        run_cmd('svn update %s' %Path)    else:printlog("resource is NULL")        sys.exit(1) DownLoad_Resource(code_Android,code_Android_URL)DownLoad_Resource(version_Release,version_Release_URL)#删除打包的旧资源shutil.rmtree(Android_Res,True,None)xmlns = 'http://schemas.android.com/apk/res/android'def copy_assert():    if os.path.exists(ResourcePath):        copy_tree_overlap(ResourcePath,Android_Res)    else:        printlog("resource is NULL")        sys.exit(1) #把游戏资源拷贝到android工程下copy_assert()def getOldPackageName(decompileDir):    manifestFile = decompileDir + '/AndroidManifest.xml'    ET.register_namespace('android', xmlns)    targetTree = ET.parse(manifestFile)    root = targetTree.getroot()    package = root.attrib.get('package')    old_package = package    return old_packagedef renameVersionCode(decompileDir, versionCode,versinName):        if versionCode is None or versionCode == '' or versinName is None or versinName == '' :        return    manifestFile = decompileDir + '/AndroidManifest.xml'    ET.register_namespace('android', androidNS)    targetTree = ET.parse(manifestFile)    root = targetTree.getroot()    version_code = '{http://schemas.android.com/apk/res/android}versionCode'    version_name = '{http://schemas.android.com/apk/res/android}versionName'    root.attrib[version_code] = versionCode    root.attrib[version_name] = versinName    targetTree.write(manifestFile, 'UTF-8')def renamePackageName(decompileDir, packageName):        if packageName is None or packageName == '':        return    manifestFile = decompileDir + '/AndroidManifest.xml'    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')    targetTree = ET.parse(manifestFile)    root = targetTree.getroot()    root.attrib['package'] = packageName    targetTree.write(manifestFile, 'UTF-8')# 修改 AndroidManifest.xml中的 versionCode 和 versionName##修改工程文件包名android_java_file_path = Android_Root_Path +"/"+"src/com/test/game/test.java"modifyFileContent(android_java_file_path, ".java", getOldPackageName(Android_Root_Path)+".R;", packageName+".R;")   ##if os.path.isfile(android_manifest_file):renamePackageName(Android_Root_Path,packageName)#版本号修改renameVersionCode(Android_Root_Path,packageVersion,version)#执行脚本bat = Android_Root_Path+"/BuildRelease_apk.bat"if os.path.isfile(bat):    run_cmd(bat +" " +"android" + " " + versionName);#运行windows批处理打包脚本#bat content    -------------bat windows --------------------------------------------------------#切换当前目录cd /d %~dp0ant cleanant release@echo off setlocal enabledelayedexpansion if not "%1" == "" (set platform=%1set versionName=%2set hour=%Time:~0,2%if hour leq 9 (set hour=0%TIME:~1,1%)echo !hour!if exist .\ApkOut (rmdir /s /q .\ApkOut)mkdir ApkOutset timestr=%Date:~0,4%_%Date:~5,2%_%Date:~8,2%_!hour!_%Time:~3,2%_!platform!echo !timestr!echo !versionName!copy /Y .\bin\Game-release.apk .\ApkOut\!timestr!_!versionName!_release.apkcopy /Y .\bin\Game-release-unsigned.apk .\ApkOut\!timestr!_!versionName!_unsigned.apk)----------------------------bat windows ---------------------------------------------------------------



0 0