Donut多端框架小程序打包适配ios和安卓app

简介: 腾讯新出了一个 Donut 多端框架,可以直接将微信小程序转成 ios 和 安卓 app,小程序开发者工具里也集成了 app 相关升级、调试和打包的功能,终于可以一套代码开发出3个客户端了!

腾讯新出了一个 Donut 多端框架,可以直接将微信小程序转成 ios 和 安卓 app,小程序开发者工具里也集成了 app 相关升级、调试和打包的功能,具体的可以参考官方文档

适配过程

展示组件、样式上微信大部分都适配了,没啥大的问题,目前就发现 css 里的网格 grid 布局在一些低版本手机上会显示异常。主要是一些官方功能组件和api很多不支持,如果使用小程序特定的一些api比较多的话,可能适配也比较麻烦,很多东西在app上都还不支持或者目前还没适配。

登录这块目前官方提供了直接跳转小程序授权、微信、手机号和苹果Apple登录,微信授权登录需要依赖微信开放平台,所以需要提前注册好开放平台账号。
img_melody_202306081237828.png

安卓相关问题

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 提供的条件编译强大。

目录
相关文章
|
1月前
|
搜索推荐 数据管理 定位技术
iOS应用开发中有多种主流框架
iOS应用开发中有多种主流框架
182 60
|
9天前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
92 66
|
1月前
|
iOS开发 开发者
探索iOS开发中的SwiftUI框架
【10月更文挑战第39天】在苹果的生态系统中,SwiftUI框架以其声明式语法和易用性成为开发者的新宠。本文将深入SwiftUI的核心概念,通过实际案例展示如何利用这一框架快速构建用户界面,并探讨其对iOS应用开发流程的影响。
|
1月前
|
开发框架 Dart Android开发
安卓与iOS的跨平台开发:Flutter框架深度解析
在移动应用开发的海洋中,Flutter作为一艘灵活的帆船,正引领着开发者们驶向跨平台开发的新纪元。本文将揭开Flutter神秘的面纱,从其架构到核心特性,再到实际应用案例,我们将一同探索这个由谷歌打造的开源UI工具包如何让安卓与iOS应用开发变得更加高效而统一。你将看到,借助Flutter,打造精美、高性能的应用不再是难题,而是变成了一场创造性的旅程。
|
2月前
|
移动开发 网络协议 小程序
基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v9.1版已发布
RainbowChat是一套基于开源IM聊天框架 MobileIMSDK 的产品级移动端IM系统。RainbowChat源于真实运营的产品,解决了大量的屏幕适配、细节优化、机器兼容问题
65 5
|
2月前
|
开发框架 人工智能 小程序
小程序常见的 UI 框架
【10月更文挑战第17天】小程序 UI 框架为开发者提供了便捷的工具和资源,帮助他们快速构建高质量的小程序界面。在选择框架时,需要综合考虑各种因素,以找到最适合项目的解决方案。随着技术的不断进步,UI 框架也将不断发展和创新,为小程序开发带来更多的便利和可能性。
94 2
|
2月前
|
Swift iOS开发 开发者
探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】在苹果生态系统中,SwiftUI的引入无疑为iOS应用开发带来了革命性的变化。本文将通过深入浅出的方式,带领读者了解SwiftUI的基本概念、核心优势以及如何在实际项目中运用这一框架。我们将从一个简单的例子开始,逐步深入到更复杂的应用场景,让初学者能够快速上手,同时也为有经验的开发者提供一些深度使用的技巧和策略。
54 1
|
3月前
|
iOS开发 开发者 UED
探索iOS应用开发中的SwiftUI框架
【9月更文挑战第26天】 在iOS开发的海洋中,SwiftUI犹如一艘现代的快艇,引领着开发者们驶向更加高效与直观的编程体验。本文将带你领略SwiftUI的魅力,从其设计理念到实际应用,我们将一步步揭开它如何简化界面构建过程的面纱。通过对比传统方式,你将看到SwiftUI如何让代码变得像诗一样优美,同时保持强大的功能性和灵活性。准备好让你的iOS开发技能加速升级,一起驾驭这股新潮流吧!
|
3月前
|
前端开发 iOS开发 开发者
探索iOS开发中的SwiftUI框架
【9月更文挑战第21天】在iOS应用开发的广阔天地中,SwiftUI框架如一股清新之风,为开发者带来了声明式语法的便捷与高效。本文将深入探讨SwiftUI的核心概念、布局方式及数据绑定机制,同时通过实例演示如何运用SwiftUI构建用户界面,旨在引领读者领略SwiftUI的魅力,并激发其对iOS开发新趋势的思考与实践。
49 6
|
2月前
|
iOS开发 开发者 MacOS
在线创建ios打包证书无需mac
这个文件并不一定需要使用mac OS去创建,在苹果开发者中心,生成了cer格式的证书后,导出p12证书这个过程,其实也并不一定需要mac电脑来完成。
34 0