麒麟系统编译jcef
获取系统
可以从优麒麟的官网获取最新版22.04、20.04和V10的安装包,我这里用的是一个老版本。
https://www.ubuntukylin.com/downloads/
安装过程这里就省略了,基本上按照提示来就行了。
下载JCEF代码
jcef项目在Bitbucket上,地址如下:
https://bitbucket.org/chromiumembedded/java-cef/src/master/
现在jcef在Github也有代码了,但是提issue的话最好是去Bitbucket上:
https://github.com/chromiumembedded/java-cef
sudo apt-get install git #麒麟系统有的版本并没有git需要先手动安装一下
git clone https://github.com/chromiumembedded/java-cef.git #下载源代码
编译JCEF
其实打开代码里的CMakeLists.txt
可以看到编译的要求和基本的步骤,可以看到最新版的jcef100要求的CMake的最低版本是3.19,但是目前麒麟系统能下载到的最新版为3.5.1,不符合要求。这里的话有两种方法,一种是下载最新版CMake源码编译安装,另一种是编译一个老版本的jcef。
我选的是后一种方法,毕竟,用麒麟系统的人也不是那么需要最新版的代码。
查看git log可以发现,在2021年12月14日,jcef更新了MakeFile,而在此之前的jcef95要求的CMake版本是2.8。
使用git reset退回到CEF version 95.7.14+g9f72f35+chromium-95.0.4638.69这个版本。
git reset --hard ae6912a705e6a2a60f0f156fcc2e8c03bf8285c4
我们还需要安装build-essential
这个包。
sudo apt-get install build-essential
麒麟系统自带了JDK 1.8,但是并没配置Java Home,需要我们手动配置一下
vi /etc/profile
#在末尾添加
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#保存退出
#退出以后执行
source /etc/profile
然后就可以开始编译了:
cd /java-cef/src #到代码路径下src文件夹下
mkdir jcef_build && cd jcef_build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ..
make -j4
如果你的网络条件比较好的话,基本就可以顺利编译完成,但是如果不那么理想的话,可以手动去http://opensource.spotify.com/cefbuilds/下载一下编译所需要的文件,需要下载的是95版本Linux 64的包。将下载好的包放到java-cef/src/third_party/cef
路径下。
使用如下指令编译所需的Java Class文件。
cd /java-cef/src/tools
./compile.sh linux64
测试编译结果
cd /java-cef/src/tools
./run.sh linux64 Debug detailed
运行效果如图
打包
测试正常后可以使用打包工具进行打包,毕竟不可能每台机器都这样编译一通。
cd /java-cef/src/tools
./make_distrib.sh linux64
打包的文件在/out
路径下。
最后
其实,官方也知道jcef这个编译是个大坑,没个半天功夫根本搞不定,于是官方把jcef运行需要的包和可执行文件上传到了Maven,方便了太多。但是这个可执行文件在Windows下测试可行,而麒麟系统下却报错,有点可惜。
Windows下的maven dependency:
<dependency>
<groupId>me.friwi</groupId>
<artifactId>jcefmaven</artifactId>
<version>95.7.14.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/me.friwi/jcef-natives-windows-amd64 -->
<dependency>
<groupId>me.friwi</groupId>
<artifactId>jcef-natives-windows-amd64</artifactId>
<version>jcef-544024e+cef-95.7.14+g9f72f35+chromium-95.0.4638.69</version>
</dependency>
顺便提一嘴,这个native包用阿里的源下载不下来,后来适用华为的源下下来的。