做为系列文章的第十九篇,本篇将科普 Android 和 iOS 平台的打包和提交审核流程。html
由于不少 Flutter 开发人员可能只有单端的开发经验,对于另一端的打包和提审流程不熟悉,或者是前端人员没有提交审核的经验,因此本篇将科普这一流程,让你们少走弯路。前端
Flutter 完整实战实战系列文章专栏android
事实上 Androd 的打包和审核流程都相对简单,打包 apk 只须要经过以下命令行就能够完成:git
flutter build apk --target-platform android-arm64
flutter build apk --target-platform android-arm64 -t lib/main_prod.dart
复制代码
其中 --target-platform
是针对打包后的 so 文件, 对须要支持的框架进行选择,由于如今不管是 Goole Play 或者国内平台,都多都有要求应用须要支持 arm64-v8a
的 ABI 架构,因此通常打包也会选择指定 target-platform
来减少 apk 的体积。github
-t
表示指定其余 main.dart
打包,也能够不指定。bash
另外须要注意,Android 上须要在 android/app/src/build.gradle
下配置 signingConfigs
来指定打包密钥等信息,具体生成密钥这里就不详说,以后把 signingConfigs
配置到 buildTypes
就完成配置。服务器
android {
····
signingConfigs {
config {
keyAlias "xxxx"
keyPassword "xxxx"
storeFile file("../keystores/xxxxx.jks")
storePassword "xxxx"
}
}
复制代码
最后须要注意,若是你的 Apk 存在其余类型架构的 so 目录,好比 armeabi-v7a
等,那就须要在 android/app/src/build.gradle
的 android { buildTypes {
下加上 ndk abiFilters
进行过滤配置,由于 Android 下须要保证每一个 ABI 目录内的 so 文件是完整齐全的,否则可能出现崩溃。微信
buildTypes {
release {
signingConfig signingConfigs.config
ndk {
//设置支持的SO库架构
abiFilters 'arm64-v8a'
}
}
debug {
signingConfig signingConfigs.config
ndk {
//设置支持的SO库架构
abiFilters 'arm64-v8a', 'x86', 'x86_64'
}
}
}
复制代码
最后打包完的 Apk 默认会在以下图所示路径架构
其实在 Android 上提交审核是比较简单的,由于 Android 只须要提供 Apk 下载连接就能够直接安装,因此不少厂家都在有本身服务器上直接放上 Apk 文件,可是为了更好的体验和分发,大多数状况下也会选上传到各大应用平台,好比华为上没有上架的话,会出现以下图所示问题。
甚至有些 Apk 由于没有上架,会由于
app_name
等缘由被看成病毒提醒。
事实上国内的应用市场审核并不麻烦,只是由于平台多且各家条件可能不同变得比较繁琐,目前主流要求的有:
targetSdkVersion
28 (9.0);arm64-v8a
;以后就是一些平台的独立审核问题,好比 360 平台审核要求你的 Apk 须要通过它们的应用加固(加固后的做用就见仁见智),而且很多平台如应用宝要求提供应用的版权说明等文件,这些都是比较磨人的东西。
固然有些平台你能够不上,可是好比不上应用宝,你就很难得到微信扫一扫后跳转打开应用和下载的能力。
另外好比华为平台会有:根据工信部关于开展 APP 侵害用户权益专项整治工做的通知要求,应用内还须要提供账号注销服务或销户功能能力。
能够看出 Android 的审核和条件其实并不繁琐,只是有些平台须要的东西比较磨人,具体须要上架能够根据需求自行斟酌了。
iOS 的打包和审核流程相对复杂点,打包 iOS 首先你须要有开发者帐号、给应用申请和设置有 Bundle Identifier
、配置文件、证书等信息,相信已经到打包阶段了,这系列文件你不会欠缺吧?
经过登陆 developer.apple.com 网站,在 Account
的 Certificates,IDs & Profiles
能够找到你应用的信息,同时在 App Store Connect
栏目能够前往 appstoreconnect.apple.com 。
接着在 个人 App
按照提示建立应用,填写信息根据业务要求填写便可,这里主要说几个须要关注的点。
这里须要注意,截图的画面不要太简单,最好能替体现应用的具体内容,否则很容易被拒绝,这里同时提供须要尺寸对应的设备型号。
打包 flutter iOS 首先须要执行 flutter build ios
命令,命令会生成 release 模式的下的 framework
文件,以后就能够进入 Xcode 流程。
以下图所示,首先确保🔨位置不要选中模拟器,以后在 Product > Archive 就会开始导出打包。
打包成功后能够看到以下界面,找到你最新打包的那一项,选择 Distribute App
就能够进入下一步;另外打包过的项目在 Window > Organizer 也能够从新找到。
以后以下所示,就选择上传 App Store Connect
进行提交准备。
若是是选择导出测试 ipa 能够选择
Development
,前提是对应机器的UDID
等信息已经在打包配置文件内。
以后能够选择 Upload 或者 Export,Export 就是导出后再在本地上传,可使用 TransPorter
工具再单独上传;Upload 就是前面以后直接上传。
接着出现的这个页面建议是不要勾选(不要问,问就是百度),而后直接 next,而后选择自动签名,等签名成功后最后点击上传就能够了。
上传成功后就,过一段时间能够在活动
和 TestFlight
看到你提交的构建版本,而后你可能会收到以下所示的一封邮件:
其中好比 ITMS-90683
说的是没有在 plist
内配置 NSContactsUsageDescription
的 key-value,也就是向用户解释你为何须要用到读取用户联系人的权限。
诸如此类的还有后几个都是,若是你应用内用到了对应的权限。就须要在 plist
配置上对应的 key-value
。
另外就是 Push Notification Entitlement
的警告,是说你的应用没有配置推送相关的证书和设置,若是你的应用没有用到对应的功能,好比在 Developer
后台看以下图所示的推送是否勾选了,若是勾选了就须要在应用内配置对应的推送服务,iOS 上 APNS 还须要设置对应的推送证书,通常推送证书还会分开发和生产两种,若是没有使用推送能够忽略警告。
还有就是 App 的启动页和 logo 尺寸记得配全,配置不全也会收到对应的警告,这个可能会影响审核。
以后在版本信息里选择须要提交的构建版本,以后提交审核便可,通常审核会从等到审核 > 正在审核 > 审核结果,这个过程通常在 24 或者 48 小时以内,可是若是遇上了像圣诞节这样的节日,苹果会由于放假放慢审核,另外被拒绝的太屡次的话,也会影响审核速度。
以下图所示,最后提一些审核建议,好比:
以上这些都是属于常犯的问题,更多的还请看 :developer.apple.com/cn/app-stor…
iOS 还有能够不用上架,只须要用户在手机上信任证书的可使用 ipa 的开发者帐号,可是这类开发者帐号如今很难申请获得,而且这类帐号的应用须要一年后从新打包一次更新。