2016-11-18 72 views
1

我創建了Android Studio中的作品完美的應用。如果我生成一個AAR和APK並使用這些文件,它們再次正常工作。我可以在幾個設備上安裝APK,它的工作完美無瑕。現在,當我安裝APK的AOSP建立我不斷收到java.lang.UnsatisfiedLinkError中的內部:指向的代碼的第一行是在呼喚我的本地方法。我用這個鏈接作爲參考Add .apk files in aosp。當我運行模擬器並單擊我的應用程序時,它崩潰併產生UnsatisfiedLinkError。如果我使用我的AAR文件生成APK,也會發生同樣的情況。再次澄清一下,這隻發生在AOSP中,當在Android Studio中使用AAR進行其他構建時,不會發生這種情況,並且無論安裝在哪個設備上,該APK總能正常工作。任何有關爲什麼發生這種情況的建議將會很棒!AOSP本地代碼鏈接錯誤

+0

您不能直接在手機上安裝.aar存檔,因爲它們用於庫項目。我想你只是指.apk檔案。 – anthonymonori

+0

對不起應該說我也嘗試過使用AOSP生成APK的Android.mk裏面的aar。以下位置包含從AOSP/android/out/target/product/generic/data/app/MyApplicationName生成的APK。當我拿起這個APK並將其傳輸到我的手機時,它會在啓動時崩潰,並且出現同樣的不滿意的錯誤。 – AConsiglio

+0

我還增加了APK到/封裝/應用/ MyApplicationName – AConsiglio

回答

0

AOSP試圖找到我的APK使用無論從系統/ lib目錄供應商/ lib目錄文件夾,並因爲它是不是有它導致UnsatisfiedLinkError中的.so。因此,通過將.so目標文件目錄添加到這些位置,APK在啓動之後可以在模擬器內正常啓動。這也可以通過修改Android.mk並將這些行添加到文件來完成。

包括$(CLEAR_VARS)
LOCAL_MODULE:= MYFILE
LOCAL_SRC_FILES:= LIB/myfile.so#或任何你。所以位於
LOCAL_MODULE_TAGS:=可選
LOCAL_MODULE_SUFFIX:=。所以
LOCAL_MODULE_CLASS: = SHARED_LIBRARIES
include $(BUILD_PREBUILT)

+0

感謝您的解答,它是在主Android,mk或jni目錄下添加的嗎? – sandeepmaaram

+1

@sandeepmaaram所有這些都會被添加到你的Android.mk文件裏面,它會根據你的LOCAL_SRC_FILES生成一個.so文件。您也可以手動將生成的.so文件添加到您正在構建的AOSP文件夾內的那些目錄下。 – AConsiglio

+0

非常感謝,從上面的代碼「LOCAL_SRC_FILES:= lib/myfile.so#或上面查詢.so所在位置」的意思.so文件路徑aosp右例如。出/目標/系統/ LIB/myfile.so。那麼在jni文件夾下的Android.mk代碼如何? 在此先感謝。 – sandeepmaaram

0

which points to the very first line of code that's calling my native method.

聽起來你正在構建應用程序與本機庫和包括創建.apk文件只捆綁一些體系結構類型到它。如果你有本地庫,確保包括所有的體系結構類型(通常是86和ARMv7做這項工作,但總是先諮詢你的兼容性清單),確保如果你這樣做ABI splitting您正在使用的權APK

請consule以下指南,以確保您有the NDK integration set up correctly

+0

OP正在討論將一個'apk'包含到AOSP中,這與在運行的操作系統上部署應用程序不同。 – Onik