2016-09-17 24 views
1

我正在嘗試稍微修改一個示例應用程序(dlib)。該示例使用一個使用JNI(它是一個.so文件)調用的C++庫。示例中提供的庫運行良好。我重新編譯該庫,但現在它不會加載它,它拋出這個錯誤:加載包(JNI)時出錯 - 無法找到符號「__aeabi_memcpy」

dlopen failed: cannot locate symbol "__aeabi_memcpy" referenced by "/data/app/com.tzutalin.dlibtest-1/lib/arm/libpeople_det.so" 

我認爲這是目標SDK之間的不匹配,所以我做了確保一切都被設置爲SDK版本24,但我仍然得到這個錯誤。

任何想法?我在Windows 10上使用Android Studio。

謝謝。

+0

您可能未能正確編譯它,所以庫不會導出任何符號。看看你的編譯器的文檔,看看你需要傳遞哪些選項,讓它導出所有要導出的符號。 –

回答

2

這是由全新的Nougat(24)SDK引入的Android工作室中的一個新BUG,如果您將所有回滾到棉花糖(23),一切都會好起來的。直到Android Studio團隊解決這個問題。如果你編譯有(24)和目標(24),並且在有(23)的設備上安裝apk,設備將不會找到你的庫,但是,如果你在其他任何其他的地方安裝了這個apk,那麼這個設備就不會找到你的庫了。裝置版本2.33至5和7 /牛軋糖(棉花糖除外)。一切都會正常工作。測試。

解決方案:編譯使用(23)和目標(23),並坐下&等待Fix。測試。

我的環境:我在上週做了所有Android Studio更新。 (NDK 13,牛軋糖和棉花糖與最新的仿真器,以及真正的設備Android 4,5,6)。

希望Android Studio能夠聽到這個問題,因爲如果它不是很快修復的話,它將成爲未來幾周Play商店的噩夢。爲棉花糖用戶。

編輯:升級至Android Studio 2.2(Build#AI-145.3276617,2016年9月15日)後,發佈日(9月19日)。我能夠編譯24,瞄準24和運行在每個設備Android薑餅牛軋糖。仿真和真實。就像它應該。

+0

我遇到了同樣的問題,我在Android Studio 2.2.2上使用SDK API級別25,而使用Android 6.0.1(SDK級別23)的設備在第一次本機調用時崩潰並出現相同的錯誤。 –