Android 開發常用問題彙總-2

常見make編譯錯誤。

環境:Android 8.0 API 26

1.build/core/package_internal.mk:51: error: external/zlib: Package modules may not define LOCAL_MODULE. 20:30:34 ckati failed with: exit status 1 make: *** [run_soong_ui] Error 1

解釋:包模塊可能沒有定義LOCAL_MODULE

解決: 檢查mk編譯文檔之中關鍵字是否有寫錯。 主要是includ 後面的內容是否有寫錯。

在這裏插入圖片描述
是否有寫錯關鍵字錯誤,就會造成解析mk文件錯誤。然後出現上面的錯誤警告。

2.ninja: error: unknown target 'MODULES-IN-device-hisilicon-bigfish-packages-apps-XXXX'20:31:42 ninja failed with: exit status 1make: *** [run_soong_ui] Error 1

如果只是通過mm命令編譯該apk ,而不是系統編譯時

解釋:加載apk 模塊失敗。

這種錯誤有很多原因會造成。但是最可能出現的問題在於mk文件之中的 LOCAL_PATH 第一行第一列的代碼之中有輸入錯誤。
正確輸入效果: LOCAL_PATH := $(call my-dir)

3.error: Error: No resource found that matches the given name: attr 'colorPrimary'.

錯誤效果圖

在這裏插入圖片描述
主要原因在於編譯的庫文件造成的。
這是因爲你的項目之中是有了Android V7 庫文件,而在mk文件的配置之中沒有導入相關的庫,所以在編譯檢查的時候,出現了找不到resource的錯誤。

android.mk 文件之中添加android-support-v7appcompat
使用 導入庫之後 還需要注意導入v7的 res文件,否則任然提示錯誤。

4.unknown element <**user-sdk**> found.

warn: ignoring density 'hdpi-v4' for -c option. warn: ignoring density 'xhdpi-v4' for -c option. xxxx/packages/apps/XXXAPK/AndroidManifest.xml:4: error: unknown element <user-sdk> found. ninja: build stopped: subcommand failed. 19:24:34 ninja failed with: exit status 1

在這裏插入圖片描述
這種情況其實都是在告訴你,你的AndroidManifest之中的標籤有寫錯了。

例如我這個例子就是在AndroidManifest.xml文檔第4行內容之中,將
<uses-sdk> 給寫成了 <user-sdk> 造成的錯誤。

如果提示element 錯誤,都是因爲你寫的標籤語法不正確的問題。注意檢查。

5.ERROR: /home/code/device/Demo/packages/apps/HUDemo/java/com/xxxx/txx/util/MainActivity.java:9.8: The import androidx cannot be resolved

錯誤原因,主要在於你的源碼之中import 導入了androidx 庫的資源。
解決方案有兩種:
1.將你的代碼之中全部的import的androidx 替換爲android-v7庫,因爲通常情況下,我們在利用sdk進行編譯的時候android SDK提供了androidX庫,但是在系統源碼之中,很可能沒有androidX庫。(android 8.0源碼之中沒有找到androidx庫。而存在android-v7庫

2.參考第三的問題的解決。導入AndroidX庫。

3.將AndroidX的jar文件,導入到源碼之中,然後使用第三方庫導入方式進行配置。

推薦使用第一種解決,方便也快捷。

因爲我們如果是使用源碼進行編譯apk,你就不要再考慮適配多少的問題了。這邊版本就是跟着當前的系統專門做適配的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章