2011-07-12 59 views
3

Android NDK中默認存在任何庫嗎?如果沒有,我可以使用任何C++/C庫,只要我自己包含它?Android NDK上可用的庫?

特別是,我需要壓縮,加密,正則表達式和sqlite。我正在考慮使用zlibcrypto++,sqlite(duh!)和boost,但如果它已經可用,可以使用其他任何東西。

而且,如果沒有可供使用的內置,你會推薦其他的東西,然後我上面的選擇(我喜歡公共領域可能的情況下,或BSD或類似)

+0

爲什麼你需要所有與NDK?例如,如果你要出去使用SQLite,那麼從Java訪問SQLite時,你不可能獲得任何顯着的性能提升。閱讀[「何時在本地代碼中開發」](http://developer.android.com/sdk/ndk/overview.html#choosing)以獲取關於此點的更多信息。 –

+0

@ Ted-Hopp這是一款在多個平臺上運行的應用程序,(當前爲Windows和Android,希望以後可以使用)。該應用程序的主要引擎是使用C++,因此我不需要爲每個平臺重寫它。引擎將數據存儲在SQLite表中。 – baruch

回答

1

首先,我認爲你需要下載NDK包從這裏:http://developer.android.com/sdk/ndk/index.html和調查包的文件。我相信你會得到你大部分問題的答案。 快速回答你的問題。是的,Android NDK中默認有庫。例如標準的C和C++庫。

+0

我現在談論標準庫。我問的是標準庫中未包含的功能。 – baruch

+0

還有其他庫,在上述文檔中可以找到它們的描述。 –

+0

哪些標準的c和C++庫可用?導致文檔狀態的第一句話:「Android平臺提供了一個非常小的C++運行時支持庫(libstdC++)。這種最小的支持不包括,例如:標準C++庫支持(除了一些簡單的頭文件),支持C++異常,RTTI支持「 – Ewoks

3
  • SQLite通過Java中抽象的database access在Android上可用。 .so本身是私人的。如果您需要修改,您當然可以編譯自己的SQLite庫,但通常您應該從Java訪問它。我已經做了這個加密的目的。
  • zlib是提供給NDK
  • crypto++當然可以通過NDK
  • 升壓的確適用於Android/NDK(我目前使用它在很大程度上)
+0

它使用boost正則表達式添加到我的'.apk'多少?你會推薦一個不同的? – baruch

+0

我不能肯定地說,因爲我使用的不僅僅是來自Boost的。然而,我認爲正則表達式非常小。 – NuSkooler

2

被編譯到默認的Android NDK提供了一些圖書館,所謂 '穩定的原生API'(http://developer.android.com/sdk/ndk/overview.html):

  • libc(C庫)報頭
  • libm(數學庫)報頭
  • JNI接口頭
  • libz(zlib壓縮)報頭
  • liblog(Android的記錄)頭
  • 的OpenGL ES 1.1和OpenGL ES 2.0(3D圖形庫)報頭
  • libjnigraphics(像素緩衝區訪問)標題(適用於Android 2.2及更高版本)。
  • C++支持
  • OpenSL ES本地音頻庫 Android原生應用程序API
0

這僅是相對於加密++部分回答的最小組報頭....

加密++有一個wiki頁面,其中包含命令行編譯指令Android (Command Line)。該過程將創建各種庫並向您展示如何構建cryptest.exe以驗證設備上的庫。但是你仍然需要使用Android的構建系統來創建你的包裝項目。

Piotr MorgwaiKotarbiński有一個關於使用Android的修改版本構建Crypto ++庫的頁面。見Building Crypto++ with NDK toolchain。我不相信Piotr的文章驗證設備上的庫。