(* ************************************************ *)(* *)(* 编写:爱吃猪头肉 & 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
鸟的翅膀在空气里振动,那是一种喧嚣而凛裂的,