如何编译Delphi的fmx.jar

中文:在很多时候会需要自定义Delphi的fmx.jar

比如在对接一些三方SDK的时候要和底层的FMXNativeActivity打交道,

或者发现了fmx.jar中的错误,又或者想要增加点功能。

下面我以10.3.3为例介绍一下如何操作

  1. Delphi提供了fmx.jar的所有源码,

在C:\Program Files (x86)\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx这个目录中

一看到这些文件,玩过一点Android的同学可能已经知道了,这个目录其实是一个Eclipse的工程,

对,我们要用到Eclipse,因为我经常要用到封装jar,所以装了的,

我们打开它:

将fmx这个工程导入到eclipse中,步骤如下:

先在左边的工程管理视图中右键->Import,

点击Browse,选择工程根目录,

将fmx的目录路径拷到Root Directory框中,按一下回车

比如:C:\Program Files (x86)\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx

中间表格会显示出来搜索到的工程

点击确定,左边的工程管理视图中会显示出来fmx的Android工程

src节点是工程的源码,可以展开来

  1. 好了,接下来我们就来尝试导出jar

我们要导出所有的代码到jar中,所以在src节点中右键->Export

选择”JAR file”

在这里选择你要生成的jar路径和文件名

  1. 第一次导出会报错,一般是因为引用的其他jar没有找到的关系,

它说我们classpath中的很多class files找不到,但其实这些源文件都是存在的,那就有可能是这些源文件所引用的其他包不存在,

我们来检查一下,先右键fmx工程,选择最底下的”Properties”,查看工程属性

在Java Build Path的Libraries中,有很多红色的叉叉,

表示发现该工程所引用的其他jar不存在,

比如android-support-v4.jar不在..\..\libs目录中,

com-google-android-gms.play-services-analytics-impl.16.0.8.jar不在..\libs\gms\目录,

其实这些jar都是delphi中自带的,随便打开一个将Android节点展开来都能看的到位,

它们在C:\Program Files (x86)\Embarcadero\Studio\20.0\Lib\android\debug目录中,

我们要在C:\Program Files (x86)\Embarcadero\Studio\20.0\source\rtl\androiddex下建一个libs目录,将这些jar放进去

再在libs里面建一个gms目录

将谷歌的其他jar放到gms里面

有些重复的包可以删除

处理好后,左边就没有红色的叉叉了

清一下工程

再导一次

导出成功

  1. 然后你就可以在eclipse中修改fmx中的java源码,自己打包成fmx.jar来使用啦!

使用的时候记得先将自带的fmx.jar禁用掉。