2012-08-08 85 views
1

Android可以通過JNI使用.so文件。 C/C++中的本地函數綁定到Java函數。Android的.so文件中的包名稱

我想使用其他開發者的.so文件(我沒有源代碼)。我知道本機功能的界面,但我遇到了一些困難。似乎.so文件被硬編碼以綁定某個包名。

有什麼辦法讓我使用其他開發者的.so文件嗎?

如果沒有,是否可以反編譯.so文件並使其工作?

回答

0

您可以使用共享對象所期望的名稱創建一個包,其中包含一個包裝類,其唯一目的是加載庫並將本機方法提供給使用此類的客戶端。

將該軟件包導入到您自己的活動包(或任何您想使用它的地方)中,並通過包裝類調用本地方法。

+0

它的工作方式是靜態的,它是一個對象方法呢? – Bear 2012-08-08 14:43:06

+0

在封裝類而不是'public static native'中創建'public native'。或者你的意思是別的(如果是這樣,你能否更詳細地解釋你想做什麼以及得到什麼錯誤)? – Michael 2012-08-08 17:14:23

+0

但問題是本地方法會嘗試訪問C++代碼中的調用者對象或其字段?如果是的話,他們不能在包裝類中訪問它們,對吧? – Bear 2012-08-09 02:02:58

相關問題