[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引數去掉
編譯成功