android-release.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #!/usr/bin/env python3
  2. import os
  3. import shutil
  4. import subprocess
  5. import string
  6. import json
  7. import argparse
  8. import sys
  9. # 主要功能:
  10. # 1、修改VersionConfig.js, AllSDKConfig.js
  11. # VersionConfig.js: 修改APP_VERSION, RES_VERSION, CONF_VERSION, OPEN_DEBUG, RELEASE_SERVER_NAME
  12. # AllSDKConfig.js: 仅保留空999渠道配置
  13. # 2、根据是否调试,确定是否删除debug相关目录
  14. # 3、删除非android平台的代码
  15. # ex: python3 android-release.py --debug --appver 3.13.1 --resver 313001001 --confver 50 --hxCode 0 --servername TEST_FORMAL_SERVER
  16. # ex: python3 android-release.py --appver 3.13.1 --resver 313001 --confver 50 --hxCode 0 --servername FORMAL_SERVER
  17. parser = argparse.ArgumentParser()
  18. parser.add_argument('--debug', dest='debug', action='store_true', help = 'open debug')
  19. parser.add_argument('--appver', dest='appver', default=None, help = 'application version')
  20. parser.add_argument('--resver', dest='resver', default=None, help = 'resources version')
  21. parser.add_argument('--confver', dest='confver', default=None, help = 'config version')
  22. parser.add_argument('--hxCode', dest='hxCode', default=None, help = 'hx code')
  23. parser.add_argument('--servername', dest='servername', default=None, help = 'release server name')
  24. args = parser.parse_args()
  25. # 判断GIT_ROOT是否存在
  26. GIT_ROOT = os.environ.get('GIT_ROOT')
  27. if not GIT_ROOT:
  28. print('环境变量中未找到 GIT_ROOT')
  29. exit()
  30. # 目录
  31. project_root = os.path.join(GIT_ROOT, 'mj-creator')
  32. # 处理环境
  33. def handleEvn ():
  34. # 封包目录
  35. if not os.path.exists(project_root):
  36. print('封包目录不存在')
  37. exit()
  38. def handleVersionConfig():
  39. debug = 'false'
  40. if args.debug:
  41. debug = 'true'
  42. # 参数
  43. values = {
  44. 'appVersion' : args.appver,
  45. 'resVersion' : args.resver,
  46. 'hxCode' : args.hxCode,
  47. 'openDebug' : debug,
  48. 'releaseServerName' : args.servername,
  49. }
  50. # 模版
  51. t = string.Template("""
  52. module.exports = {
  53. init (ns) {
  54. ns.APP_VERSION = '${appVersion}';
  55. ns.RES_VERSION = ${resVersion};
  56. ns.HX_CODE = ${hxCode};
  57. ns.OPEN_DEBUG = ${openDebug};
  58. ns.RELEASE_SERVER_NAME = '${releaseServerName}';
  59. }
  60. };
  61. """)
  62. # 写文件
  63. path = os.path.join(project_root, 'assets/script/VersionConfig.js')
  64. with open(path, 'wt') as f:
  65. f.write(t.substitute(values))
  66. def handleSDKConfig():
  67. s = """module.exports = {
  68. ch999: {
  69. 'channel': '999'
  70. }
  71. };"""
  72. # 写文件
  73. path = os.path.join(project_root, 'assets/script/AllSDKConfig.js')
  74. with open(path, 'wt') as f:
  75. f.write(s)
  76. def delModules():
  77. isdebug = args.debug
  78. if not isdebug:
  79. # 删除debug
  80. src_dir = os.path.join(project_root, 'assets/script/debug')
  81. src_meta = os.path.join(project_root, 'assets/script/debug.meta')
  82. if os.path.exists(src_dir):
  83. shutil.rmtree(src_dir)
  84. if os.path.exists(src_meta):
  85. os.remove(src_meta)
  86. res_dir = os.path.join(project_root, 'assets/resources/debug')
  87. res_meta = os.path.join(project_root, 'assets/resources/debug.meta')
  88. if os.path.exists(res_dir):
  89. shutil.rmtree(res_dir)
  90. if os.path.exists(res_meta):
  91. os.remove(res_meta)
  92. # 删除非android的模块
  93. platform_root = os.path.join(project_root, 'assets/script/platform')
  94. for dirName in os.listdir(platform_root):
  95. path = os.path.join(platform_root, dirName)
  96. if os.path.isdir(path):
  97. if dirName != 'android':
  98. shutil.rmtree(path)
  99. os.remove(path + '.meta')
  100. def main():
  101. handleEvn()
  102. # 根据配置表生成version op sdk
  103. handleVersionConfig()
  104. handleSDKConfig()
  105. # 删除多余文件
  106. delModules()
  107. if __name__ == "__main__":
  108. main()