123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- import file_utils
- import common_utils
- import xml_utils
- import os.path
- import xml.etree.ElementTree as ET
- namespaces = {'android' : 'http://schemas.android.com/apk/res/android'}
- encoding = 'UTF-8'
- def execute(game, sdk, config):
- if not checkConfig(config):
- return 1
- subChannel = config['subChannel']
- createJmhyProperties(game, sdk, subChannel, config)
- if config['addLauncher']:
- addLauncher(game, sdk, subChannel, config)
- common_utils.changeApplication(game, sdk, subChannel, config, 'com.inner.sdk.ui.YiJieApplication')
- return 0
- def checkConfig(config):
- '''
- 检查配置
- '''
- if 'properties' not in config:
- print('properties not exists in config')
- return False
- properties = config['properties']
-
- if 'agent' not in properties or 'version' not in properties:
- print('agent or version not exists in properties')
- return False
- '''if 'appid' not in config or 'appkey' not in config:
- print('appid or appkey not exists in config')
- return False'''
- return True
- def createJmhyProperties(game, sdk, subChannel, config):
- '''
- 创建jmhy.properties
- '''
- print('create jmhy.properties')
- propValue = config['properties']
- decompliePath = file_utils.getDecompliePath(game, sdk, subChannel, config['cache'])
- properties = os.path.join(decompliePath, 'assets', 'jmhy.properties')
- content = ''
- for key in propValue:
- content = '%s%s=%s\n' % (content, key, propValue[key])
- file_utils.createFile(properties, content)
- return 0
- def addLauncher(game, sdk, subChannel, config):
- '''
- 添加启动图
- '''
- decompliePath = file_utils.getDecompliePath(game, sdk, subChannel, config['cache'])
- # 修改主文件信息
- print('change launcher config...')
- manifest = os.path.join(decompliePath, 'AndroidManifest.xml')
- activity = xml_utils.getLauncherActivityName(manifest)
- if activity == 'com.inner.sdk.ui.LauncherActivity':
- print('add launcher already exist...')
- return 1
- orientation = xml_utils.getScreenOrientation(manifest)
- activity = xml_utils.removeLauncherActivity(manifest)
- addLauncherActivity(manifest, orientation)
- # 修改跳转的
- launcherActivity = os.path.join(decompliePath, 'smali', 'com', 'inner', 'sdk', 'ui', 'LauncherActivity.smali')
- file_utils.replaceContent(launcherActivity, '{class}', activity)
- print('change launcher %s to %s' % (activity, 'com.inner.sdk.ui.LauncherActivity'))
- #config['oldLauncher'] = activity
- return 0
- def addLauncherActivity(manifest, screenOrientation):
- '''
- 添加启动的activity
- '''
- for key in namespaces:
- ET.register_namespace(key, namespaces[key])
- tree = ET.parse(manifest)
- root = tree.getroot()
- # activity
- activity = ET.Element('activity', {'android:name' : 'com.inner.sdk.ui.LauncherActivity',
- 'android:configChanges' : 'orientation|screenSize|keyboardHidden',
- 'android:screenOrientation' : screenOrientation})
- intent = ET.Element('intent-filter')
- action = ET.Element('action', {'android:name' : 'android.intent.action.MAIN'})
- category = ET.Element('category', {'android:name' : 'android.intent.category.LAUNCHER'})
- intent.append(action)
- intent.append(category)
- activity.append(intent)
-
- application = root.find('application')
- application.insert(0, activity)
- tree.write(manifest, encoding)
|