APICloud 自定义模块开的一些坑

最近使用android原生开发apicloud自定义模块,走了很多弯路,甚至犯一些低级的错误,这些都是对apicloud不了解造成的,唉,就不多废话了,直接进入正题。如有不对的地方欢迎指正

工具

开发工具 android studio 3.1.4

遇到的一些问题

  1. 使用android studio开发首先要搭建好开发环境,开发环境是你在开发模块的时候测试用的。跟你最后打包的模块基本没啥关系,开发环境可以看官网的文档或是视频都可以。这是第一步。
  2. 在添加模块的时候需要注意一点,添加时最低api选择9,要不然云编译会报错。
  3. 添加模块后,模块在build的时候可能会报错,上传这个模块下添加的远程包就可以了。
  4. 在最后打包的时候,json文件格式要对,最好不要新建text文件然后来改后缀名(可以使用别的工具新建,如:HBuild或其它),这些可能都会报错(模块未绑定)。
  5. 最后上传后,如果是用android studio 开发的 不能自定义loader,需要云编译,并选择升级环境测试,这样模块才会绑定成功。
  6. 打包最好使用eclipse的方式,AS3.1.4之后按照官方的并卵用。
  7. 一个项目的各个模块的包是共享的,如果一个模块包含了另一个模块的jar或其它相同的文件,编译就会报错、所以要把另一个模块的相同的文件去掉。
  8. 在打包过程中,需要把原来打包好的文件删除,然后在打包(因为在原文件中删除的文件打包的时候不会被删除,打出来的包还包含之前删除的文件),否则可能编译不通过。
  9. 由于包是共享的,所以也可以单独把所用到的资源另外打包成一个模块来依赖使用(例如:两个模块都需要用到相同的jar,而两个模块都需要解耦,那么这个就很有用了)。
  10. 在同时用到service和receiver的时候,需要service能够访问receiver,需要设置它们在同一个进程里,如service 设置为android:process=":push",receiver也需要设置相同的进程android:process=":push"。
  11. 在生成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

如下图:
APICloud 自定义模块开的一些坑_第1张图片
或者
APICloud 自定义模块开的一些坑_第2张图片

你可能感兴趣的:(android)