第三方JNI SDK开发——Delphi xe5

来源:互联网 发布:费正清 中国新史 知乎 编辑:程序博客网 时间:2024/06/13 19:48

(* ************************************************ *)
(*                                                                                                  *)
(*                   编写:爱吃猪头肉 & Flying Wang                  *)
(*               上面的版权声明请不要移除。        *)
(*                                                                                                  *)
(* ************************************************ *)


请大家从群共享下载(① FireMonkey[DELPHI XE5]  165232328)
java 文件 Classes.DEX 合并.zip
里头的
BuildDex.bat.utf8.txt
就是我们要讨论的重点。


我发现现在的 第三方 SDK 分 3 种。
1. HTTP 类的。webservice rest 等。用  INDY 控件 或 webservice rest 控件即可。
2. NDK SO 类的。大家看看 Androidapi.inc 和 Androidapi.NativeWindowJni 的内容,大家就知道如何调用了。EMB 代码中还有其他 SO 的。简单的说和 调用 DLL 差不多,就是不能 LoadLibrary。要静态定义接口。
3. JNI SO 类的。这种接口,给您 SO 的同时。会给您一些 JAVA 文件。

其中第 3 种里头还分 2 种。
3.1 JAVA 文件只有一个,就是 SO 文件的接口。
3.2 JAVA 文件很多,是对 SO 文件的再次封装。

我目前只知道 3.1 类型的做法。

先将 SO 文件发布到工程中。
打开工程后。
Project -> Deployment
打开的界面中
选择 configuration
选到 All configurations - All platforms 或者 All configurations - xxx platform。
在这个状态下 增加 或 删除 文件。
选择 新增 按钮,将 SO 文件加入。 然后编辑 RemotePath 列。路径是 \lib\armeabi ,就是和您的工程生成的 SO 文件放同一个目录。


然后 将 SDK 中的 JAVA 接口文件 带上路径 放入 SRC 目录。当然之前 SRC 里的文件目录都删了吧。
修改 BuildDex.bat 。
将里头的 JAVA 路径修改成您现在的路径。

顺便修改 BAT 中的各种路径定义。确保路径是正确的。

然后运行 BuildDex.bat 。

这样您就得到了带有 SDK 的 DEX 文件了。

这次您需要将 classes.dex 的发布修改下。不再从 EMB 的安装目录找这个文件,而是使用这个新生成的文件。

最后,您按照 群共享的文档 JNI 翻译 转 Delphi 的 经验 方法.txt 里头的说明,将您的 JAVA 接口文件翻译成对应的 JNI PAS 文件。

对于 3.2 类型的 SDK。
目前只能猜想
1. 直接将 JAR 和 DEX 合并,翻译 JAR 中的 大部分或者是有 JAVA 接口文件。
2. 想办法将 SDK 中的 JAVA 文件和 JAR 都和 DEX 合并。但是接口文件好像还是需要翻译的。

具体开参考 jar 文件Classes.DEX 合并——Delphi导入(sdk)jar
0 0