Gluon 編譯 JavaFx -> android apk

南怪布德發表於2024-09-01

Gluon 編譯 JavaFx -> android apk

本文的內容是在linux伺服器上 搭建 Gluon 編譯 android-apk 環境

這一篇文章直接跟著官網操作一次性成功

虛擬機器版本

  • centos8 Architecture: x86-64

開始安裝相關前置工具

  • gcc version 6 or higher
  • ld version 2.26 or higher
sudo yum update
sudo yum install gcc ld -y
sudo yum install pkgconfig gtk3-devel libXtst-devel -y

如果遇到連線超時的問題,就更新一下yum源,我切換的是阿里雲的yum源,centos8的系統參考這篇文章

下面是我提煉過的內容

# 命令備份之前的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

配置環境變數

vi ~/.bashrc # 編輯到使用者環境變數中
export HISTSIZE=10000                # 設定最大條目數為 1000
export HISTFILESIZE=20000            # 設定最後一次會話儲存的歷史條目數為 2000
export HISTCONTROL=ignoreboth       # 忽略命令引數的重複和還未執行的命令
export PATH=$PATH:~/bin
source ~/.bashrc # 過載使用者環境變數中

環境工具配置

Graalvm 環境構建

首先進入 linux 找到一個合適的目錄

# 拉取構建使用的虛擬機器
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 環境
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 檔案

vi ~/module/apache-maven-3.9.9-bin/conf/settings.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 目錄下的)
vi ~/.bashrc # 編輯到使用者環境變數中
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
source ~/.bashrc # 過載使用者環境變數中

這裡基本的環境已經配置好了,至於 andriod sdk 這裡不用顯式的去配置,因為 gluonfx 這個工具會在打包的過程中自動的下載相關的依賴,對這個 andriodSdk 非必須。
具體可以參考Gluon 官網文件

編譯官網示例專案

準備一個專門執行 gluonfx 編譯安卓的指令碼

mkdir ~/bin
vi ~/bin/gluon_build_android
chmod +x ~/bin/gluon_build_android
source ~/.bashrc # 過載使用者環境變數中

~/bin/gluon_build_android的內容如下

mvn clean package -DskipTests=true
mvn -P android gluonfx:build gluonfx:package -DskipTests=true

拉取官網示例專案 HelloFx

mkdir ~/module/git-repos
cd ~/module/git-repos
git clone https://github.com/gluonhq/gluon-samples.git
cd gluon-samples/HelloFx
gluon_build_android # 執行之前定義的指令碼

相關文章