1.
初次打包 碰到這個錯誤得 就是你mac 上jre版本的問題 此時用 FB 必須是跑在jre1.6版本上的 我得是1.8
上圖

版本可以自己查下 已經截圖了 而且 你如果想要下載 1.6版本的 就得去蘋果官網下mac 版本的 oracle官網 沒有
更新到1.6版本后 才算配置好基本的環境 但是 還可能出現各種問題 我一一給各位展示下
2.
這個錯誤 是你打ane包得時候 沒把

要把這個文件也打進ane中 而上面的那個錯誤 解決辦法 就是 第二個方框的最低版本 要設置 這里 最低要5.0 默認4.0 會報錯
3.
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_Partytrack", referenced from:
objc-class-ref in libcom.otaku.OtakuGames.a(methodAction.o)
"_OBJC_CLASS_$_OTKinterfaceTool", referenced from:
objc-class-ref in libcom.otaku.OtakuGames.a(methodAction.o)
ld: symbol(s) not found for architecture armv7
Compilation failed while executing : ld64
這個錯誤 最讓我苦惱 搞了2天
先說下 上面的文件環境 Partytrack和OTKinterfaceTool 都是我引用的第三方庫的類名 ,methodAction.o 這個是我第三方的類名所使用地方的類
這個錯誤 我找了N多資料 什么 設置archieve 為NO 啊 還有build phases 的compile sources 中設置要引用類的.m 文件 我都試了 也沒用
好了 解決辦法 直接上圖了

沒錯 是要在 build phases 中的link binary with libraries導入第三方的靜態庫 (好吧 我小白了 第一次知道 第三方也要導入靜態庫),這里 不單單要導入第三方的框架,還要導入第三方的靜態庫 。
4.終於 把項目所有的功能都打進ane了 下面得 主要分享下回調 如何 寫入ane
---1>首先 在as庫中 加入以下代碼 其實 就增加了一行代碼 這行代碼 意思是加入監聽者
public function OtakuGame()
{
super();
if(_extContext == null) {
_extContext = ExtensionContext.createExtensionContext("com.otaku.OtakuGames", null);
_extContext.addEventListener(StatusEvent.STATUS, statusHandler);
//NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE,onInvoke);
}
}
----2>還是在as庫中加入 這個方法是對上面事件監聽的實現
private function statusHandler(event:StatusEvent):void
{
dispatchEvent(event);
}
----3>以下就是測試代碼了 就是在Flash中 提供給別人使用的 接口測試 此處 以登錄 接口測試 當然是登錄的回調了
protected function button1_clickHandler(event:MouseEvent):void
{
OtakuGame.getInstance().login();
OtakuGame.getInstance().addEventListener(StatusEvent.STATUS,statusHandler);
}
其實 也是就加了一行的代碼 把前面得事件監聽者 加進來
---4>這個就是事件監聽的具體實現了
private function statusHandler(event:StatusEvent):void
{
var xml:XML = XML(event.level);
if(event.code == "loginCallBack")
{
MessageTextAppendString("token:"+xml.token);
MessageTextAppendString("userid:"+xml.userId);
MessageTextAppendString("tokenExpire:"+xml.tokenExpire);
MessageTextAppendString("sign:"+xml.sign);
}
---5>下面該是 回調事件 我們怎么讓自己得回調事件和air 聯系到一塊 上面只是聲明 具體的內部實現 還是要在自己得Xcode中
//登錄的回調
FREDispatchStatusEventAsync(g_ctx, (const uint8_t*)"loginCallBack", (const uint8_t*)[[doc toString] UTF8String]);
有人可能會疑惑一點 仔細看上賣的 實際要得是三個參數 第一個參數 是上下文 自己
extern FREContext g_ctx; 聲明下 即可 第二個參數是 event.code 第三個參數是event.level .
看到這里 有沒有感覺到和上面的代碼 哪點有點相似 仔細比對下 就在---4>中得 那是和上面一一對應的 其實這個和 字典類型 差不多得性質
event.code 是key event.level 是value 我之所以 實例化了一個xml 是 回調后得參數不止一個 xml 可以看做另一個存貯的字典
好了 各位親們 說實話 不想讓你們搜到我這個blog 因為 ane的問題 太多了 太惡心了 各種錯誤根本不好找 就是一個哪怕句號沒寫 就能讓你找兩天的 唉 我算是熬過來了
如果有問題 你們再留言吧
