中文:在很多时候会需要自定义Delphi的fmx.jar
比如在对接一些三方SDK的时候要和底层的FMXNativeActivity打交道,
或者发现了fmx.jar中的错误,又或者想要增加点功能。
下面我以10.3.3为例介绍一下如何操作
- 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节点是工程的源码,可以展开来
- 好了,接下来我们就来尝试导出jar
我们要导出所有的代码到jar中,所以在src节点中右键->Export
选择”JAR file”
在这里选择你要生成的jar路径和文件名
- 第一次导出会报错,一般是因为引用的其他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里面
有些重复的包可以删除
处理好后,左边就没有红色的叉叉了
清一下工程
再导一次
导出成功
- 然后你就可以在eclipse中修改fmx中的java源码,自己打包成fmx.jar来使用啦!
使用的时候记得先将自带的fmx.jar禁用掉。