Gluon 编译 JavaFx -> android apk

Gluon 编译 JavaFx -> android apk

本文的内容属 在linux服务器上 搭建 Gluon 编译 android-apk 环境

这一篇文章直接跟着官网操作一次性成功

虚拟机版本

  • centos8 Architecture: x86-64

开始安装相关前置工具

  • gcc version 6 or higher
  • ld version 2.26 or higher
bash 复制代码
sudo yum update
sudo yum install gcc ld -y
sudo yum install pkgconfig gtk3-devel libXtst-devel -y

如果遇到连接超时的问题,就更新一下yum源,我切换的是阿里云的yum源,centos8的系统参考这篇文章

下面是我提炼过的内容

bash 复制代码
# 命令备份之前的repo文件
sudo rename '.repo' '.repo.bak' /etc/yum.repos.d/*.repo
# 运行以下命令下载最新的repo文件 
# 注意 我们不是阿里云的ECS实例
# 需要将后面所有命令中的源地址http://mirrors.cloud.aliyuncs.com替换为http://mirrors.aliyun.com
sudo wget http://mirrors.cloud.aliyuncs.com/repo/Centos-vault-8.5.2111.repo -O /etc/yum.repos.d/Centos-vault-8.5.2111.repo
sudo wget http://mirrors.cloud.aliyuncs.com/repo/epel-archive-8.repo -O /etc/yum.repos.d/epel-archive-8.repo
# 替换repo文件中的链接
sudo sed -i 's/http:\/\/mirrors.cloud.aliyuncs.com/url_tmp/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo &&  sudo sed -i 's/http:\/\/mirrors.aliyun.com/http:\/\/mirrors.cloud.aliyuncs.com/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo && sudo sed -i 's/url_tmp/http:\/\/mirrors.aliyun.com/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo
sudo sed -i 's/http:\/\/mirrors.aliyun.com/http:\/\/mirrors.cloud.aliyuncs.com/g' /etc/yum.repos.d/epel-archive-8.repo
# 重新创建缓存
sudo yum clean all && yum makecache

配置环境变量

bash 复制代码
vi ~/.bashrc # 编辑到用户环境变量中
bash 复制代码
export HISTSIZE=10000                # 设置最大条目数为 1000
export HISTFILESIZE=20000            # 设置最后一次会话保存的历史条目数为 2000
export HISTCONTROL=ignoreboth       # 忽略命令参数的重复和还未执行的命令
export PATH=$PATH:~/bin
bash 复制代码
source ~/.bashrc # 重载用户环境变量中

环境工具配置

Graalvm 环境构建

首先进入 wsl 找到一个合适的目录

bash 复制代码
# 拉取构建使用的虚拟机
mkdir ~/software ~/module
cd ~/software
wget https://github.com/gluonhq/graal/releases/download/gluon-22.1.0.1-Final/graalvm-svm-java17-linux-gluon-22.1.0.1-Final.tar.gz
cd ~/module
tar -zxvf ../software/graalvm-svm-java17-linux-gluon-22.1.0.1-Final.tar.gz

graalvm 是一个特殊的 java 虚拟机环境,主要是使用AOT模打包构建多个平台的虚拟机版本,它可以直接当做一个普通的 jdk 使用

配置 maven 环境
bash 复制代码
cd ~/software
wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz
cd ~/module
tar -zxvf ../software/apache-maven-3.9.9-bin.tar.gz

修改 maven settings 文件

bash 复制代码
vi ~/module/apache-maven-3.9.9-bin/conf/settings.xml
xml 复制代码
<!-- 添加镜像 -->
<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
<mirror>
    <id>repo2</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://repo2.maven.org/maven2/</url>
</mirror>
配置新的环境变量(我的 maven、graalvm 放到~/module 目录下的)
bash 复制代码
vi ~/.bashrc # 编辑到用户环境变量中
bash 复制代码
export GRAALVM_HOME=~/module/graalvm-svm-java17-linux-gluon-22.1.0.1-Final
## JAVA_HOME
export JAVA_HOME=$GRAALVM_HOME
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export MVN_HOME=~/module/apache-maven-3.9.9
export PATH=$PATH:$MVN_HOME/bin
bash 复制代码
source ~/.bashrc # 重载用户环境变量中

这里基本的环境已经配置好了,至于 andriod sdk 这里不用显式的去配置,因为 gluonfx 这个工具会在打包的过程中自动的下载相关的依赖,对这个 andriodSdk 非必须。

具体可以参考Gluon 官网文档

编译官网示例项目

准备一个专门执行 gluonfx 编译安卓的脚本

bash 复制代码
mkdir ~/bin
vi ~/bin/gluon_build_android
chmod +x ~/bin/gluon_build_android
source ~/.bashrc # 重载用户环境变量中

~/bin/gluon_build_android的内容如下

bash 复制代码
mvn clean package -DskipTests=true
mvn -P android gluonfx:build gluonfx:package -DskipTests=true

拉取官网示例项目 HelloFx

bash 复制代码
mkdir ~/module/git-repos
cd ~/module/git-repos
git clone https://github.com/gluonhq/gluon-samples.git
cd gluon-samples/HelloFx
gluon_build_android # 执行之前定义的脚本
相关推荐
程序员-Benothing3 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
‎ദ്ദിᵔ.˛.ᵔ₎3 小时前
linux 进程信号 (上)
linux·服务器
15Moonlight3 小时前
Linux网络(02):Socket 编程 UDP
linux·网络·udp
大圣编蚕4 小时前
初探 NDK 的世界:从零开始理解 Android 原生开发
android
云贝贝贝4 小时前
MySQL 慢查询定位与索引优化实战
android
wuminyu4 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
liulilittle4 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c
DongQiShanRen5 小时前
玄龙(上):TICK 主循环——意识心跳怎么跳
linux·jvm·数据库·人工智能·数据挖掘·rust
骑着蜗牛撵大象3275 小时前
服务下线不再炸:分层关闭、TCP 存活探测与负载均衡排水的落地套路
android·tcp/ip·负载均衡·tcp·高可用·健康检查·优雅关闭
小此方5 小时前
Linux网络(二十一):深入理解 TCP 异常处理:网线断开、Keepalive 保活机制与 Linux 内核传输层协议源码剖析
linux·网络·tcp/ip