Unity3D項目實戰筆記(10):Unity3D編譯IPA的PostEvents–節約時間利器

最近,SDK支付等接入差很少了,就從Unity3D生成IPA (企業版License), 然,須要手動執行的PostEvents居然多大10項+, 這些我默默的承受了1周時間,每次約浪費20分鐘-額外的。ios

     週末用了2天時間,研究一下官方的例子和雨鬆的相關博客2篇,總算是搞定了這件事情,開心!git

 

痛苦的前傳:

Unity3D導出爲XCode工程後,有以下任務須要作github

Plist 文件中api

<key>CFBundleDevelopmentRegion</key> 中文xcode

<string>zh_CN</string>微信

<key>CFBundleIdentifier</key> AppIDide

<string>com.aaa.${PRODUCT_NAME}</string>函數

<key>CFBundleShortVersionString</key> 版源碼分析

<string>1.0</string>學習

<key></key> 白名單

<array>

<string>weixin</string>

</array>

URL Schema

Build Setting

證書

FrameWorks

Header search

AppDelegate文件:

#import header.h

DoFinish

OpenURL

開心的實踐

       首先在Unity3D官方社區一番搜索、學習,大體明白要搞定這些繁瑣的事情,我不是一我的在戰鬥,有不少國際友人也頭疼於此,呵呵。

            有2個解決方案可供選擇 :

方案1: Unity3D官方的 開源的 XcodeAPIimage

方案2: 社區火熱的XUPorter 方案,連雨鬆都力挺(Unity3D研究院之IOS全自動編輯framework、plist、oc代碼(六十七))。

          另外,經過源碼分析,

Unity Ads

            居然髮指的用的是XUPorter方案的變種,而不是其官方力推的開源的XCodeAPI,這樣好奇怪。
          這裏我選擇官方開源的XCodeAPI進行實踐,同時結合雨鬆的靈感–

XClass代碼

    Step 1: 分析要作的目標

我這裏用了微信IOS支付、支付寶微信支付、調用IOS照相機、蒲公英 應用內測SDK,故要經過PostEvents完成之。

          須要修改PList文件
          須要修改Project BuildSettings文件
          須要在Unity3D生成的AppController文件修改 UnityAppController.mm

image

    Step 2: 下載XCodeAPI

https://bitbucket.org/Unity-Technologies/xcodeapi/src/ 下載,註冊帳號,或者點擊左下角的Downloads。

    Step 3: 配置文件目錄

把XcodeAPi源碼,放在Editor文件夾下

    Step 4: IOSPostBuildProcessor.cs 實現PostProcessBuild

新建一個文件IOSPostBuildProcessor.cs ,添加[PostProcessBuild]標籤函數

[PostProcessBuild] public static void OnPostprocessBuild(BuildTarget buildTarget, string pathToBuiltProject)

   

    拷貝系統Framework:

proj.AddFrameworkToProject(target, "StoreKit.framework", true);

    添加頭文件搜索–非遞歸方式

proj.AddBuildProperty(target, "HEADER_SEARCH_PATHS", "$(SRCROOT)/Libraries/Plugins/iOS/AliPay/AliPaySDK/");

    PList文件修改版本信息

rootDict.SetString("CFBundleDevelopmentRegion","China");  //change en=>chinese

    PList文件添加微信爲白名單

PlistElementArray array = rootDict.CreateArray("LSApplicationQueriesSchemes");         array.AddString("weixin");

 

OpenURL添加 PlistElementArray array1 = rootDict.CreateArray("CFBundleURLTypes"); PlistElementDict dic = array1.AddDict(); dic.SetString("CFBundleTypeRole", "Editor");
dic.SetString("CFBundleURLName", "weixin"); PlistElementArray array2 = dic.CreateArray("CFBundleURLSchemes");
array2.AddString("wx666662196cb2222");  //weixin

讀取UnityAppController.mm文件,謝謝雨鬆的啓發–XClass 類庫 XClass UnityAppController = new XClass(filePath + "/Classes/UnityAppController.mm");                
//在指定代碼後面增長一行代碼: import "header.h"
UnityAppController.WriteBelow("#include \"PluginBase/AppDelegateListener.h\"","#import \"WeixinPayIOSWrap.h\" \r #import <AlipaySDK/AlipaySDK.h> \r #import <PgySDK/PgyManager.h>");

    Step 5: 測試

如今執行Unity3D生成XCode工程,在生成XCode工程完成後,會自動調用Editor下面的[PostProcessBuild]標籤,執行代碼(可Debug調試)。

        源碼地址:

http://git.oschina.net/xifarm/

    開心的總結:

       如今,我僅僅須要Unity3D導出爲XCode工程,而後選擇企業證書,便可:Product–Archive–export了。輕鬆了許多;代碼雖然僅僅100多行,可是對工做的改進,的確能每次少浪費20分鐘時間,這是一次極好的經過業餘實踐,改善工做流程,從而減小無效加班的事情,開心。 下次再見到雨鬆的話,好得請他喝一杯–大杯,謝謝XClass 源碼。

相關文章
相關標籤/搜索