麒麟系统编译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

运行效果如图
jcef test

打包

测试正常后可以使用打包工具进行打包,毕竟不可能每台机器都这样编译一通。

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包用阿里的源下载不下来,后来适用华为的源下下来的。

发表评论

您的电子邮箱地址不会被公开。