uniapp开发原生module插件
准备
-
jdk1.8及以上
-
android studio 以下统称 ide
-
官方sdk
-
HBuilderx
开发
- ide创建一个No Activity
- 创建一个Module选择Android Library
- 导入官方sdk 作为参考
- 改变module build.gradle 的dependencies
- app添加uniapp-release.arr 插件 放在app->libs下,并且改变module build.gradle 并且syn now
- 在module 创建一个类 继承WXModule
写代码
-
TestModule
-
public class TestModule extends WXModule { String NAME = "name"; String AGE = "name" ; @JSMethod(uiThread = true) public void testText(JSONObject options, JSCallback callback) throws JSONException { Log.e("TestModule","成功调用"); String name = options.getString(NAME); String age = options.getString(AGE); JSONObject data = new JSONObject(); if(name != null && !name.isEmpty() && age !=null && !age.isEmpty()){ int _age = Integer.parseInt(age); if(_age < 0 || _age > 30){ data.put("code","不合格!"); }else{ age = (_age >0 && _age < 10) ? "0"+age : age; data.put("code","合格:"+"姓名"+name+"年龄"+age); } }else { data.put("code","输入无效"); } callback.invoke(data); } }
-
注册这个类
-
在app src main assets 导入官方的dcloud_uniplugins.json 将包名和方法写上去,并且删掉多余的然后开始打包
打包插件并且使用
- Gradle>testplugin>Tasks>other目录下找到assembleRelease 导出 arr文件
- 在module>build>outputs找到arr文件,并且放入uniapp项目指定的位置
- 然后选择制作自定义调试基座 证书随便找个网站生成安卓证书在线制作工具 (applicationloader.net)
- 然后用选择自定义调试,真机调试
android studio 调试出现key 未配置
- 删除原来的项目里面的assets>apps.xxxx.www文件和data>dcloud_control.xml里面的appid值
- HB创建一个项目,然后本地打包将打包文件替换那个删除文件,并且将appid 添加上去
- android studio 选择build>Generate signed Bundle or APK 选择apk。点击create new
- 文件目录放在项目下面并且跟test.jks同一级。并且keystore 为后缀 。别名和密码是关键。其他无所谓
- 然后更改build.gradle 配置文件 别名和密码和文件名要一一对应。
- cmd进入到刚刚创建的keystore下执行
keytool -list -v -keystore {your_app}.keystore
得到md5,sha1,sha256 - 然后进入HB后台管理
https://dev.dcloud.net.cn/pages/app/list
项目里面,appid名字选择离线打包key,将build.gradle包名和获取sha1,md5,sha256密钥写上去得到key,替换项目里面AndroidManifest.xml里面的meta-data标签里面的android:value
苹果原生插件开发
-
插件工程初步准备
- 创建一个frameword工程,然后将头文件.h 删掉
- 选中工程名 在
TARGETS->Build Settings
中,将Mach-O Type
设置为Static Library
-
总工程准备
- 打开
iOSSDK/HBuilder-uniPluginDemo
工程目录,双击目录中的HBuilder-uniPlugin.xcodeproj
- 将插件工程引入总工程
- 引入工程 选中主工程名,然后点击右键选择
Add Files to “HBuilder-uniPlugin”
选中准备好的工程的xcodeproj文件,然后勾选Create folder references
和Add to targets
- 引入依赖 选中主工程名,在
TARGETS->Build Phases->Dependencies/Link Binary With Libraries
两个都点击 + ,点击add - 由于插件工程头文件被删了,这里没有头文件,所以还需要引入头文件.
- 点开 HBuiler-Hello文件 能看到inc
- 点击插件工程的.xcodeproj 找到
TARGETS->Build Settings->Header Search Paths
双击右侧区域打开添加窗口 - 将inc 拖进去 那个 添加窗口 然后将模式改成
recursive
- 引入工程 选中主工程名,然后点击右键选择
- 打开
-
插件开发
- 头文件必须 .h
- 方法文件 .m
-
选中工程的hbuilder-hello->supporting file ->Builder-uniPlugin-Info.plist
文件
右键->Open As->Source Code找到
dcloud_uniplugins-
<dict> <key>hooksClass</key> <string>填写 hooksClass 类名 </string> <key>plugins</key> <array> <dict> <key>class</key> <string>填写 module 或 component 的类名</string> <key>name</key> <string>填写暴露给js端对应的 module 或 component 名称</string> <key>type</key> <string>填写 module 或 component</string> </dict> </array> </dict>
-
-
创建uniapp 工程 编写方法引入插件 uni.requireNativePlugin(“写暴露给js端对应的 module 或 component 名称”) 编写测试方法, 然后本地打包资源
-
应用资源导入到插件开发主工程的
HBuilder-Hello/Pandora/apps/
然后更改 control.xml uni-app id 即可, 然后运行
测试
- 创建uniapp项目,然后打包本地资源,替换apps文件
- 再hb后台获取appkey
- 参考manifest.json配置 配置工程的name那些 包工程 注意事件如下
-
启动工程
-
当bundle identifier 出现 multiple values 时
-
配置 appkey 和 插件 查看
-