我写了一个很简单的安卓原生component组件,但是在uni-app中始终调用不到,以下是我的代码:
1、编写组件类:
组件类:
public class myConponent extends WXComponent<TextView> {
public myConponent(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData) {
super(instance, parent, basicComponentData);
}
public myConponent(WXSDKInstance instance, WXVContainer parent, int type, BasicComponentData basicComponentData) {
super(instance, parent, type, basicComponentData);
}
@Override
public void onActivityResume() {
super.onActivityResume();
}
@Override
public void onActivityPause() {
super.onActivityPause();
}
@Override
public void onActivityDestroy() {
super.onActivityDestroy();
}
@Override
protected TextView initComponentHostView(@NonNull Context context) {
TextView textView = new TextView(context);
textView.setTextSize(20);
textView.setTextColor(Color.GREEN);
return textView;
}
@WXComponentProp(name = "tel")
public void setTel(String telNumber) {
getHostView().setText("tel: " + telNumber);
}
}
组件注册:
public class myConponentWXComponent_AppProxy implements AppHookProxy {
@Override
public void onCreate(Application application) {
try {
System.out.println("组件注册开始");
boolean r = WXSDKEngine.registerComponent("mycomponent", myConponent.class);
System.out.println(r);
System.out.println("组件注册成功");
} catch (WXException e) {
e.printStackTrace();
}
}
}
2、打包aar
3、引入aar包,具体引用在附件中
以下是package.json代码:
{
"name": "mycomponent",
"id": "mycomponent",
"version": "1.0",
"description": "个人组件",
"_dp_type":"nativeplugin",
"_dp_nativeplugin":{
"android": {
"plugins": [
{
"type": "component",
"name": "mycomponent",
"class": "com.tipsoft.mycomponent.myConponent"
}
],
"hooksClass": "com.tipsoft.mycomponent.myConponentWXComponent_AppProxy",
"integrateType": "aar",
"minSdkVersion": "19"
}
}
}
4、调用组件,在nvue页面中调用代码,见附件。我在manifest.json也配置了nvue页面编译模式为weex
在调用组件之前,进行自定义基座打包。
5、页面上输出只有789,不能输出123456
这是个什么情况怎么调用才能成功显示出正常的控件
o***@qq.com (作者)
UNI3D01D4C这个是我的appId,我有两个插件,一个是mycompoent,一个是tipsoftvideo,采用的是自有证书打包,是不是需要把证书发给您?
2020-03-20 16:09
o***@qq.com (作者)
如果是打包没有把插件集成进去,那是不是需要做什么特殊配置,才能把插件打包进去?
2020-03-20 16:12
o***@qq.com (作者)
我不用云打包,离线打包的方式,不引用aar,直接把组件写在HBuilder-Hello项目,在HBuilderX中生成本地打包APP资源的方式集成到HBuilder-Hello项目,也是调不到自定义component组件
2020-03-20 16:20
o***@qq.com (作者)
我用weex.isRegisteredComponent("mycomponent");方式在nvue页面中获取组件的值,提示返回true
2020-03-20 16:44
DCloud_Android_ST
回复 o***@qq.com: 离线的时候你可以测试下component的initComponentHostView是否触发
2020-03-20 17:13
o***@qq.com (作者)
回复 DCloud_Android_ST: 测试过了,打断点,不会进入component任何方法。
2020-03-21 09:53
DCloud_Android_ST
回复 o***@qq.com: 那说明你的插件并没有正常载入注册。先确认云打包的APK中是否包含你的插件吧
2020-03-23 11:12
o***@qq.com (作者)
回复 DCloud_Android_ST: 怎么确认云打包的APK是否包含插件?
2020-03-23 14:05
DCloud_Android_ST
回复 o***@qq.com: 可以提供你的APK文件 或云打包APPID 我帮你查下
2020-03-23 14:40
o***@qq.com (作者)
回复 DCloud_Android_ST: UNI3D01D4C这个是我的appid
2020-03-24 09:56
DCloud_Android_ST
回复 o***@qq.com: <mycomponent>组件给高度
2020-03-24 11:58
o***@qq.com (作者)
回复 DCloud_Android_ST: 要在nvue页面给高度?是增加style="width:200px;height:50px"这样给高度,还是其它什么方式给高度?
2020-03-24 15:04
o***@qq.com (作者)
回复 DCloud_Android_ST: 给 style高度也是没有作用
2020-03-24 15:08
DCloud_Android_ST
回复 o***@qq.com: style给高度
2020-03-24 15:23
o***@qq.com (作者)
回复 DCloud_Android_ST: 给了style高度也是没有作用
2020-03-24 15:24
DCloud_Android_ST
回复 o***@qq.com: 云打包测试还是离线测试的 我看你之前给的appid云打包记录并没有
2020-03-24 15:33
o***@qq.com (作者)
回复 DCloud_Android_ST: 我没有进行云打包,只是打包了基座,离线测试也测试过,我现在进行一次云打包操作
2020-03-24 16:33
o***@qq.com (作者)
回复 DCloud_Android_ST: 云打包会把本地插件打包进去吧?我的那个测试都是在hbuilderX中直接运行在手机上进行测试的,离线测试也是直接运行在手机上调试。
2020-03-24 16:36
DCloud_Android_ST
回复 o***@qq.com: 插件必须云打包才生效 不管是自定义基座还是正式包 你多看看文档或者测试,我看加上高度就可以了
2020-03-24 16:47
o***@qq.com (作者)
回复 DCloud_Android_ST: android studio离线打包插件是否生效吗?我添加插件后,从新打包自定义基座,始终没有生效,对于文档我认真的看过很多次,怕自己错漏了什么配置,导致插件运行不起来。
2020-03-26 09:29
DCloud_Android_ST
回复 o***@qq.com: 有效。离线你可以debug。看你的插件代码是否正常调用啊。
2020-03-26 11:14
o***@qq.com (作者)
回复 DCloud_Android_ST: 如果离线有效,那就不需要云打包了,我直接导出生成本地打包APP资源,正常来说debug能进入到initComponentHostView方法,但实际是进不去这个方法
2020-03-26 16:25
DCloud_Android_ST
回复 o***@qq.com: 那肯定是你配置有问题。可参考SDK中的plugin示例
2020-03-26 17:29
o***@qq.com (作者)
回复 DCloud_Android_ST: 我现在己在把我能配置的都贴出来了,我反复查看官方示例,没有找到漏了什么配置,才在论坛发贴咨询。
2020-03-27 10:52
DCloud_Android_ST
回复 o***@qq.com: https://ask.dcloud.net.cn/article/13015 不行就用这个。
2020-03-27 10:56
o***@qq.com (作者)
回复 DCloud_Android_ST: 您好,我一直在研究这个问题,我今天拉了一个新项目,把自定义插件<mycomponent>标签写在index.nvue里面可以调用到,我以前的页面是这样的,两个页面,index.vue引入一个组件video.vue页面,在video页面写调用了<mycomponent>这个时候是调用不成功的。自定义组件是不是一定要写在非组件页面,如果是组件页面就调用不成功。
2020-04-08 18:27
DCloud_Android_ST
回复 o***@qq.com: component仅支持nvue
2020-04-08 18:49
o***@qq.com (作者)
回复 DCloud_Android_ST: 我上一个回复有一个描述错误,video.vue正确的应该是video.nvue,我在index.vue页面引入一个组件页面video.nvue,在video.nvue页面引入<mycomponent>这样的调用方式不行,如果我把index.vue改成index.nvue,直接在index.nvue页面引入<mycomponent>是可以的。
2020-04-09 09:26
o***@qq.com (作者)
回复 DCloud_Android_ST: 是不是项目必须要用nvue模式进行编译
2020-04-09 10:45