2010-02-20 52 views
24

我感興趣的以下特點:我可以用Android製作一個相當原生的C++應用程序嗎?

  1. 寫作是在完全用C寫成++(實際上是現有產品的端口)爲Android Market的應用程序。
  2. 使用快速屏幕緩衝區像素推送(或更確切地說,使用OpenGL ES)。
  3. 獲取用戶輸入並將其指向C++代碼。

爲Market編寫這樣的應用程序是否合法?市場政策對這些事情有些嚴格嗎?

回答

0

http://developer.android.com/guide/basics/what-is-android.html

「Android SDK提供了必要的工具和API來開始開發使用Java編程語言在Android平臺上的應用程序。」

http://arstechnica.com/open-source/news/2009/06/android-goes-beyond-java-gains-native-cc-dev-kit.ars

一般情況下,你不知道。通過JNI有一些有限的C++支持,但它主要是爲了補充Java代碼,而不是替代它。 C++沒有框架/ API支持(AFAIK),所以這樣做並不是真正的選擇。

+0

我相信OpenGL API至少直接暴露在NDK級別上,例如對於全屏幕遊戲來說,完全本地化肯定是一種選擇(可能還是推薦)。 –

8

這真的不是我的一杯茶,但有一種叫做Android NDK(Native Development Kit)的東西,如果你想用C編寫你的程序,不知道C++編譯器如何支持。

就我所知,您的應用幾乎可以使用100%本地代碼,但請記住,通過這種方式行事,您可能會很難在Android硬件中支持不同的CPU。如果您需要引導本機代碼,以便它從Java啓動,那麼對您來說可能不是一個很大的問題。

我在Google搜索「Android NDK」時發現了幾個不同的教程。 This one is a very minimalistic Hello World。很明顯,你需要的不僅僅是一個向java返回一個字符串的庫,但它是一個很好的開始,你可能需要做所有描述的事情。使用NDK和Android作爲關鍵字進行搜索,並獲得很好的選擇。我看不出有什麼理由在此列出,因爲這些列表往往會在一年左右時間內過時並破壞。

我猜Google官方的Android Developer site會保持不變,並在新版本的平臺上更新,它有一個鏈接到當前的NDK。

+0

爲什麼downvote? – Fredrik

+0

如果我不得不猜測,這是因爲您建議Gooling使用字符串,而不是直接鏈接到項目。有時人們想挑剔。但是,您提供的鏈接爲+1。這是設置開發環境的全面演練,而不僅僅是一小段代碼。 –

+0

除鏈接不適用於NDK AFAICT。它用於編寫控制檯應用程序,使用屬於Android開放源代碼項目的交叉編譯器。術語「NDK」甚至不出現在頁面上,並且該帖子是在NDK發佈之前編寫的。 – CommonsWare

1

沒有100%原生解決方案,但我認爲你正在尋找的是Android NDK(原生開發套件)

從他們的網站「請注意,NDK並不能使你開發本機只有應用。Android的主運行時仍然是Dalvik虛擬機。「

我相信它可以讓你從一個Android應用程序

我個人從來沒有用它爲我的遊戲使你自己的本機代碼調用,但我相信這將有助於對很多事情(如能夠來管理我自己的內存,並沒有「滯後」對垃圾收集器做)

15

從Android 2.3(薑餅)到NDK r5這是可能的,但我認爲只有支持本地應用的設備必須在它們上面有薑餅。

從天然活性樣品:

Android SDK提供了一個輔助類,NativeActivity的,它允許你寫一個完全 天然活性。通過本地活動,可以編寫完全原生的應用程序。 NativeActivity負責處理Android框架和您的本地代碼之間的通信,因此您不必爲其創建子類或調用其方法。您所需要做的就是將您的應用程序的 聲明爲AndroidManifest.xml文件中的本地文件,並開始創建您的本機 應用程序。

+1

給了我們一個例子。眼見爲實:) –

+3

@Deo Checkout samples/native-activity /在NDK中。 – tonylo

2

與薑餅(Android 2.3),它看起來像你可以用C++建立你的整個應用程序。

參見: http://phandroid.com/2011/01/11/android-developers-blog-awesome-ndk-leads-to-awesome-apps/

「 隨着NDK,R5的最新版本,許多大的方面做了改進與薑餅版本保持一致,最重要是編寫一個原生應用程序的能力Android 2.3完全以C++語言編寫,這意味着即使是沒有Java知識的程序員和開發人員也不需要實現單行代碼......「我讀過的,看來你可以做到這一點

相關問題