A:要求HBuilderX1.4.0及以上版本,并且必须是uni-app项目 老版本HBuilder不支持(请迁移到最新版本的HBuilderX),5+APP及Wap2App项目都不支持调用uni-app原生插件。
A:HBuilderX中自带的默认真机运行基座不包含任何uni-app原生插件,所以不支持直接调用uni-app原生插件。 必须使用自定义基座才能支持真机运行调用uni-app原生插件
A:默认真机运行的基座中不包含任何原生插件,所以不能调用uni原生插件,必须自定义基座
A:插件下架会导致已经使用该插件的app无法再打包,这涉及到插件使用者的利益,所以原则上不允许插件下架。如有特殊原因需要下架请使用注册账号邮箱发邮件到service@dcloud.io进行申请,并详细描述下架原因
A:插件作者需注意保持好版本质量和向下兼容。一旦提交市场新版插件,旧版插件就不能再使用。已经使用旧版插件的App,此后再次云打包,会直接集成新版插件。也就是插件的更新不当可能造成已经使用插件的开发者无法及时发布新版应用。
A: 插件 与 HBuilderX内置模块 使用的库冲突,可以按以下方式解决
XXX模块
才可以正常使用配置ios-exclude.txt解决冲突
XXX
模块 与此插件不兼容,避免插件使用者勾选了相关模块导致了依赖库冲突原生开发官方QQ交流群
联系管理员A:两个插件之间的依赖库冲突,这种情况多数是插件使用了相同的库,可以按以下方式解决
配置ios-exclude.txt解决冲突
A:配置ios-exclude.txt解决冲突
如果插件中包含的库(.a或.framework),与 其它插件 或 HBuilderX内置模块 存在冲突,可以配置插件中冲突的库不参与编译打包来解决冲突。
比如 插件A 中使用的 xxx.a 与其它库冲突,可以在 uni-app项目的 nativeplugins/插件A/
目录(云端插件需要手动创建目录)中创建 ios-exclude.txt
文件,文件内容如下:
xxx.a
每行写一个文件名,如下图所示:
A:插件依赖的云端仓储 dependencies 冲突解决
XXX模块
才可以正常使用。A:插件 与 HBuilderX内置模块 包含的依赖库冲突,这种情况多数是两者出现了重复类导致,可以按以下方式解决
XXX模块
才可以正常使用配置android-exclude.txt解决冲突
XXX
模块 与此插件不兼容,避免插件使用者勾选了相关模块导致了依赖库冲突原生开发官方QQ交流群
联系管理员A:两个插件之间的依赖库冲突,这种情况多数是插件中的jar/aar包含了相同的类,可以按以下方式解决
配置android-exclude.txt解决冲突
A:配置android-exclude.txt解决冲突
如果插件中包含的 jar/aar 依赖库,与 其它插件 或 HBuilderX内置模块 存在冲突,可以配置插件中冲突的 jar/aar 库不参与编译打包来解决冲突。
比如 插件A 中使用的 a_test.jar 与其它库冲突,可以在 uni-app项目的 nativeplugins/插件A/
目录(云端插件需要手动创建目录)中创建 android-exclude.txt
文件,文件内容如下:
a_test.jar
每行一个文件名,文件名不要包含任何目录路径
A:按以下步骤检测自己项目:
package.json
这也是多数同学容易犯错的地方。主要检查class
配置的信息与插件中的aar(iOS端为xxx.a 或者 xxx.framework)是否匹配。A:按以下步骤检测自己项目:
package.json
这也是多数同学容易犯错的地方。主要检查class
配置的信息与插件中的aar(iOS端为xxx.a 或者 xxx.framework)是否匹配。A:按以下步骤检测自己项目:
HBuilder-Hello
工程AppKey
在plist
中修改dcloud_appkey
HBuilerX
导出的该项目的本地App资源 并放到 HBuilder-Hello/Pandora/apps/
下control.xml
中的 appid
为该项目IDxxx.a
或者 xxx.framework
加到 HBuider
,另外资源文件或者其他修改记得都在工程里配置好- (void)test:(NSArray*)files callback:(DCUniModuleCallback)callback
{
NSString * first =[files objectAtIndex:0];
}
简单举例 封装需要传入参数files 原生代码未做类型判断直接调用方法 可能前端传入的是个NSNumber 或者其他类型 objectAtIndex 原生层异常直接Crash
建议 插件开发者 做好参数防护 防止crash
在插件开发过程中,我们通常都是在Xcode里的示例工程里去添加内容到plist中,而云打包时脚本自己动态去创建, 比如是一个扫描证件类型的插件 如果在插件的package.json 里 没有声明 相机的描述字段 在调用时 可能会出现闪退
ios/BundleResources
路径下比如Firebase 之类的第三方服务 插件作者需要将 GoogleService-Info.plist
加入到工程才可正常调用
例如 NSString (md5) md5 很容易重复 而且类别会根据编译顺序执行 可能会产生 意想不到的情况 所以这点也要注意
Xcode->Devices And Simulators->View Devices Logs -> Crash
装上云打包后的ipa,调用自定义插件功能后闪退,可以连上Xcode,根据上边步骤 查看闪退信息,一般也可以获取有用的信息,便于快速查看