最近使用android原生开发apicloud自定义模块,走了很多弯路,甚至犯一些低级的错误,这些都是对apicloud不了解造成的,唉,就不多废话了,直接进入正题。如有不对的地方欢迎指正
工具
开发工具 android studio 3.1.4
遇到的一些问题
- 使用android studio开发首先要搭建好开发环境,开发环境是你在开发模块的时候测试用的。跟你最后打包的模块基本没啥关系,开发环境可以看官网的文档或是视频都可以。这是第一步。
- 在添加模块的时候需要注意一点,添加时最低api选择9,要不然云编译会报错。
- 添加模块后,模块在build的时候可能会报错,上传这个模块下添加的远程包就可以了。
- 在最后打包的时候,json文件格式要对,最好不要新建text文件然后来改后缀名(可以使用别的工具新建,如:HBuild或其它),这些可能都会报错(模块未绑定)。
- 最后上传后,如果是用android studio 开发的 不能自定义loader,需要云编译,并选择升级环境测试,这样模块才会绑定成功。
- 打包最好使用eclipse的方式,AS3.1.4之后按照官方的并卵用。
- 一个项目的各个模块的包是共享的,如果一个模块包含了另一个模块的jar或其它相同的文件,编译就会报错、所以要把另一个模块的相同的文件去掉。
- 在打包过程中,需要把原来打包好的文件删除,然后在打包(因为在原文件中删除的文件打包的时候不会被删除,打出来的包还包含之前删除的文件),否则可能编译不通过。
- 由于包是共享的,所以也可以单独把所用到的资源另外打包成一个模块来依赖使用(例如:两个模块都需要用到相同的jar,而两个模块都需要解耦,那么这个就很有用了)。
- 在同时用到service和receiver的时候,需要service能够访问receiver,需要设置它们在同一个进程里,如service 设置为android:process=“:push”,receiver也需要设置相同的进程android:process=“:push”。
- 在生成jar的时候不知道为什么,在jar包里面会自动创建example目录并且生成BuidConfig.calss文件,这时候如果自己的包在example打包编译loader的时候可能会报错,解决办法是把自己的包移出example目录下。
android studio3.1.4 生成jar包的方法
1、在本模块下配置build.gradle文件
task makeJar(type: Copy){
delete 'build/libs/lcmqttservice.jar'
from('build/intermediates/packaged-classes/release/')
into('build/libs/')
include('classes.jar')
rename('classes.jar','lcmqttservice.jar')
}
makeJar.dependsOn(build)
其中lcmqttservice可以自己定义,这个配置写在android {}下或外面都是可以的。
配置好后 Sync Now,然后到Gradle—>other—>makeJar(点击执行生成jar包,如果上面没有配置对 这里是不会有该个目录的),最后生成的jar包在build/libs目录下.
2、直接使用AS提供的
在Gradle—>build—>assembleRelease(点击直接运行)或者、Gradle—>other—>bundleRelease也可以,执行成功后在build/intermediates/packaged-classes/release/classes.jar
如下图:
或者