使用ionic调用aar 插件开发。
我使用的是第三方的aar的库去做的。
1.使用plugman生成对应的插架的目录。(不是本文的重点)参考地址 参考地址2
2.使用 plugman 生成配置文件
plugman createpackagejson <这里填第一步项目的目录的根目录>
3.添加android 平台
ionic platform add android
如果运行不了,就换个命令
ionic platform add –platform_name android
4. 生成之后,请修改插件 config.xml 配置
说明:将生成的java文件,复制到指定的android项目文件下
与
对比查看。
param标签的值,就是最后的java文件的地址,一定要一样,不然插件是调不起来的。
5.添加aar包的配置,添加aar包,记得添加build.gradle 配置
<?xml version='1.0' encoding='utf-8'?>
<plugin id="jin_scan" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<js-module name="scan" src="www/scan.js">
<clobbers target="cordova.plugins.scan" />
</js-module>
<platform name="android">
<config-file parent="/*" target="res/xml/config.xml">
<feature name="scan">
<param name="android-package" value="jin_scan.scan" />
</feature>
</config-file>
<config-file parent="/*" target="AndroidManifest.xml"></config-file>
// 这里是配置你的java的文件的目录
<source-file src="src/android/scan.java" target-dir="src/jin_scan/scan" />
// 这里要配置你的gradle编译的文件的位置
<framework src="src/android/build.gradle" custom="true" type="gradleReference" />
// 如果你的aar包里面有activity的话,那么这里必须要进行配置,不然会没有权限或者Activity没有申明的错误
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<activity android:name="com.google.zxing.client.android.CaptureActivity" android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden|screenSize" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden" android:exported="false" />
<activity android:name="com.google.zxing.client.android.encode.EncodeActivity" android:label="Share"/>
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest">
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-feature android:name="android.hardware.camera" android:required="true"/>
</config-file>
// 这里是配置你的aar的地址, 后面的target是指你的复制到项目里面的aar的名字。要填的跟gradle里面一样,
//不然在gradle添加到项目中的时候会找不到aar包
<resource-file src="aar/barcodescanner-release-2.1.2.aar" target="aar/barcodescanner-release-2.1.2.aar" />
</platform>
</plugin>
6.编写java调用aar库的方法,要在自动生成的那个库里面写。
7.编写www文件夹下的js方法,调用原生的方法。
注意:
7.1 exec方法去调用本地的java方法,参数要对应好。不然会找不到方法插件的名字,调用的方法名
7.2 调用上一步的js,使用 cordova.plugins.scan.scan () 这个 方法去执行,第一个scan是指你的插件的名字,你去看plugin.xml里面的clobbers 这个标签,target就是你怎么去调用插件。第二个scan是你的插件里面的方法。
我的整个插件下载地址:插件项目下载地址
ps:目录结构
|项目目录
| – aar
| —- aar的包地址
| – src
| —- android
| —— java的代码的地址
| – www
| – build.gradle
| – plugin.xml
| – package.json
8.将本地的plugin导入到项目中
cordova plugin add <本地插件目录>
移除插件:
cordova plugin rm <插件的名字>
参考地址1,这个地址里面的gradle有格式问题
建议直接下载我的插件的整个项目参考,配置文件。
我的整个插件下载地址:插件项目下载地址
问题总结:
1.插件调用不起来:直接再js文件里面打alert(“”);看 你的js文件是否正在
2.看Android 项目下 res/xml文件下的config.xml 文件,找到你的插件名字,feature标签。
<feature name="paymentPlugin">
// 排除了1之后,看value这个java文件是否存在。
<param name="android-package" value="payment_id.paymentPlugin" />
</feature>
3.如果不能debug的话,仔细看一下你的类是否被调用了,我出现debug的情况是因为,我debug的类是重复生成的,没有删除。实际运行的是另一个相同的类。
4.有时候需要重新生成android项目,使用下面的命令行:
ionic platform add –platform_name android