
1.编写app打包为ipa的 shell脚本,将下面代码保存为app2ipa.sh。
[plain] view plain copy #!/bin/sh m_appPath="" m_ipaPath="" m_showMessage="NO" make_app_to_ipa() { app_path= ipa_path= if["$m_showMessage"=="YES"] then /usr/bin/xcrun-sdkiphoneosPackageApplication-v"$app_path"-o"$ipa_path" else /usr/bin/xcrun>/dev/null2>&1-sdkiphoneosPackageApplication-v"$app_path"-o"$ipa_path" fi echo">>>>打包ipa完成:$ipa_path" } showHelp() { echo"Convertapptoipa" echo"optionalarguments:" echo"-h,helpshowthishelpmessageandexit" echo"-a,appappfilepath" echo"-i,ipaipafilepath" echo"-m,msgdisplaybuildmessage,{NO,YES}" exit } #//main-------------------------------- until[$#-eq0] do casein -a|app) m_appPath= shift ;; -i|ipa) m_ipaPath= shift ;; -m|msg) m_showMessage= shift ;; -h|help) showHelp ;; *) echo"errorunkNowargs:" ;; esac shift done #开始构建 echo">>>>>>>>>>BuildBegin" make_app_to_ipa$m_appPath$m_ipaPath echo">>>>>>>>>>BuildFinished." 2. 修改cocos2d-x-3.0\tools\cocos2d-console\plugins\project_compile 下的project_compile.py的build_ios方法,build_ios最终代码如下,实际上就是遍历targets循环编译,注意事项:iOS的target 中必须包含 iOS 关键字。Mac的target必须包含 Mac 关键字.[python] view plain copy defbuild_ios(self): ifnotself._platforms.is_ios_active(): return ifnotcocos.os_is_mac(): raisecocos.CCPluginError("PleasebuildonMacOSX") self.check_ios_mac_build_depends() project_dir=self._project.get_project_dir() ios_project_dir=self._platforms.project_path() build_mode=self._mode ifself._project._is_script_project(): ifbuild_mode=='deBUG': output_dir=os.path.join(project_dir,CCPluginCompile.OUTPUT_DIR_SCRIPT_DEBUG,'ios') else: output_dir=os.path.join(project_dir,CCPluginCompile.OUTPUT_DIR_SCRIPT_RELEASE,CCPluginCompile.OUTPUT_DIR_NATIVE,build_mode,'ios') projectPath=os.path.join(ios_project_dir,self.xcodeproj_name) pbxprojectPath=os.path.join(projectPath,"project.pbxproj") f=file(pbxprojectPath) contents=f.read() section=re.search(r"BeginPBXProjectsection.*EndPBXProjectsection",contents,re.S) ifsectionisNone: message="Can'tfindioStarget" raisecocos.CCPluginError(message) targets=re.search(r"targets=(.*);",section.group(),re.S) iftargetsisNone: message="Can'tfindioStarget" raisecocos.CCPluginError(message) targetname=None cfg_obj=self._platforms.get_current_config() ifcfg_obj.target_nameisnotNone: targetname=cfg_obj.target_name else: names=re.split("\*",targets.group()) fornameinnames: if"iOS"inname: targetname=str.strip(name) cocos.Logging.info(">>>>>>>>targetname=%s"%targetname) iftargetnameisNone: message="Can'tfindioStarget" raisecocos.CCPluginError(message) ifos.path.isdir(output_dir): target_app_dir=os.path.join(output_dir,"%s.app"%targetname[:targetname.find('')]) ifos.path.isdir(target_app_dir): shutil.rmtree(target_app_dir) cocos.Logging.info("building") command=''.join([ "xcodebuild", "-project", "\"%s\""%projectPath, "-configuration", "%s"%'DeBUG'ifself._modeis'deBUG'else'Release', "-target", "\"%s\""%targetname, "-sdk", "iphonesimulator", "-archi386", "CONfigURATION_BUILD_DIR=%s"%(output_dir) ]) self._run_cmd(command) #app转ipa app_path=os.path.join(output_dir,"%s.app"%targetname[:targetname.find('')]) ipa_path=os.path.join(output_dir,"%s.ipa"%targetname[:targetname.find('')]) command=''.join([ "app2ipa.sh", "-a", "\"%s\""%app_path, "-i", "\"%s\""%ipa_path, "-m" ]) cocos.Logging.info(">>>>>runcommand%s"%command) self._run_cmd(command) fileList=os.Listdir(output_dir) forfilenameinfileList: name,extention=os.path.splitext(filename) ifextention=='.a': filename=os.path.join(output_dir,filename) os.remove(filename) ifextention=='.app'andname==targetname: filename=os.path.join(output_dir,filename) newname=os.path.join(output_dir,name[:name.find('')]+extention) os.rename(filename,newname) self._iosapp_path=newname ifself._no_res: self._remove_res(self._iosapp_path) cocos.Logging.info("buildsucceeded.")
好了,我们可以使用如下命令编译了
Python cocos.py compile -s /projects/MyGame/proj.ios_mac -m deBUG -p iOS
总结以上是内存溢出为你收集整理的Cocos2d-x3.0 iOS 一键编译多个target并打包ipa全部内容,希望文章能够帮你解决Cocos2d-x3.0 iOS 一键编译多个target并打包ipa所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)