很多Native派的Android的開發者,應該對NativeActivity不陌生,但目前Android並未將所有的Service(比方Location,IAP…等)都開C++存取的介面。如果使用Java Base來開發,ServiceView都要自己處理,除了Java Thread迴圈要自己建立之外,還要開很多JNI delegate函式才能達到跟C++溝通的目標,用NativeActivity可以解決上述的問題(一行Java Code都不用),難道沒有兩全其美的做法嗎?
其實有,就是直接繼承NativeActivity,然後再做自己的JNI(也就是NativeActivity與JNI混用),以Tegra Nsight專案為例,用Android Application with Native Code模板來建立專案,之後將android_native_app_glue的c及.h檔(用Android Native Application模板來建立專案,就會自動copy到專案Folder之下)copy過來編譯即可。
之後在建製專案時,會發生link不過的問題,這時參考Android Native Application的專案設定,在Linker頁面裡的Input裡的Android System Libraries欄位,加入android;EGL;GLESv1_CM即可。
接下來即可在自己的Activity(extends NativeActivity)來處理有關JNI的部份…
Dream continues in...
沒有留言:
張貼留言