- Donut多端框架小程序打包适配ios和安卓app
腾讯新出了一个 Donut 多端框架,可以直接将微信小程序转成 ios 和 安卓 app,小程序开发者工具里也集成了 app 相关升级、调试和打包的功能,具体的可以参考官方文档。 适配过程展示组件、样式上微信大部分都适配了,没啥大的问题,目前就发现 css 里的网格 grid 布局在一些低版本手机上会显示异常。主要是一些官方功能组件和api很多不支持,如果使用小程序特定的一些api比较多的话,可能适配也比较麻烦,很多东西在app上都还不支持或者目前还没适配。 登录这块目前官方提供了直接跳转小程序授权、微信、手机号和苹果Apple登录,微信授权登录需要依赖微信开放平台,所以需要提前注册好开放平台账号。 借助 Donut 框架,目前微慕小程序已经完成了ios和安卓app的适配开发工作,正在等待备案和应用商店审核,相比web或小程序开发,app的开发工作量还是挺大的,各种开发规范、审核流程也比较严格,下面记录了开发中遇到的各类问题,供感兴趣的小伙伴参考。 [图片] 安卓相关问题1、安卓开发证书 生成安卓开发者证书,网上有在线生成的网站,也可以本地安装 java 环境然后用命令行直接生成。 2、打包的 Package Name 包名 这个不是在生成安卓开发者证书的时候设置的,是需要自己去微信开放平台设置,没设置官方会默认会分配一个测试包名,设置了可以在 Donut 后台同步看到。 3、apk 安装包发送到手机上不能安装 直接将打包好的安卓 apk 文件通过微信发到手机上,接收保存时微信会默认在后面给你加上 .1,直接在文件管理里文件重命名删掉 .1 的后缀,就可以点击安装包安装到手机上了。 4、上架安卓应用商店提示 targetSdkVersion 版本不符合要求 上架小米应用商店提示 targetSdkVersion 版本不符合要求,要求要大于等于30。Donut 默认给设置的 29,然后在文档上找到了可以在 project.miniapp.json 里配置 targetSdkVersion,要求下载版本号 ≥ 1.06.2308242 的开发者工具。开发工具下载的稳定版最新版里面压根没这项配置,重新下载了最新的开发版开发工具才找到可以配置。 ios相关问题1、ios签名和开发证书 下载证书到mac上显示证书不受信任,需要现在在 https://www.apple.com/certificateauthority/ 上下载 Developer Authentication、Worldwide Developer Relations - G2、Worldwide Developer Relations - G3... 这几个中间证书,安装好后就会显示信任了。 2、wx.weixinAppLogin 报错 errCode:-700000 这个 api 需要唤起微信 app 授权,需要使用自己申请的开发证书,还要在 Donut 后台绑定了 Bundle ID 和 Universal Links,开启了相关的权限。直接使用官方提供的临时证书,是不能使用这些功能的。 3、.mobileprovision 文件所属的 bundleId 与应用无对应关系 跟上一个问题类似,这个一般是用自己的证书如果没设置 Bundle ID 和 Universal Links,打包时就会提示这个报错。 4、Run the app failed:Sign the app fail:undefined 用临时证书打包或真机运行用报上面的错误,先要用 USB 连接添加了设备权限的iphone手机到 mac 上,点击运行电脑上会弹窗让你输入 AppID 账号和密码,注意此账号也要在苹果开发者后台已经添加为开发者,手机也要拿到 UUID 在苹果开发者后台添加到调试设备里,手机要开启开发者模式。 如果报错上面还有:MiniAppBuilder could not sign in with your Apple ID. Your Apple ID or password is incorrect,就是提示你输入的账号密码不正确,重新再开发工具里先清除证书签名缓存,再输入正确的账号和密码,首次使用可能还会在你手机上弹出一个动态码,信任登录然后在电脑上输入手机上获取到的授权码就行了。 5、Build ipa failed:Sign the app fail:undefined 跟上一个问题类似,用临时证书打包时可能会出现这个报错,先清除证书签名缓存,再输入正确的账号和密码。 6、.ipa文件 上传交付时报错:Asset validation failed (90161) Invalid Provisioning Profile Invalid Provisioning Profile. The provisioning profile included in the bundle xxx [Payload/demo.app] is invalid. [Missing code-signing certificate]. A Distribution Provisioning profile should be used when submitting apps to the App Store. For more information, visit the iOS Developer Portal. (ID: xxx) 用分发证书打包成功后,在 Transporter 里上传交付时报错,上面的报错提示证书文件无效,解决办法: 核对证书和描述文件,确保受信任而且未过期打包时用的证书和描述文件,是否误用了开发证书和描述文件把本地已经在钥匙串里安装了的证书全部删掉,然后重新安装再打包上面的方法都不能解决的,重新在苹果开发者后台重新生成新的分发证书和描述文件7、invalid provisioning profile.the provisioning profile included in the bundle is invalid 打包的证书要安装在mac电脑本地钥匙串里,直接双击证书文件,安装好了可以在钥匙串-我的证书里看到。 8、Transporter 里交付成功,苹果开发者后台看不到提价信息 这个一般是交付的版本有问题,像一些隐私权限描述未添加...注意下自己开发者账号对应的邮箱,苹果官方会给你发送具体的错误信息邮件。有收到提示邮件就是有问题的,这个时候苹果开发者后台 app 管理里是看不到你交付的版本的,需要修改后重新交互,成功了后台构建那就可以看到交互的版本了。 9、The provided entity includes an attribute with a value that has already been used (-19232) 每次构建上传的版本号需要累加,不能比之前的低 10、选择图片、保存图片时app崩溃 需要在 project.miniapp.json 中设置 iOS - 隐私信息访问许可描述,然后操作的时候用户才可以正常操作。Donut 的适配也确实太粗暴了,竟然不是给个提示报错未设置隐私描述之类的,直接让app崩了! 11、第三方登录 如果有接入第三方平台登录,比如微信登录、微博登录...苹果要求必须同时接入它的 apple 登录,否则审核不会通过的,亲儿子就是好。有的应用商店审核只要有注册功能还需要同时提供账号注销功能。 [图片] 其他问题1、相关功能不能用 比如视频不能播放、canvas绘图报错...官方为了减小打包大小 SDK 里很多功能默认是没有开启的,如果项目里有用到音视频、canvas 这些功能,需要先在 project.miniapp.json 配置文件里,自己开启相关的 SDK:Media SDK、XWeb SDK,否则是不能用的。 2、适配登录需要新建登录页 使用小程序授权登录,需要新建一个 DonutLogin 的授权登录页,自己不新建也会有一个官方默认的。首次打开 app 会先打开这个页面让跳转小程序授权,开发者工具里有直接集成,右键-新建多端登录 Page,会生成一个官方提供的默认授权页,也可以直接在上面修改自定义。刚开始以为这是官方强制要弹这个的,即使没用到小程序登录,首次安装也会打开这个授权页,最后才发现是直接在开发者工具里升级成多端项目时,默认给你配置了小程序授权登录,具体参考下面的一点。 3、wx.login 会隐式触发 wx.getMiniProgramCode 小程序升级成多端项目后身份配置时 app.miniapp.json 里的 adaptWxLogin 为 true,默认 app 中调 wx.login 会隐式触发 wx.getMiniProgramCode,然后会打开小程序授权登录的页面,即使项目中没有使用微信登录。 4、跳转到小程序 小程序很多相关的功能、插件在 app 上都是不能用的,不过官方提供了 app 直接唤起微信打开小程序的方法 wx.miniapp.launchMiniProgram,不过里面需要用到小程序的原始 id,可以直接跳转到小程序里面的各个页面。 5、安卓app安装后一直在启动页 打包 android 的 sdk 版本 sdkVersion 是 1.1.1,更新到最新的 1.1.2 重新打包后就没问题了。所以遇到这种奇奇怪怪的问题,记得更新开发工具、sdk版本到最新版,如果已经是最新版那就回退个版本,说不定运气好就解决了,哈哈哈哈。 条件编译官方也提供了类似 uniapp 条件编译的语法,为了同时兼容小程序和app可以使用条件编译语法,注意小程序开发者工具本地配置里也要勾选上-启用条件编译: // js 文件中使用 // #if MP // #elif IOS // #elif ANDROID // #endif // wxml 模板文件中使用 <!-- #if MP --> <!-- #elif IOS --> <!-- #elif ANDROID --> <!-- #endif --> // wxss 样式文件中使用 /* #if MP */ /* #elif IOS */ /* #elif ANDROID */ /* #endif */ json 文件中需要自己通过 mini-wechat、mini-ios、mini-android 去分别配置,功能上没有 uniapp 提供的条件编译强大。
2023-11-12 - 微短剧,小程序虚拟支付报错,系统错误-1003
appid:wx1b9983ee3916325b,2023年12月12日,用户支付时报异常,且异常情况不一样,具体信息如下: 错误码: -15019 错误详情: requestVirtualPayment:fail 调微信报商户受限,商家可以登录微信商户平台/微信支付商家助手小程序查看原因和解决方案。&midas_err_code=1003-999-35506 错误码: 1003 错误详情: requestVirtualPayment:fail 系统错误&midas_err_code=1003-100006-35506
2023-12-12