去年就买了OrangeUI【FMX三方SDK服务-VIP】工具,前天听了王老师直播后,昨天第1次尝试着使用它,照着老师的步骤全部重新做了一遍,感觉很好,把实现过程和心得写出来,分享给大家。
一、安卓
1、概念
JAR(计算机文件格式)
在软件领域,JAR文件(Java归档的文件,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。
JAR文件是一种归档文件,以ZIP格式构建,以.jar为文件扩展名。用户可以使用JDK自带的jar命令创建或提取JAR文件。也可以使用其他zip压缩工具,不过压缩时zip文件头里的条目顺序很重要,因为Manifest文件常需放在首位。JAR文件内的文件名是Unicode文本。
.jar文件的构成(符合MVC开发模式):
1.1、Java类文件(C):一般是将源文件.java编译后的.class文件,相当于在windows下delphi的源文件.pas编译后的.exe文件,只不过是多个.exe文件,它们之间可有关联性、可以相互调用,java将其提取出来单独在jar包中创建进一步的路径,可以包含常用约定俗成的bean、controller、net、protocol、utils、view目录及其它被调用的自定义目录,在其下及其子路径下放置相应的.class文件。它们是java代码的逻辑核心,是控制部分。
1.2、Java的元数据文件(M):相当于于delphi写的类所对应的运行时类信息RTTItype所包含字段、属性、方法的描述,java将其提取出来单独在jar包中创建了目录META-INF,在其下放置元数据的描述文件:MANIFEST.MF。它们是java代码的逻辑的元信息,是调用的信息列表,描述了.class类如何调用、调用些什么、是否存在对外资源的引用。
1.3、Java的资源文件(V):文本、图片及其xml描述等外部文件,相当delphi的App可执行文件目录下的外部文件列表目录下的文件,java将其提取出来单独创建了类似res的目录,供.class类按照M元数据描述去调用。它们是java代码的外部资源文件,C按照M加载的外部文件。
1.4、与.jar同级路径下可以附带一个Java描述文件,但不是必须的:AndroidManifest.xml,用于都上述进行进一步的描述和调用。
2、jar如何共享给第三方,即它的sdk软件开发包(如果你的应用需要开放,就类似这样构建)
2.1、方式:在.jar同级路径下分目录进行扩展,有这样一些路径结构:
2.2、路径结构:
符合java路径标准,比如com.tencent.liteav.demo.pla
2.2.1、com路径:其下放放公开的sdk中被调用的.class文件,这个是sdk核心的公开的功能代码的类,核心类库,其它功能的开发都通过它来扩展。
2.2.2、res目录:其下放第三方调用它所必须的资源文件,这个是可附属的必备条件。
在res文件夹下还可以定义一下级目录,比如:
res/color res/drawable res/drawable-xxhdpi-v4 res/layout res/values
res/anim:这里存放的是动画资源。
res/xml:可以在Activity中使用getResource().getXML()读取这里的资源文件
res/raw:该目录下的文件可以直接复制到设备上,不能有子文件夹,编译软件时,这里的数据不需要编译,直接加入到程序安装包中,使用方法是getResource().OpenRawResources(ID),其中参数ID的形式是R.raw.XXX。
会在R.java资源代码(C类)文件下生成标记,这里的资源会在运行打包操作的时候判断哪些被使用到了,没有被使用到的文件资源是不会打包到安装包中的。
2.2.3、libs目录:其下放公开的sdk中被调用的.jar文件及其对应的.so动态库文件目录(文件目录最好分处理器平台:arm64-v8a、armeabi、armeabi-v7a、mips、x86等),相当于delphi的类库的路径,这个是sdk核心的公开的功能代码的接口。
2.2.4、JNI目录:其下放公开的sdk中附属的开放功能的那部分接口文件.so,相当于delphi的dll文件(文件目录最好分处理器平台:arm64-v8a、armeabi、armeabi-v7a、mips、x86等),相当于delphi的dll动态库的路径,这个是sdk附属的公开的功能代码的接口,可供调用者以android的JNI方式调用。
2.2.5、aapt目录:其下放AndroidManifest.xml描述文件,描述sdk发布的.so的版本及对res文件的引用规则,供重构资源代码R.Java及用JDK的jar命令进行重构编译类R.Class文件。参考:http://www.voidcn.com/article/p-pnbctjtd-wu.html :资源文件详解生成资源类文件(R.java)。
2.2.6、aidl目录:配置该库的build.gradle文件(Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。简单的说,Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。),其下的文件不是必须的。
2.2.7、assets目录:不会在R.java资源代码(C类)文件下生成相应的标记,assets文件夹可以自己创建文件夹,必须使用AssetsManager类进行访问,存放到这里的资源在运行打包的时候都会打入程序安装包中,对外共享sdk时,一般任何被调用的文件。
3、delphi调用第三方Android SDK集成的思路及步骤
3.1、下载 SDK + Demo 开发包,并仔细阅读官方开发及调用说明:很重要。
3.2、导入必须的aar(或jar)到工程中
aar:本质是jar+其它的一些资源文件,包括其依赖的其它三方库:也是一种java归档文件,用户也可以使用JDK自带的jar命令创建或提取JAR文件。
3.3、导入必须的依赖库jar到工程中
3.4、Android权限声明:在工程的AndroidManifest.xml中声明( 3.7的部署工具会自动写入)。
3.5、参考其Demo开发包
3.6、转换其核心入口jar代码为pascal代码*.pas:用OrangeUI购买后附送推荐的老猫工具:JarOrClass2Pas_FlyingWang V1.0.2018.226 附赠 java 转 Jar.rar,https://www.orangeui.cn/ ,联系他们购买【FMX三方SDK服务】,高性价比。
3.7、用OrangeUI部署和生成工具自动产生和部署aar对应的R.java源代码、编译文件R.Class,及其重新打包的jar文件:FMXSDK布署工具.rar,手工做很容易出错不好找原因,https://www.orangeui.cn/ ,联系他们购买【FMX三方SDK服务】,高性价比。
3.8、检查:添加到工程jar的是否全面,检查工程中的sdk核心入口转换文件*.pas,及其必须的sdk路径结构。
3.9、调用SDK核心方法使用其功能:详见sdk官方说明。
3.10、初次Build及Deploy工程:编译并分发必须的项目动态库
3.11、再次Build或运行工程:在项目动态库的基础上,编译、链接第三方jar和其aar的资源类包jar
二、IOS(待续)
三、本博客相关知识:
3.1、delphi XE关于Android四大组件之ContentProvider:案例delphi XE加载Android手机图片的效率:
https://blog.csdn.net/pulledup/article/details/105642380
3.2、续:看看Android四大组件之ContentProvider的内容提供者,我们还有哪些可在delphiXE中运用:
https://blog.csdn.net/pulledup/article/details/105699037
3.3、delphiXE关于Android四大组件五大存储六大布局的AndroidManifest.xml的设置(一)
https://blog.csdn.net/pulledup/article/details/105654758
3.4、我对学习delphiTeacher的《delphi调用及封装Android原生控件》的学习和研究点滴体会之(二)
https://blog.csdn.net/pulledup/article/details/105134381
3.5、Delphi版本信息Version Info(Android个性化AndroidManifest.template.xml包模板文件;IOS或OSX修改info.plist.template.xml
https://blog.csdn.net/pulledup/article/details/105220094
喜欢的话,就在下面点个赞、收藏就好了,方便看下次的分享: