天天看點

開發騰訊移動遊戲平台SDK Android版Ane擴充 總結

本文記錄了在開發 騰訊移動遊戲平台SDK(MSDK) Android版Ane擴充 過程中所遇到的問題和相關解決方案

 問題一:編譯報錯:Unable to resolve target ‘android-7‘:

将低版本的代碼導入eclipse時,常遇到這樣的問題:Unable to resolve target ‘android-XX‘

這是原代碼中project.properties 的 Project target 設定與目前eclipse環境設定不一緻所緻。

AVD(Android Virtual Device),是Android的模拟器。具體介紹和指令參數參照http://www.cr173.com/html/19430_1.html

解決這個問題,隻要把project.properties檔案用記事本打開,将 Project target.target=android-7 改為你目前支援的AVD版本即可

一般 android-8 對應的android sdk 是2.2, android-10對應的是2.3

問題二:android怎麼修改gen裡的包名?

gen是根據你的應用程式包名自動生成的,不需要、也不能手動修改

可以把應用程式的包名改掉,重新編譯下,就看到修改的效果

名字在AndroidManifest.xml的package中,

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

   package="com.example.flipe"

問題三:打包失敗,原因之一是xml代碼不規範,xml注釋必須嚴格按照注釋符來注釋代碼

<!-- 注釋 -->

如果寫成這樣,則編譯時會報錯

<!-- 注釋 ------>

問題四:生成的ane引入後調用sdk代碼後無反應,或者出現閃退現象

定位代碼,是調用Activity窗體類時出錯導緻,但在android項目單獨運作這個Activity時正常

Intent intent = new Intent();

intent.setClass(context.getActivity(),SDKActivity.class); //SDKActivity即我們自定義的Activity

context.getActivity().startActivityForResult(intent,0X01);

後通過logCat打日志發現

原因1:沒有引入msdk中的一個so類庫NativeRQD檔案,把該檔案打包放進apk後ok

原因2:使用了執行個體中PlatformTest類,直接使用WGPlatform類則正常

問題五:調用QQ登入,登入時接口OnLoginNotify報flag=-1錯誤

原因是未配置網絡檔案,需要把assets檔案夾裡面的内容放到flash項目中打包進去

問題六:如何把android項目中res裡面的資源檔案打包進air釋出的apk中?

隻需要把res裡面的資源檔案放到ane Android-ARM檔案夾下打包進ane,釋出apk時會自動打包進apk中

注意資源檔案分三種:

1、apk/assets檔案可以放在air項目工程檔案下打包進apk

2、apk/res檔案可以放在ANE的打封包件夾中打包進ane

3、其他位置檔案就隻有打包apk後在反編譯添加進去在打包簽名

問題七:ane項目中如何讀取res下的檔案(air項目和android項目不同)

例;drawable是res檔案夾的子檔案夾,sample_yuanbao是裡面的檔案名稱

1、android項目:

    通過id擷取, int resId = R.drawable.sample_yuanbao;

    Resources r =this.getContext().getResources();  //得到Resources對象

    Inputstream is = r.openRawResource( resId);  //以資料流的方式讀取資源

2、ane項目:

    方法一:

    int resId = cTContext.getResourceId("drawable.sample_yuanbao");

    Resources r =cTContext.getResources();  //得到Resources對象 

    方法二:

    使用使用getIdentifier()擷取資源Id

    getApplicationContext().getResources().getIdentifier(name, defType,defPackage)方法在ane中擷取資源

詳情參見:http://blog.sina.com.cn/s/blog_6714fba701018k8h.html

http://blog.csdn.net/lilu_leo/article/details/6654386

問題八:如何把so檔案打包進apk中

air項目:把釋出的apk檔案先用ApkTool工具(或者其他類似工具)解壓,然後把so檔案或其他資源檔案添加進去,重新打包、簽名。

android項目:http://blog.csdn.net/zeng622peng/article/details/6675281

問題九:為何打包資源裡面選擇了apk檔案,也無法打包進apk

原因是flash builder工具打包時會過濾apk,即使選擇了.apk檔案還是會剔除掉,如果要把第三方apk檔案打包進去,必須使用指令行方式打包。

問題十:使用指令行打包apk時,如果獲得release的swf檔案?

方法一,使用flash builder導出release版本時,在生成temp檔案夾後立刻終止flash builder的釋出過程,然後去temp檔案夾中找;

方法二,使用adt指令行釋出swf

問題十一:如何友善的調試ane?

1、用eclipse連接配接調試android手機程式(連上手機後,eclipse的 logCat裡面能看到整個手機上的日志。偶爾看不到重新啟動一下就可以)

2、用xcode連接配接調試ios手機程式(XCode的頂部工具欄->Window菜單->Organizer項開啟Organizer視窗,選中要用于調試的裝置連接配接 mac .就可以看到詳細日志了。)

【原文連結: 

轉載請注明出處】