对于想了解微信小程序开发填坑指南V1的读者,本文将提供新的信息,我们将详细介绍微信小程序开发的坑,并且为您提供关于1-微信小程序开发(安装软件和运行第一个微信小程序)、FlutterPlugin插件开
对于想了解微信小程序开发填坑指南V1的读者,本文将提供新的信息,我们将详细介绍微信小程序开发的坑,并且为您提供关于1 - 微信小程序开发 (安装软件和运行第一个微信小程序)、Flutter Plugin插件开发填坑指南、云原生微信小程序开发实战 - 云开发已经成为小程序开发的标配、云原生微信小程序开发实战-云开发已经成为小程序开发的标配的有价值信息。
本文目录一览:- 微信小程序开发填坑指南V1(微信小程序开发的坑)
- 1 - 微信小程序开发 (安装软件和运行第一个微信小程序)
- Flutter Plugin插件开发填坑指南
- 云原生微信小程序开发实战 - 云开发已经成为小程序开发的标配
- 云原生微信小程序开发实战-云开发已经成为小程序开发的标配
微信小程序开发填坑指南V1(微信小程序开发的坑)
近期用了一星期的时间,开发了一个小程序。小程序名称是:小特Jarvis,取自钢铁侠的管家。
后台采用C#编写,WebAPI接口。其实开发时间并不多,小程序本身提供的API,相比公众号的API来说,已经封装了好多东西,我们只负责简单调用即可。而且,提供的开发工具也很方便,开发环境和VisualStudio很类似,包括快捷键(不知道Java的开发员是不是也有这感觉?)
好了说重点。今天是个总结,把这一星期开发时遇到的坑整理下,希望其他人遇到时能有个参考。其实开发的坑不多,部署的坑最多。开始咯
1,多看文档
多翻翻官方教程是很有必要的。还有官方社区,里面有一些不错的开源小程序源码,可以直接下载参考
2,代码布局
前台项目的布局建议使用默认即可,不要自己加些特殊的文件夹。如:Page文件夹里就加页面、Image文件夹里就加图片
3,如何联调
后台地址就是我们在小程序后台配置的那个Https地址串。我最开始的做法是把后台程序直接部署至这个地址上,发现提示TSL版本没达到要求什么的。可以在这个页面里,这个选项勾选即可,后台程序通过写日志方式调试程序,感觉不是很方便。有人说可以用远程调试?可以尝试下,但小编没用这个方法。
用的是直接把调用地址改成本地,就是https://localhost开头即可,相当和本机的程序直接调试,方便很多的。
基本开发的时候,遇到的就是这些问题,基本都很顺利。
部署时遇到的问题有点多
1,API地址切换至小程序后台设置的Https地址,发现提示TSL版本过低不支持。这个问题问别人,都说没有出现过。看来是和环境有关,而实际上确实和服务器的环境有关。
我之前是Win2008,网上查资料说这个版本的操作系统只支持TSL低版本,不支持高版本。而小程序要求的是高版本。好像最低是2008R2版本
小编后来换成2012操作系统,此问题解决
2,报:fail hostname certificate
这个问题就是一个原因:你申请的证书有问题。要么你是免费的,要么就是不符合小程序的要求。但这都不是事儿,正规渠道购买的证书都没有问题
3,uploadFile:fail Error: Hostname/IP doesn''t match certificate''s altnames: ''Host: xxx1. is not in the cert''s altnames: DNS:xxx2, DNS:xxx2''
这个问题不容易遇到,问了几个人都说没遇到过,碰巧又被我遇到了。
从字面含义的解释看,是说我证书绑定的域名B,和我小程序调用的地址A不匹配。继续分析,
我在申请证书时,我申请的域名是一级域名,而小程序用的是我的二级域名,这就是差别。
难道一级域名有个证书后,不能被二级域用?
答案是的
在申请证书时,有个通配符的名词,意思就是如果支持通配符,就可以一级域名只申请一个即可,二级域名可以不申请。不支持通配符的话,二级域名就要再申请一个。
因为我申请的是阿里云免费证书,所以不支持通配符,因此才报上面的那个错误
后来,我给小程序用到的二级域名再申请一个证书,绑定好就可以了。最后一个坑也顺利解决
这里要说下,阿里云的免费证书是可以申请多个的,可以被微信小程序使用
好了,我在开发和部署的时候,遇到了上面这些问题,留坑纪念
这是我的小程序,欢迎关注
1 - 微信小程序开发 (安装软件和运行第一个微信小程序)
https://developers.weixin.qq.com/miniprogram/dev/
我的
打开
上传成功后
Flutter Plugin插件开发填坑指南
前言
最近我在业余时间开发了一个Flutter插件用于Android应用内的版本更新:flutter_xupdate,发现在开发的过程中没遇到什么坑,但就是在发布到flutter插件平台时碰到了很多问题,这里我记录一下,给后来的人一点建议.
Flutter Plugin插件开发
1.创建Flutter Plugin插件项目
这里推荐使用Android Studio创建项目,根据提示一步一步来就行了,截图如下:
生成的项目目录主要包含以下内容:
- “android”目录是插件API在Android平台的实现。
- “ios”目录是插件API在iOS平台的实现。
- “example”目录是使用插件的一个示例项目。
- “lib”目录的文件,主要是创建“MethodChannel”,然后接收并处理来自原生平台发来的消息
2.实现插件功能
这里我主要介绍一下Android端的API实现.
坑点一: Flutter插件加载存在两个版本
由于Flutter自动依赖插件的方式存在两个版本(Registrar和FlutterPluginBinding), 因此我们在实现Android的插件的时候,为了能提高兼容性,最好把这两种都实现一遍.所以,Android的插件需要实现FlutterPlugin
, ActivityAware
, MethodCallHandler
这三个接口, 以我的flutter_xupdate插件为例,实现如下:
public class FlutterXUpdatePlugin implements FlutterPlugin, ActivityAware, MethodCallHandler {
private static final String PLUGIN_NAME = "com.xuexiang/flutter_xupdate";
private MethodChannel mMethodChannel;
private Application mApplication;
private WeakReference<Activity> mActivity;
//此处是新的插件加载注册方式
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
mMethodChannel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), PLUGIN_NAME);
mApplication = (Application) flutterPluginBinding.getApplicationContext();
mMethodChannel.setMethodCallHandler(this);
}
@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
mMethodChannel.setMethodCallHandler(null);
mMethodChannel = null;
}
public FlutterXUpdatePlugin initPlugin(MethodChannel methodChannel, Registrar registrar) {
mMethodChannel = methodChannel;
mApplication = (Application) registrar.context().getApplicationContext();
mActivity = new WeakReference<>(registrar.activity());
return this;
}
@Override
public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
switch (call.method) {
case "getPlatformVersion":
result.success("Android " + android.os.Build.VERSION.RELEASE);
break;
case "initXUpdate":
initXUpdate(call, result);
break;
...
default:
result.notImplemented();
break;
}
}
@Override
public void onAttachedToActivity(ActivityPluginBinding binding) {
mActivity = new WeakReference<>(binding.getActivity());
}
@Override
public void onDetachedFromActivityForConfigChanges() {
}
@Override
public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) {
}
@Override
public void onDetachedFromActivity() {
mActivity = null;
}
//此处是旧的插件加载注册方式
public static void registerWith(Registrar registrar) {
final MethodChannel channel = new MethodChannel(registrar.messenger(), PLUGIN_NAME);
channel.setMethodCallHandler(new FlutterXUpdatePlugin().initPlugin(channel, registrar));
}
}
以上代码需要注意的是:
-
registerWith
静态方法是flutter旧的加载插件的方式,通过反射进行加载. -
onAttachedToEngine
和onDetachedFromEngine
是FlutterPlugin
的接口方法,是flutter新的加载插件的方式. -
onAttachedToActivity
和onDetachedFromActivity
是ActivityAware
的接口方法,主要是用于获取当前flutter页面所处的Activity. -
onMethodCall
是MethodCallHandler
的接口方法,主要用于接收Flutter端对原生方法调用的实现.
坑点二:原生和flutter之间数据交互类型有限制
在进行插件的开发时,就必定会涉及到原生和flutter之间的数据交互.这里需要注意的是,就像我们在进行react-native和JNI的开发时,并不是什么类型的数据都是支持交互的.下面我给出原生和flutter之间可交互的数据类型:
Dart | Android | iOS |
---|---|---|
null | null | nil (NSNull when nested) |
bool | java.lang.Boolean | NSNumber numberWithBool: |
int | java.lang.Integer | NSNumber numberWithInt: |
int, if 32 bits not enough | java.lang.Long | NSNumber numberWithLong: |
double | java.lang.Double | NSNumber numberWithDouble: |
String | java.lang.String | NSString |
Uint8List | byte[] | FlutterStandardTypedData typedDataWithBytes: |
Int32List | int[] | FlutterStandardTypedData typedDataWithInt32: |
Int64List | long[] | FlutterStandardTypedData typedDataWithInt64: |
Float64List | double[] | FlutterStandardTypedData typedDataWithFloat64: |
List | java.util.ArrayList | NSArray |
Map | java.util.HashMap | NSDictionary |
这里我们用得最多的就是bool
、int
、String
、Map
这几个类型了
3.插件发布
插件发布遇到的坑最多,需要额外注意.
完善文档
建议将以下文档添加到插件项目中:
-
README.md
:介绍包的文件 -
CHANGELOG.md
记录每个版本中的更改 -
LICENSE
包含软件包许可条款的文件 - 所有公共API的API文档
发布插件
运行下面的命令进行发布:
flutter packages pub publish
你以为就这样就完事了?不不不,下面坑可多了!!
坑点三:权限认证需要代理
由于我们要将插件发布到flutter插件平台,要知道这平台可是google建的,需要发布的话,就必须要登录google账号进行认证.在我们输入flutter packages pub publish
命令之后,我们会收到一条认证链接,这就是需要我们登录google账号.
要知道google可是被墙的,这里我们需要代理登录google账号并进行认证.
坑点四:Flutter中文网搭建文档有毒
你以为登录完google账号就完事了?想太多了!这里有个大坑就是flutter中文网上的环境配置问题,如下图所示:
这里官方让我们配置一下Flutter的临时镜像,一般人刚接触的时候都是按照官方文档一步一步来,相信这一步肯定也少不了.可就是这么不起眼的一步,就让我在认证一步一直卡着.在网上找了半天的解决方法都没有任何用.中间也有人说是因为配置了镜像的问题,不敢我怎么也不相信是这个问题导致的.
这里我们去掉镜像配置就可以通过认证了.
坑点五:代理工具对命令终端不起作用
本来以为好不容易认证通过了,这下总能上传成功吧,结果意外又出现了,我一直卡在Uploading...
,怎么也上传不成功.
Uploading...
Failed to upload the package.
在网上百度了,说是代理工具对命令终端不起作用,需要给命令行设置代理.
export https_proxy=http://127.0.0.1:1087
export http_proxy=http://127.0.0.1:1087
set https_proxy=https://127.0.0.1:1087
set http_proxy=http://127.0.0.1:1087
因为我我的代理端口是1087
.
可是直接这样设置也是无法上传成功的.需要我们借助privoxy
工具完成终端的代理,操作如下:
- 安装privoxy
brew install privoxy
- 修改privoxy配置
vim /usr/local/etc/privoxy/config
加入这两个配置(注意第一行的端口号要根据你的代理来看,我这里没有改,它默认的是 1087),另外注意不要忘了最后有一个空格和点号。
listen-address 0.0.0.0:1087
forward-socks5 / localhost:1080 .
- 启动 privoxy
sudo /usr/local/sbin/privoxy /usr/local/etc/privoxy/config
启动之后我们查看一下是否启动了:
netstat -na | grep 1087
出现类似如下结果, 就证明启动成功了。
tcp4 0 0 127.0.0.1.1087 *.* LISTEN
这时候再重新执行一下:
export https_proxy=http://127.0.0.1:1087
export http_proxy=http://127.0.0.1:1087
set https_proxy=https://127.0.0.1:1087
set http_proxy=http://127.0.0.1:1087
最后再执行一下发布命令:
flutter packages pub publish
如果出现如下结果,就证明发布成功了!
Waiting for your authorization...
Authorization received, processing...
Successfully authorized.
Uploading...
Successfully uploaded package.
相关链接
- Flutter中文网开发Flutter插件教程
- flutter_xupdate 一键实现Flutter应用版本更新
公众号
交流群
云原生微信小程序开发实战 - 云开发已经成为小程序开发的标配

云原生微信小程序开发实战 - 云开发已经成为小程序开发的标配
云原生微信小程序开发实战-云开发已经成为小程序开发的标配
云原生微信小程序开发实战-云开发已经成为小程序开发的标配33套云原生实战训练营K8s,挑战年薪50万K8s+Docker+DevOps+Jenkins+CICD+Git+Istio+Service Mesh
33套云原生技术包含:云原生实战训练营K8s,挑战年薪50万(K8s+Docker+DevOps+Jenkins+CICD+Git+Istio+Service Mesh)云计算,微服务,容器架构师,全栈架构师,集群实战,部署落地,服务治理,服务网格,原理剖析,实战应用,云原生架构,CKA认证实战班,平台设计与开发等
33套精品介绍:1、33套精品是掌柜最近整理出的最新教程,都是当下最火的技术,最火的课程,也是全网教程的精品;
2、33套资源包含:全套完整高清视频、完整源码、配套文档;
3、知识也是需要投资的,有投入才会有产出(保证投入产出比是几百上千倍),如果有心的朋友会发现,身边投资知识的大都是技术经理或者项目经理,工资一般相对于不投资的也要高出很多;
下载地址
总目录:33套云原生实战训练营K8s,挑战年薪50万(K8s+Docker+DevOps+Jenkins+CICD+Git+Istio+Service Mesh)云计算,微服务,容器架构师,全栈架构师,集群实战,部署落地,服务治理,服务网格,原理剖析,实战应用,云原生架构,CKA认证实战班,平台设计与开发视频教程
第01套:云原生高薪课,挑战年薪50万,从零到一构建开源的企业级PaaS平台视频教程
第02套:拥抱云原生从无到有搭建企业自己的私有云平台实现云上亿级流Kubernetes+DevOps+Jenkins+Istio
第03套:云原生实战Docker+K8s+Kubeshere+DevOps云原生实战架构师必修课
第04套:云原生微服务架构实战精讲,微服务架构的迁移和落地视频教程
第05套:云原生微信小程序开发实战-云开发已经成为小程序开发的标配
第06套:云原生+边缘计算项目实战-KubeEdge打造边缘管理平台,实战云边端一体化设计,迈向高阶人才
第07套:真架构!真正的云原生架构与云IDC实操业务 腾讯架构师工程师TCP认证课程 含DevOps
第08套:Kubernetes全栈架构师:基于世界500强的k8s实战课程(最新V1.21版本)
第09套:K8S微服务与容器云架构师(Linux云计算微服务架构师) 讲解实际生产内容知识体系视频课程
第10套:KubernetesK8s CKA认证实战班(完整版)BAT大厂基于K8s构建企业容器云平台
第11套:Kubernetes 原理剖析与实战应用-进阶高级架构师的必须选项视频教程
第12套:K8S集群实战,k8s各种扩展组件的部署和使用,k8s持久化存储,k8s代码自动发布教程
第13套:Docker与Kubernetes最佳实践-架构师必备技能docker入门到专精高阶视频教程
第14套:全面Docker系统性入门+进阶实战(Docker 知识体系及使用指南&最佳实践)
第15套:DevOps实战笔记-DevOps平台设计和开发视频教程
第16套:大厂进阶篇Docker与微服务实战-技术点从入门到高级全面覆盖视频教程
第17套:DevOps落地笔记视频教程-优化研发流程,提高研发效率和产品质量,解决企业实际遇到问题
第18套:微服务Service Mesh实战 Service Mesh实践和落地的学习内容视频教程
第19套:火遍大厂的Service Mesh服务实战课程 从组件到架构全方位解读微服务之Service Mesh
第20套:Istio服务网格服务治理微服务架构与设计全面解析视频
第21套:大厂Istio基础与实践 云原生“薪”能力合集,一线大厂实战分享视频教程
第22套:KubernetesK8s CKS 认证实战班-架构+网络+存储+安+监控+日志+QCD视频
第23套:Kubernetes网络训练营,为运维和开发打造的进阶体系课Flannel+Calico+Multus+Cilium
第24套:Kubernetes实战与源码剖析体系进阶班MSB,自动化运维管理多个跨机器Docker的集群
第25套:基于阿里云平台,从0构建云原生应用架构设计与开发实战,掌握云原生技术架构开发全流程
第26套:百万云原生架构师4期-掌握云原生架构师的9大顶级架构设计思维模型,架构设计哲学本质
第27套:基于Jenkins的DevOps工程实践 使用Jenkins完成DevOps交付流水线实践落地视频教程
第28套:Jenkins核心功能快速上手Jenkins企业级持续集成持续部署CICD(DI)视频教程
第29套:P7云原生架构师剑指未来,一站式搞定企业级云原生-专业技能+核心原理+方案设计+系统分析
第30套:前端配置化+后端Serverless开发个人博客(全栈+实战)HOOKS+Redux+Webpack+Immer
第31套:玩转Serverless架构 概念篇+开发基础篇+开发进阶篇+场景案例篇视频教程
第32套:Serverless进阶实战课 成为会Serverless懂 Serverless的工程师,云原生技术要红利
第33套:kubernetesk8s各个版本高可用集群灵活安装 掌握k8s日常运维视频教程
下载地址
云原生微信小程序开发实战-云开发已经成为小程序开发的标配云原生微信小程序开发实战-云开发已经成为小程序开发的标配云原生微信小程序开发实战-云开发已经成为小程序开发的标配云原生微信小程序开发实战-云开发已经成为小程序开发的标配云原生微信小程序开发实战-云开发已经成为小程序开发的标配
今天关于微信小程序开发填坑指南V1和微信小程序开发的坑的介绍到此结束,谢谢您的阅读,有关1 - 微信小程序开发 (安装软件和运行第一个微信小程序)、Flutter Plugin插件开发填坑指南、云原生微信小程序开发实战 - 云开发已经成为小程序开发的标配、云原生微信小程序开发实战-云开发已经成为小程序开发的标配等更多相关知识的信息可以在本站进行查询。
本文标签: