簡體   English   中英

Android NDK - 只能用C / C ++編寫

[英]Android NDK - write only in C/C++

是否有可能用C / C ++編寫一個完整的NDK應用程序而沒有像hello-jni示例項目(HelloJni.java)中的Java“啟動”類 - 以某種方式創建一個HelloJni.c,它會做同樣的事情嗎?

從Android 2.3(API Level 9)開始,NativeActivity允許用戶只用C ++編寫Android應用程序代碼。 在NDK包中還有一個例子。

來自NDK概述的報價:

什么時候開發本地代碼

NDK不會使大多數應用程序受益。 作為開發人員,您需要平衡其優勢與缺點; 值得注意的是,使用本機代碼不會導致自動性能提升 ,但總是會增加應用程序的復雜性。 一般來說,如果它對您的應用程序至關重要,您應該只使用本機代碼,而不僅僅是因為您更喜歡使用C / C ++編程。

NDK的典型優選候選者是獨立的,CPU密集型操作,不分配大量內存,例如信號處理,物理模擬等。 簡單地重新編碼在C中運行的方法通常不會導致大的性能提升 在檢查是否應該使用本機代碼進行開發時,請考慮您的要求,並查看Android框架API是否提供了所需的功能。 但是,NDK可以是重用大量現有C / C ++代碼的有效方法

Android框架提供了兩種使用本機代碼的方法:

  • 使用Android框架編寫應用程序並使用JNI訪問Android NDK提供的API。 此技術允許您利用Android框架的便利性,但仍允許您在必要時編寫本機代碼。 您可以在運行Android 1.5或更高版本的設備上通過JNI安裝使用本機代碼的應用程序。

  • 編寫本機活動,允許您在本機代碼中實現生命周期回調。 Android SDK提供了NativeActivity類,它是一個便利類,它通知您的本機代碼任何活動生命周期回調(onCreate(),onPause(),onResume()等)。 您可以在本機代碼中實現回調,以便在發生這些事件時對其進行處理。 使用本機活動的應用程序必須在Android 2.3(API級別9)或更高版本上運行。

您無法本機訪問服務和內容提供程序等功能,因此,如果您要使用它們或任何其他框架API,您仍然可以編寫JNI代碼來執行此操作。

我會在移植代碼時使用C / C ++,也可能在開發跨平台游戲時使用。

由於所有的用戶界面,圖形和其他有趣類是在Java中,你將不得不使用Java或那種方式。

另一個我的意思是通過JNI與所有Java類連接。 有一個庫: https//github.com/DmitrySkiba/itoa-jnipp 檢查HelloJNIpp示例 - 它表明確實可以用C ++完全編寫Android應用程序,唯一的問題是你需要首先實現所有需要的包裝器(有些是在samples / common文件夾中)。

但是,我建議使用Java。 它簡潔大方,有很棒的庫和工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM