Android ApiClound 自定义模块未绑定解决方案

由于公司发展需要决定由原生态开发转向混合开发。所谓混合开发就是我们android 开发人员和IOS开发人员各自对自己原生模块的代码进行封装,以便H5开发人员能够通过JS进行调用。 而原生和H5之间交互的媒介我们公司则选用了Apiclound 平台。

记录一下在封装apiclound自定义模块出现模块未绑定,应该从哪几方面考虑:

模块打Jar 包出现错误

  1. 我们知道android 打成jar 包是不含Resource文件夹下面的资源,有时候我们确实需要Resource文件夹下面的图片文件,音频文件,怎么办? 解决方案:把资源文件放置到Assets就可以解决该问题,通过context.getAssets().open(fileName) 读取文件即可。

  2. 打包成的 jar包中的.class 文件有且只能包含本模块中的类的.class文件,不应该包含引用jar包或者so包代码,有的时候jar中还会含有BuildConfig.class同样也删掉。除了手动删除文件我们也可以在build.gradle中写执行脚本也行,运行则是通过terminal控制台,输入 gradlew makeJar 脚本代码如下:

def SDK_BASENAME = "moduleName";//自定义模块名字
def SDK_VERSION = "";
def sdkDestinationPath = "build";
def zipFile = file('build/intermediates/bundles/debug/classes.jar')

task deleteBuild(type: Delete) {
    delete sdkDestinationPath + SDK_BASENAME + SDK_VERSION + ".jar"
}

task makeJar(type: Jar) {
    from zipTree(zipFile)

    baseName = SDK_BASENAME + SDK_VERSION
    destinationDir = file(sdkDestinationPath)

    //过滤不需要的class
    exclude "**/**/BuildConfig.class"
    exclude "**/**/BuildConfig\$*.class"
    exclude "**/R.class"
    exclude "**/R\$*.class"

    //只包含指定的class, com/module/....是我的module的路径,使用是替换成你自己的module路径
    include "com/module/**/*.class"
    include "/assets/**"

}

makeJar.dependsOn(deleteBuild, build)

生成的jar包中结构要类似于如下:

这里写图片描述

assets 文件夹根据项目需求来定,但是其它两个文件夹一定要有,尤其要注意META-INF ,如果没有该文件夹,上传到Apiclound,代码加载自定义的模块就会出现无法绑定自定义模块情况。
如果你的jar包是通过AndroidStudio的Rebuid Project 。在build/intermediates/bundles/debug 下得到的jar就要注意上面我说的了,一定要添加上META-INF.如果通过gradlew makeJar 则不存在此问题。

module.json书写不正确

module.json 中单个module格式如下:

Android ApiClound 自定义模块未绑定解决方案_第1张图片

多个对象时的module.json配置,对象与对象之间以逗号隔开:

Android ApiClound 自定义模块未绑定解决方案_第2张图片

一个文件下只能有唯一 一个module, 不存在多个 name class 。这里一定要注意。

严格遵守开发文档格式

Android ApiClound 自定义模块未绑定解决方案_第3张图片

这个一定要注意,可以在确认自己是严格按照开发文档格式开发之后,在考虑以上两点易错点。

在打出jar之后,可先在本地测试确认jar无误,再上传到Apiclound云平台上,注意测试工程lib下除了放置打成的jar包,还要放jar包引用的jar和 so包。

确认可以正常运行之后,上传自定义模块到Apiclound平台

Android ApiClound 自定义模块未绑定解决方案_第4张图片

最后使用ApicloundStudio 开发工具进行编译的时候,一定要拉一下最新代码,右键点击项目—–云端同步 —–更新,最后自定义编译Loder,将软件安装到手机上即可。

你可能感兴趣的:(H5)