2014-01-23 42 views
4
  1. 我有一套龐大的C源代碼文件,當編譯結果在共享庫中。
  2. 還有一個Java版本使用JNA來訪問已經建立的c共享庫。這些文件在另一個jar中可用。這個罐子取決於jna。

首先我編譯了c文件,然後編譯了java代碼。在Java中,沒有錯誤。只有當我嘗試將它移植到android時,問題纔會出現。我可以使用android'ndk-build'工具輕鬆編譯c文件。這成功創建了共享庫。JNA for android

我不能導入JNA在Android項目,因爲類似這樣的東西:Android - JNA library

但是我不明白在文章的評論。 Android可以使用JNA嗎?

我試着從jna.jar中刪除幾個文件(對應於其他體系結構的文件)。然而,我得到的錯誤如下: 庫'jna.jar'包含不能在設備上運行的本地庫。其中包括:「com/sun/jna/android-arm/libjnidispatch.so」

jar(用於C庫的java包裝器),被導入並且我可以編寫代碼。 但是,我仍然使用這個jar中的類創建的第一個對象'ExceptionInInitializerError'。

我不熟悉java。我只有一個菜鳥的知識。請耐心幫忙。謝謝。

+0

你使用Eclipse做你的構建? – Samhain

+0

@ user3228292如果建議的答案有效,請不要忘記接受它 – Chriss

+0

我會嘗試一下並儘快找回答案。 – McMurdo

回答

3

也許這是你在尋找什麼:

  • 添加的Android SDK/NDK工具到PATH(母語/ Makefile中)。
  • 設置環境變量NDK_PLATFORM(由native/Makefile使用)。
  • 構建使用:ant -Dos.prefix = android-arm dist。
  • 測試必須在目標平臺上運行,而不是在構建平臺上運行。
  • 根據需要將dist/jna.jar和/或dist/platform.jar添加到您的應用程序中。
  • 如果您使用的是android-maven-plugin,可以原樣使用jna.jar(本機庫將自動複製到您的項目中)。
  • 如果您使用的是Google的Eclipse插件,那麼您必須從jna.jar/lib/armeabi手動刪除libjnidispatch.so,並將其添加到項目的libs/armeabi目錄中。
  • 請參閱http://code.google.com/p/android/issues/detail?id=17861http://developer.android.com/guide/practices/jni.html瞭解更多信息。

https://github.com/twall/jna/blob/master/www/AndroidDevelopmentEnvironment.md複製:

+0

請闡明以下內容, 1.使用build:ant -Dos.prefix .... bhuild使用什麼? 2.測試必須在目標上運行而不是構建平臺 - 請闡明,我不明白。目標和構建平臺都是Android,對吧?對不起,如果我錯了。 – McMurdo

+0

如上所述,我只複製了說明,嘗試聯繫JNA傢伙直接 – Chriss

+0

它沒有工作。我不需要構建JNA,因爲android-arm的版本已經可以作爲jar下載。 – McMurdo