123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- import file_utils
- import package_utils_yfsdk
- import os.path
- import sys
- import json
- import importlib
- def packageWeb():
- if len(sys.argv) < 2:
- print('argument is missing')
- return 1
- # 打包配置的路径
- packageConfig = sys.argv[1]
- jsonText = file_utils.readFile(packageConfig)
- config = json.loads(jsonText)
- print('*************config*****************')
- print(jsonText)
- print('************************************')
- package(config, config['sdk'])
- def package(config, sdk):
- print('use script yfsdk')
- jsonConfig = {}
- game = config['app']
- subChannel = None
- if 'subChannel' in config:
- subChannel = config['subChannel']
- jsonConfig['subChannel'] = config['subChannel']
- # 必须参数
- jsonConfig['packageName'] = config['packageName']
- jsonConfig['name'] = config['name']
- # 可选参数
- if 'outName' in config:
- jsonConfig['outName'] = config['outName']
- if 'outPath' in config:
- jsonConfig['outPath'] = config['outPath']
- if 'changeIcon' in config:
- jsonConfig['changeIcon'] = toBoolean(config['changeIcon'])
- if 'addLauncher' in config:
- jsonConfig['addLauncher'] = toBoolean(config['addLauncher'])
- if 'versionCode' in config:
- jsonConfig['versionCode'] = config['versionCode']
- if 'versionName' in config:
- jsonConfig['versionName'] = config['versionName']
- if 'targetSdkVersion' in config:
- jsonConfig['targetSdkVersion'] = config['targetSdkVersion']
- if 'v2disable' in config:
- jsonConfig['v2disable'] = toBoolean(config['v2disable'])
- if 'aapt2disable' in config:
- jsonConfig['aapt2disable'] = toBoolean(config['aapt2disable'])
- # sdk相关参数
- if 'properties' in config:
- jsonConfig['properties'] = config['properties']
- # 生成配置文件
- createOrUpdateConfigFile(game, sdk, jsonConfig)
- # 拷贝资源
- copyRes(game, sdk, subChannel, config)
- # 打包
- package_utils_yfsdk.packConsole(game, sdk, subChannel)
- def toBoolean(booleanStr):
- if type(booleanStr) == bool:
- return booleanStr
- if booleanStr == 'true':
- return True
- return False
- def createOrUpdateConfigFile(game, sdk, jsonConfig):
- '''
- 更新配置文件
- '''
- if 'subChannel' not in jsonConfig:
- return 0
- print('createOrUpdateConfigFile ...')
- channelPath = file_utils.getChannelPath(game, sdk)
- configPath = os.path.join(channelPath, 'config.json')
- # configPath = os.path.join(file_utils.getCurrentPath(), 'test', 'test.json')
- if os.path.exists(configPath):
- # 更新数据
- jsonText = file_utils.readFile(configPath)
- config = json.loads(jsonText)
- count = 0
- if type(config) == list:
- for item in config:
- if item['subChannel'] == jsonConfig['subChannel']:
- print('find same config ...')
- del config[count]
- break
- count += 1
- config.append(jsonConfig)
- createConfigFile(config, configPath)
- elif type(config) == dict:
- if config['subChannel'] == jsonConfig['subChannel']:
- print('find same config ...')
- createConfigFile(jsonConfig, configPath)
- else:
- print('add a new config ...')
- config = [config, jsonConfig]
- createConfigFile(config, configPath)
- else:
- print('create a new config ...')
- createConfigFile([jsonConfig], configPath)
- def createConfigFile(jsonConfig, configPath):
- '''
- 创建配置文件
- '''
- jsonStr = json.dumps(jsonConfig, ensure_ascii=False)
- print('*************out config*************')
- print(jsonStr)
- print('************************************')
- file_utils.createFile(configPath, jsonStr)
- def copyRes(game, sdk, subChannel, config):
- '''
- 拷贝资源
- '''
- if subChannel is None:
- return 0
- channelPath = file_utils.getChannelPath(game, sdk)
- subChannelPath = os.path.join(channelPath, subChannel)
- if 'icon' in config and os.path.exists(config['icon']):
- mipmapSupport = ['mipmap-xhdpi', 'mipmap-xxhdpi', 'mipmap-xxxhdpi']
- for mipmap in mipmapSupport:
- iconPath = os.path.join(subChannelPath, 'icon', mipmap, 'common_sdk_icon.png')
- print('yfsdk copyRes from--> ' + config['icon'])
- print('yfsdk copyRes to--> ' + iconPath)
- file_utils.copyFile(config['icon'], iconPath)
- '''if 'switchIcon' in config and os.path.exists(config['switchIcon']):
- mipmapSupport = ['mipmap-xhdpi', 'mipmap-xxhdpi', 'mipmap-xxxhdpi']
- for mipmap in mipmapSupport:
- iconPath = os.path.join(subChannelPath, 'icon', mipmap, 'common_sdk_icon2.png')
- file_utils.copyFile(config['switchIcon'], iconPath)'''
- if 'splash' in config and os.path.exists(config['splash']):
- splashPath = os.path.join(subChannelPath, 'splash', 'drawable-hdpi', 'common_sdk_launcher_bg.jpg')
- file_utils.copyFile(config['splash'], splashPath)
- if 'copyList' in config:
- for item in config['copyList']:
- if item['toFile'] == '':
- continue
- if not os.path.exists(item['fromFile']):
- continue
- toFile = item['toFile']
- if toFile[:3] == 'res':
- toFile = 'image' + toFile[3:]
- resPath = getPackagePath(subChannelPath, toFile)
- file_utils.copyFile(item['fromFile'], resPath)
- if 'package' in config and os.path.exists(config['package']):
- newGameApk = config['package']
- gameApk = file_utils.getFullGameApk(game)
- file_utils.copyFile(newGameApk, gameApk)
- def getPackagePath(basePath, packageName):
- '''
- 包名对应的目录
- '''
- packageNameSplit = packageName.replace('\\', '/').split('/')
- newPath = basePath
- for item in packageNameSplit:
- newPath = os.path.join(newPath, item)
- return newPath
- #packageWeb()
|