本文記錄了在開發 騰訊移動遊戲平台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 .就可以看到詳細日志了。)
【原文連結:
轉載請注明出處】