xipu.py
4.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import shutil
import os
import plistlib
import config
import json
import packageProj
import commands
from mod_pbxproj import XcodeProject
gameProjName = config.gameProjName
channelName = "xipu"
#copy dir xcodeproj
copyNewDirName = gameProjName + '_' + channelName + '.xcodeproj'
currentPath = os.path.abspath('.')
currentPath += '/' + copyNewDirName
if os.path.exists(currentPath):
shutil.rmtree(currentPath)
shutil.copytree(gameProjName + '.xcodeproj',currentPath)
project = XcodeProject.Load(copyNewDirName + '/project.pbxproj')
project.add_other_ldflags('-ObjC')
channelRootPath = config.channelRootPath#'poolsdk_file'
frameworksPath = '$(PROJECT_DIR)/' + channelRootPath + '/poolsdk_' + channelName + '/SDK'
print(frameworksPath);
#add header search path
project.add_header_search_paths(frameworksPath, recursive=False)
project.add_header_search_paths(frameworksPath + '/ResourceCode', recursive=False)
project.add_header_search_paths(frameworksPath + '/ResourceCode/JGStatistics', recursive=False)
project.add_header_search_paths(frameworksPath + '/ResourceCode/MMCategory', recursive=False)
project.add_header_search_paths(frameworksPath + '/ResourceCode/PieChartView', recursive=False)
#add framework search path
project.add_framework_search_paths(frameworksPath, recursive=False)
project.add_framework_search_paths(frameworksPath + '/ResourceCode/MGBSHudFramework', recursive=False)
#add library search path
project.add_library_search_paths(frameworksPath, recursive=False)
project.add_library_search_paths(frameworksPath + '/ResourceCode/JGStatistics', recursive=False)
#add poolsdk_xy dir all file into project
project.remove_group_by_name('poolsdk')
frameworkRelativePath = project.add_folder(channelRootPath + '/poolsdk_' + channelName + '/SDK')
#ignore_unknown_type
project.add_file_if_doesnt_exist('pool_setting',parent=frameworkRelativePath, weak=True,ignore_unknown_type=True)
systemFrameworks = project.get_or_create_group('Frameworks')
#add system framework
project.add_file_if_doesnt_exist('System/Library/Frameworks/Security.framework',parent=systemFrameworks, weak=True, tree='SDKROOT')
project.add_file_if_doesnt_exist('System/Library/Frameworks/CoreGraphics.framework',parent=systemFrameworks, weak=True, tree='SDKROOT')
project.add_file_if_doesnt_exist('System/Library/Frameworks/AdSupport.framework',parent=systemFrameworks, weak=True, tree='SDKROOT')
project.add_file_if_doesnt_exist('System/Library/Frameworks/CoreTelephony.framework',parent=systemFrameworks, weak=True, tree='SDKROOT')
project.add_file_if_doesnt_exist('System/Library/Frameworks/SystemConfiguration.framework',parent=systemFrameworks, weak=True, tree='SDKROOT')
#add system dylib
systemLibs = project.get_or_create_group('Libraries')
project.add_file_if_doesnt_exist('/usr/lib/libz.dylib',parent=systemLibs, weak=True, tree='<absolute>')
project.add_file_if_doesnt_exist('/usr/lib/libresolv.dylib',parent=systemLibs, weak=True, tree='<absolute>')
project.add_file_if_doesnt_exist('/usr/lib/libsqlite3.dylib',parent=systemLibs, weak=True, tree='<absolute>')#absolute path
#modify info.plist reference path
project.add_single_valued_flag('INFOPLIST_FILE',channelRootPath + '/poolsdk_' + channelName + '/Info.plist')
project.add_single_valued_flag('ENABLE_BITCODE', 'NO')
readInfoPlistFilePath = channelRootPath + '/poolsdk/Info.plist'
writeInfoFilePath = channelRootPath + '/poolsdk_' + channelName + '/Info.plist'
infoContent = plistlib.readPlist(readInfoPlistFilePath)
channelInfoPath = channelRootPath + '/poolsdk_' + channelName + '/Info_' + channelName + '.plist'
#read pool_setting file
settingFile = open(channelRootPath + '/poolsdk_' + channelName + '/SDK/pool_setting','rw')
try:
settingFileContent = settingFile.read( )
finally:
settingFile.close( )
#json op
jsonStr = json.loads(settingFileContent)
#modify bundle id
project.add_single_valued_flag('PRODUCT_BUNDLE_IDENTIFIER',jsonStr["appScheme"])
identifier = jsonStr["identifier"];
url_schemes = jsonStr["url_schemes"];
#set info.plist channel parame
absolutionInfoPath = os.path.abspath('.') + '/' + channelInfoPath
commands.getstatusoutput("/usr/libexec/PlistBuddy -c 'Set :CFBundleURLTypes:0:CFBundleURLName '" + identifier + ' ' + absolutionInfoPath)
commands.getstatusoutput("/usr/libexec/PlistBuddy -c 'Set :CFBundleURLTypes:0:CFBundleURLSchemes:0 '" + url_schemes + ' ' + absolutionInfoPath)
#read channel info plist content
channelInfoContent = plistlib.readPlist(channelInfoPath)
#update and add info.plist content
infoContent.update(channelInfoContent)
#write
plistlib.writePlist(infoContent,writeInfoFilePath)
project.save()