android 4.0.1源碼編譯,學習錯誤解決

來源:互聯網
上載者:User

主機是fedora 14   linux核心2.6.35.6    swapon交換分區1.5G   make -version 3.81(官方指定的make版本)jdk 1.6     

磁碟預留空間大概需要大於13G

具體的編譯步驟可參考

Fedora 15編譯Android原始碼 

Android4.0.1 源碼下載,模擬器編譯和運行

問題1:

out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/classes)Unrecognized option : 9999999make: ***[out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar]Error 41解決:安裝jdk,並正確設定環境變數,具體參考上面列出的第一篇文章問題二:缺少libgl1的包解決:在fedora下使用 yum install mesa-libGL-devel即可問題三:

Processing target/product/generic/dex_bootjars/system/framework/core.jar+ n  s# Z5 J5 e8 j/ M. L) w. c( f

host/linux-x86/bin/dexopt: error while loading shared libraries: libdvm.so: cannot enable executable stack as shared object requires: Permission denied

解決:是使用的系統 fedora的問題,在fedora中suselinux預設設定了一些許可權

在這裡可以通過執行  setsebool allow_execstack=1

問題四:

/usr/bin/ld: note: 'XInitThreads' is defined in DSO /usr/lib/libX11.so.
6 so try adding it to the linker command line
/usr/lib/libX11.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status

解決:

在檔案development/tools/emulator/opengl/host/renderer/Android.mk中加入
LOCAL_LDLIBS += -lX11

問題五:out of memory 或者是 collect2: ld terminated with signal 9 [Killed]

解決:android在後面的編譯階段記憶體佔用量很高,如果沒有設定swap交換分區,或者分區太小都會導致上述錯誤 ,

# dd if=/dev/zero of=/opt/other/swapfile bs=1024 count=1536K
# mkswap /opt/other/swapfile
# swapon /opt/other/swapfile
# swapon -s
Filename                Type        Size    Used    Priority
/opt/other/swapfile                     file       1572860    0    -1

問題六:acp: file 'out/host/linux-x86/obj/EXECUTABLES/vm-tests_intermediates/tests/data' does not exist

解決:在相應位置建立data目錄即可(我在第一次編譯的時候遇到了這個問題,按照此方法解決後又出現其他問題,刪除out目錄後重新編譯,沒有出現此問題及後續問題)

問題七:llvm-rs-cc:permission denied

解決:你可以到相應檔案夾下 out/host/linux-x86/bin/llvm-rs-cc,查看此檔案,即使你將所有許可權有效,在運行會出現cannot execute binary file llvm-rs-c c,我沒有找到解決辦法,只是把out目錄刪除,重新編譯就沒有出現此問題。也沒有出現上面的問題六。

倒騰了兩天,終於是編出來了。貌似android的編譯不是每次編譯都是一樣的,所有有人一次成功,還有人要糾結很久。貼圖一張,祝大家成功阿!

問題八:修改android代碼的過程中再進行編譯出現You
have tried to change the API from what has been previously approved.(修改了frameworks/base)

解決:make update-api

問題九:當想測試一個內建的應用程式時,使用mmm編譯packages/experimental/xxx檔案夾,會在generic/system/app下產生apk檔案以及同名的xxx.odx檔案,但是這個apk檔案是不可以直接安裝的,安裝時出錯。logcat會顯示does not include classes.dex。

解決:‘發現Android的ROM中有很多odex檔案,相對於APK中的dex檔案而言這個odex有什麼作用呢? Android123提示大家,如果你仔細觀察會發現檔案名稱時一一對應的,同時那些對應的apk檔案中沒有dex檔案。這樣做可以使其廠商保證一定的反盜版,因為沒有沒有dex檔案的apk是無法正常安裝的,而廠商直接將odex和不完整的apk檔案放到手機rom固化到/system/bin中可以讓一般使用者無法正常匯出使用。’其實含有dex的檔案在generic/obj/APPS下面的xxx_intermediates檔案夾下,下面的xx.apk.unaligned和xxx.apk.unsingned是包含dex是可以安裝的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.