[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的情况,如下面的错误

扫描二维码关注公众号,回复: 4887458 查看本文章

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参数去掉


编译成功

猜你喜欢

转载自blog.csdn.net/dopi/article/details/27661095