1. 程式人生 > >[chromium][browser][idea][closed] 如何從android4.4.2的chromium_org中編譯出chrome_shell_apk

[chromium][browser][idea][closed] 如何從android4.4.2的chromium_org中編譯出chrome_shell_apk

以android4.4.2為例:

1. 環境準備

1)首先ubuntu上需要有Android4.4.2程式碼,最好是全編通過的

2)同時需要chromium的編譯環境,以及chromium的整套程式碼,確保編譯通過

3)把Android4.4.2程式碼中cp出一份Chromium_org程式碼,準備編譯


2.開始編譯

1) . build/android/envsetup.sh   

發現缺少toolchains的內容,從chromium工程中拷貝過來一份third_party/android_tools

2)再次執行. build/android/envsetup.sh   , 可能會提示需要ORACLE的JDK,安裝並修改PATCH, 再次執行. build/android/envsetup.sh   成功

3) 執行 android_gpy ,這時候會出現缺少thirdparty的情況,如下面的錯誤

gyp: /home/dopi/chromium_from_android4.4.2/third_party/libjpeg_turbo/libjpeg.gyp not found (cwd: /home/dopi/chromium_from_android4.4.2) while loading dependencies of /home/dopi/chromium_from_android4.4.2/ui/ui.gyp while loading dependencies of /home/dopi/chromium_from_android4.4.2/media/media.gyp while loading dependencies of /home/dopi/chromium_from_android4.4.2/content/content.gyp while loading dependencies of /home/dopi/chromium_from_android4.4.2/build/all_android.gyp while trying to load /home/dopi/chromium_from_android4.4.2/build/all_android.gyp


從chromium 根目錄拷貝breakpad

從chromium 的third_party程式碼中拷貝 libjpeg_turbo 、openmax_dl、libsrtp、webrtc、 libyuv、libvpx、trace-viewer、hunspell、speex

替換third_party的jsr-305、guava、cacheinvalidation


注:如果碰到name 'target_subarch' is not defined時說明第三方庫已經有64位的配置,但是主幹gpy中還沒有,修改第三方的gyp檔案


4)接下來就開始編譯了,試試 chrome_shell_apk

ninja: error: unknown target 'chrome_shell_apk'

版本太老,不認識chrome_shell_apk,  build\all_android.gyp中可以檢視對應target


5) ninja -C out/Release/ chromium_testshell

這裡發現還缺少部分third_party的程式碼

替換third_party的sfntly 、snappy、expat/files/lib、ashmem、lss等程式碼

跳出總編譯程式碼12189,總算開始編了


6)編譯過程中出錯

../../third_party/webrtc/modules/audio_coding/neteq4/audio_classifier.h:18:22: fatal error: analysis.h: No such file or directory

替換third_party的opus、libjingle、usrsctp程式碼,

需要重新android_gyp,然後再編譯


但是jingle內容有編譯錯誤


7)這樣下去把Android4.4.2的根目錄程式碼替換可不是我的本意,需要轉變思路,

先把WebRTC刪除(如何刪除另一文章中再寫)

把根目錄的jingle和third_party的libjingle換回來


8)content\public\android\java\res\values\attrs.xml 檔案頭不對

9) 再修改ui/compositor/ui\compositor\compositor.cc 錯誤 

10)修改third_party\WebKit\Source\core\platform\graphics\chromium\FontCacheAndroid.cpp ,把locale引數去掉


編譯成功