将module写成cordova插件

前言:最近公司app需要集成一个即时通讯的框架,这个框架不是主流的即时通讯框架,所有只有原生ios和android的集成方式(h5的也有,但是应该不是很稳定,框架是这样介绍的)。由于公司app是ionic框架写的,所以在集成之初我就感到了有些难度,因为之前写的cordova插件都只是调用了原生的一些硬件和数据(摄像头、相册、设备ID等),最多就是再加一个jar包。但是这个im框架给你的是一个module,放在原生里做就是将这个module里面对象初始化再调用一个方法就可以开始即时通讯....就这么简单.........      但是问题来了,module怎么集成为cordova插件呢,我看别人的cordova插件也没有写很多个类和xml文件啊........  几天过后...  冒出个想法  可不可以把这个module打包为aar包再引入呢?  说干就干!!!

1、首先解决module本身存在的一些错误,类引用错误或者R文件引用错误等。

2、打包aar

在android studio中点击右侧的gradle,可以看到你的项目还有module,然后双击 module(你的module名)/Tasks/build/assemble开始打包,打包成功后在你的module/build/outputs/aar下可以看到你的aar包

3、为了方便后续介绍,就姑且将module命名为 xmIM吧  那么aar就是xmIM-release.aar

打包好后先测试一下,新建一个android项目,将xmIM复制到libs目录下,并在项目的build.gradle文件里引入

 

dependencies {
    //    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:27.0.0'
    compile(name: 'xmIM-release', ext: 'aar')
}

并且在dependencies上面加上

 

 
 
android {
    compileSdkVersion 27
    buildToolsVersion "27.0.0"
    defaultConfig {
        applicationId "com.example.administrator.myapplication"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    repositories{
        flatDir{
            dirs 'libs'
        }
    }
}

然后再MainActivity里面调用aar包里面的方法,这时候发现一个问题,类被重复引用! 原来,我这个module本身就引用了一些jar和aar文件,然后再在新建的项目里面引用就造成了重复引用。

经过多次测试,发现aar包里引用的jar包不用重复引入,但是aar包需要在新建项目里重新引用! 还没有去深思这是为啥。

到这一步应该能在新建项目里引用aar包里面的类方法了。有什么问题欢迎留言一起讨论。

 

4、将arr包集成到cordova插件 

首先新建一个cordova插件,方法请戳我

这里是我的插件demo,目录如下:

aar文件我直接放在了android目录下,gradle文件我也放进来了,并进行了重命名。aar与gradle文件需要在plugin.xml文件里面配置。

下面是gradle文件的配置,项目引用的网络上的sdk也要在这里引入,aar包也需要在这里引入。上文module引入了一些jar包,module打包成aar包后不需要重新引入jar包。

 

下面说一下过程中高发的错误-----------------------------------------------------------------

1、com.android.ide.common.process.ProcessException: Failed to execute aapt

这种错误可以试试切换maven源,百度有很多阿里源,先抛出一个=====>http://maven.aliyun.com/nexus/content/groups/public/

2、Suggestion: add 'tools:replace="android:icon"' to element 这种大部分原因是资源文件重复

解决方法如下:

分别在manifest和application中加入如下内容:

 

<manifest  

xmlns:tools = "http://schemas.android.com/tools" >
 

<application  

tools:replace = "android:icon" >
 

 

 

写的太仓促,很多地方都说的有点模糊,如有什么不懂的尽管留言!有路过的大哥也请指教!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值