2012-07-13 25 views
2

問:

什麼是定製的Android包含的本地組件在一個Android應用程序的建議呢?對於「本地組件」,我的意思是本地源代碼在AOSP中可用的組件,但其中使用的API未公開在NDK文檔中。定製的Android NuPlayer列入Android應用


詳情:

我想使用Android媒體框架的簡化版本(實際上,所有我需要的是NuPlayer打我的應用程序的RTSP流)。我知道這種定製涉及使用AOSP的本地代碼(框架/基礎/媒體),修改我需要的東西;並根據我的需要構建它以生成.so文件。然後我做一個System.loadLibrary()加上JNI。

我的問題是 - 建議如何做到這一點?

我不能使用NDK(相反,我不應該使用NDK),因爲媒體框架中使用的許多API都不會暴露給NDK。但是,如何構建我的修改後的媒體框架代碼?我確實在那裏看到Android.mk文件。我用什麼來建立這些?

+0

我懷疑,如果你可以不使用NDK構建lib.so文件。據我所知,你必須使用NDK編譯器來構建自己的庫,以便與其他NDK應用程序一起使用。 – codetiger 2012-07-16 11:53:15

+0

這就是Android-NDK google羣組[這次討論](https://groups.google.com/d/topic/android-ndk/gXvU1tYZb2U/discussion)的樣子。 – curioustechizen 2012-07-18 04:48:12

+0

我將你的標題改爲NuPlayer專用 – 2012-09-10 16:00:37

回答

0

你的問題是自相矛盾的:你想定製的Android的本地組件,無需使用NDK。 NDK代表本地開發工具包:我聽說沒有人在沒有使用本地開發工具的情況下開發本地組件。和NDK是最簡單的使用...

恕我直言,你真正的問題在於此聲明:我不能使用NDK(而不是我不應該使用NDK)。這裏我問:爲什麼?

+0

這就是整個觀點:NDK是在應用範圍內使用本地代碼*。它只能使用NDK公開的API。另一方面,Android框架的本地組件(如我想使用的媒體框架)*超出了應用程序的範圍*。 Android-NDK谷歌組合I的鏈接討論主題有更多細節。 – curioustechizen 2012-09-05 03:28:00

+0

然後,我想唯一的解決方案是從Android NuPlayer中獲取靈感,並在您的應用程序(java或C++)中編寫自己的MediaPlayer。感謝ndk,我的一位同事和我已經在我們的應用程序中導入並重建了android dbus堆棧。我們必須移植一個使用dbus作爲守護進程/客戶端IPC的桌面應用程序。我們在根植設備上測試它,它作爲一個概念證明很好。現在我們正在用更加android'ish IPC取代dbus。但我的觀點是:我們在應用中嵌入dbus並沒有遇到太大障礙,首先,作爲概念的證明。無論如何,我會對你如何解決你的問題感興趣。 – 2012-09-10 17:06:02