2011-07-29 67 views
0

我已經構建了本地音頻示例並將其下載到我的Galaxy Tab 10.1,但它不起作用。它看起來會開始(即窗口名稱出現在頂部),但之後崩潰很難。我希望有人可能有一個想法,爲什麼?這可能是Tab上的音頻支持問題,或者...?Android NDK本地音頻示例崩潰

我也嘗試使用「android_native_app_glue」創建自己的非常簡單的本機活動,它也崩潰 - 即使我沒有OpenSL調用。實際上,我所要做的就是將-lOpenSLES添加到我的LOCAL_LDLIBS中,以導致啓動失敗。當我刪除該鏈接器標誌時,不會崩潰。非常奇怪,讓我覺得Tab中缺少原生音頻支持?

感謝, ALF

+1

「崩潰」這個術語太不精確了,因爲任何人都很難理解這個問題。發佈任何UI錯誤消息和試圖啓動程序的logcat日誌。 –

+0

下面的示例LogCat輸出。 – ALF

+0

08-01 10:13:55.570:WARN/dalvikvm(6348):threadid = 1:線程退出與未捕獲的異常(組= 0x4016d760) 08-01 10:13:55.580:錯誤/ AndroidRuntime(6348):致命異常:main 08-01 10:13:55.580:ERROR/AndroidRuntime(6348):java.lang.RuntimeException:無法啓動活動ComponentInfo {com.example.native_activity/android.app.NativeActivity}:java.lang.IllegalArgumentException:無法加載本機庫:/data/data/com.example.native_activity/lib/libnative-activity.so – ALF

回答

0

事實上,所有我需要做的就是添加-lOpenSLES我LOCAL_LDLIBS引起的啓動崩潰。當我刪除該鏈接器標誌時,不會崩潰。非常奇怪,讓我覺得Tab中缺少原生音頻支持?

您logcat似乎表明加載/data/data/com.example.native_activity/lib/libnative-activity.so失敗。如果不能複製問題來驗證會導致的錯誤消息,這很可能是由於運行時鏈接程序無法找到要加載的引用系統庫,或者它可能是一個令人困惑的報告,無法找到libnative- activity.so本身,或lib中的未解決符號,或其他。

如果您有其他設備進行測試,那將是一條明顯的道路。

還從已知使用本地音頻的其他人測試已編譯的應用程序。

如果這兩者都不可行,那麼可以使用readelf或objdump(特別是安裝在ndk中某處的android版本)甚至字符串或grep來查找libnative-activity.so所需的系統庫名稱,以及然後查看它們是否確實存在於您的設備上。

+0

謝謝!我沒有其他設備可以測試,但在與同事交談後,我認爲這是Android版本不兼容的問題。本地音頻是爲API級別9和我的標籤是API級別12(我認爲)。我假定API級別的向前兼容性,但事實並非如此。如果正確,這個menas API 2.3設備應該支持原生音頻,但3.1設備不會。真正? – ALF

+0

@ALF我懷疑它已從3.1中刪除,儘管它可能會在某個特定供應商發佈時被無意中破壞。爲什麼不試圖找出確切的問題,而不是放棄? –

+0

其他人似乎已經發現該IOI 10.1選項卡中缺少該庫,但認爲它是Google CTS套件所必需的:http://forum.xda-developers.com/archive/index.php/t-1119189 .html所以可能你有什麼是消費前的例子。該鏈接還包括一個建議的解決方法;有一點創意,你可能能夠從其他地方加載庫,並避免需要根。 –