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 环境构建

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

# 拉取构建使用的虚拟机
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 # 执行之前定义的脚本

Gluon 编译 JavaFx -> android apk的更多相关文章

  1. cocos2d-x 编译 安卓(android)apk文件

    摘要: 一.下载Android环境 搭建Android环境需要用到Android SDK.NDK.Ant和JDK: 下载Android SDK  下载Android NDk  下载Android JD ...

  2. android apk 防止反编译技术第四篇-对抗JD-GUI

    又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net ...

  3. 转: android apk 防止反编译技术(1~5连载)

    转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习. ...

  4. android apk 防止反编译技术第一篇-加壳技术

    做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成 ...

  5. 反编译Android APK及防止APK程序被反编译

    怎么逆向工程对Android Apk 进行反编译 google Android开发是开源的,开发过程中有些时候会遇到一些功能,自己不知道该怎么做,然而别的软件里面已经有了,这个时候可以采用反编译的方式 ...

  6. Android Studio编译好的apk放在哪里?

    Eclipse中编译好的apk文件时在bin文件中面的,可是在Android Studio有一个比較大的修改了,编译好的apk在android studio里面是直接看不到了,并且apk文件所在文件夹 ...

  7. Android apk反编译基础(apktoos)图文教程

    本文主要介绍了Android apk反编译基础,使用的工具是apktoos,我们将用图文的方式说明apktoos工具的使用方式,你可以参考这个方法反编译其它APK试试看了 很久有写过一个广工图书馆主页 ...

  8. Android Apk的反编译和加密

    这几天在上海出差,忙里偷闲学习了一下Apk的反编译工具的基本使用.下面就简单介绍一下如何将我们从网上下载的Apk文件进行反编译得到我们想要获得的资源文件和源码. Android的应用程序APK文件说到 ...

  9. mac android apk反编译

    在mac os系统上反编译android apk,首先需要准备好以下3个文件: 1.apktool:https://ibotpeaches.github.io/Apktool/install/ 2.d ...

  10. Android APK反编译(二)

    参考:APK反编译 工具介绍 apktool 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar 作用:将apk反编译成java源码(classes.dex转化成jar文件) ...

随机推荐

  1. Log4Net配置详解及输出自定义消息类示例

    1.简单使用实例 1.1 添加log4net.dll的引用.   在NuGet程序包中搜索log4net并添加,此次我所用版本为2.0.17.如下图: 1.2 添加配置文件   右键项目,添加新建项, ...

  2. Java中final用法与详解

    final作为Java中经常用到的关键字,了解final的使用方法是非常有必要的. 这里从final关键字在数据域.方法和类中三个方面分析final关键字的主要用法. final应用于基本数据类型 1 ...

  3. 诺基亚8110 4G手机强制格式化方法

    关机状态下,先按住上键,再按住开机键,出现开机动画时松开开机键,出现硬割界面下键选择第一个wipe用开机键确认yes,再次出现硬格界面,下键选择第二个wipe用开机键确认yes,再次出现硬格界面开机键 ...

  4. Vue this.$refs的使用

    ref 写在标签上时:this.$refs.名字 获取的是标签对应的dom元素 ref 写在组件上时:这时候获取到的是子组件的引用

  5. oeasy教您玩转python - 002 - # 你好世界 - 各位同学除夕快乐,除旧布新之时预祝能玩

    ​ 你好世界 回忆上次内容 了解了 Python 安装了 Python 进入了 Python 退出了 Python 可是我们什么也没有做就离开了 IDLE 游乐场! 你好世界 #首先进入Python3 ...

  6. PowerShell 基本使用

    PowerShell Basic PowerShell Basic 简要 基本使用 PowerShell cmdlet 获取帮助 PowerShell 别名和参数 编写一个 PowerShell 脚本 ...

  7. 回顾 JavaScript

    回顾 JavaScript 阅读前建议了解 ECMAScript 是什么? 不然你可能会疑惑下面内容 JavaScript 中掺杂的 ECMAScript 需要大体了解过 JavaScript 主要是 ...

  8. JAVA私有构造函数---java笔记

    在Java中,构造函数是一种特殊的方法,它用于初始化新创建的对象.当我们创建一个类的实例时,构造函数会自动被调用. 构造函数可以有不同的访问修饰符,如public.protected.default( ...

  9. Prometheus 基于Python Django实现Prometheus Exporter

    基于Python Django实现Prometheus Exporter 需求描述 运行监控需求,需要采集Nginx 每个URL请求的相关信息,涉及两个指标:一分钟内平均响应时间,调用次数,并且为每个 ...

  10. Vue 打包后自定义样式无法覆盖elementUI组件原有样式问题

    Vue 打包后自定义样式无法覆盖elementUI组件原有样式问题   by:授客 QQ:1033553122   开发环境   Win 10   node-v10.15.3-x64.msi 下载地址 ...