Ver código fonte

增加抖游渠道包脚本

yhz 5 anos atrás
pai
commit
327578a64a
1 arquivos alterados com 93 adições e 0 exclusões
  1. 93 0
      package_channel_douyou.py

+ 93 - 0
package_channel_douyou.py

@@ -0,0 +1,93 @@
+import file_utils
+import config_utils
+import sys
+import os.path
+import json
+
+def packageChannel():
+    if len(sys.argv) < 2:
+        print('argument is missing')
+        return 1
+
+    channelConfig = sys.argv[1]
+
+    jsonText = file_utils.readFile(channelConfig)
+    config = json.loads(jsonText)
+
+    print('*************config*****************')
+    print(jsonText)
+    print('************************************')
+
+    # 检查配置
+    if not checkConfig(config):
+        return 1
+
+    # 检查文件
+    gameApk = config['package']
+    if not os.path.exists(gameApk):
+        print('%s not exists' % gameApk)
+        return 1
+
+    if supportSignV2(gameApk):
+        packageChannelV2(gameApk, config)
+        return 0
+    else:
+        print('apk not support Signature Scheme v2' % gameApk)
+        return 1
+
+def supportSignV2(gameApk):
+    '''
+    验证是否APK Signature Scheme v2
+    '''
+    apksigner = file_utils.getApksignerPath()
+    ret = getJavaResult(apksigner, 'verify --verbose "%s"' % gameApk)
+
+    if '(APK Signature Scheme v2): true' in ret:
+        return True
+    return False
+
+def packageChannelV2(gameApk, config):
+    print('add channel package ...')
+    walle = file_utils.getWallePath()
+
+    if not os.path.exists(config['outPath']):
+        os.makedirs(config['outPath'])
+
+    successCount = 0
+    failureCount = 0
+    channels = config['channel']
+    for channel in channels:
+        print('add channel package %s --> %s...' % (channel['agent'], channel['outName']))
+        signedApk = os.path.join(config['outPath'], channel['outName'] + '.apk')
+        ret = file_utils.execJarCmd(walle, 'put -c %s "%s" "%s"' % (channel['agent'], gameApk, signedApk))
+        if ret:
+            failureCount += 1
+        else:
+            successCount += 1
+
+    print('success %d, failure %d' % (successCount, failureCount))
+
+def checkConfig(config):
+    if 'package' not in config:
+        print('package not exists in config')
+        return False
+
+    if 'outPath' not in config:
+        print('outPath not exists in config')
+        return False
+
+    if 'channel' not in config:
+        print('channel not exists in config')
+        return False
+
+    return True
+
+def getJavaResult(jar, cmd):
+    return getCmdResult('java -jar "%s" %s' % (jar, cmd))
+
+def getCmdResult(cmd):
+    p = os.popen(cmd)
+    content = p.read()
+    return content
+
+packageChannel()