重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
ITMS-90338: Non-public API usage - The app references non-public symbols in Frameworks/Flutter.framework/Flutter: _ptrace.
成都创新互联公司是一家专业提供龙南企业网站建设,专注与成都网站建设、网站设计、html5、小程序制作等业务。10年已为龙南众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
原因: 使用了 Flutter 的debug 版产物 打成 iPa 包
就是Frameworks/Flutter.framework 是debug 版的产物
Debug 版的 Flutter 产物 ,SDK 内部使用了 苹果内部私有的API , 会被苹果审核监测到,存在安全性隐患. 导致拒绝上传到苹果后台.
产生的原因: 因为开发过程中,直接使用了debug 模式进行开发, 在打包的时候,直接打开 iOS 文件夹下面的工程,在Xcode 里设置 release 模式时,此时,Flutter 的产物还是 debug 模式下的产物. 没有删除替换成 release 产物
1.先 将工程 清理一遍,清理之前debug模式下 的Flutter 产物
2.然后 打开Xcode 工程,配置好相关 版本号,证书,release 模式
3. 使用命令行 打包 release ,这样Flutter.framework就会生成 release 产物
4.最后 在Xcode 工程内,按照正常 打包上传 包过程就可以了
1.进入 Flutter 工程 命令行操作
flutter clean
2 .清理之前debug 模式下的 残留产物 (或者手动进入文件夹删除)
rm -rf ios/Flutter/Flutter.framework
3. 获取 Flutter 的第三方依赖库
flutter pub get
4.编译 release 打包 产物
flutter build ios --release
(此时这里可以打包出 app 了, 为了安全起见,最好再次进入Xcode 清理一遍,直接打包上传,)
上面这一步,主要目的是生成 Flutter.framework 的release 版本产物
5.进入Xcode 工程,clean 一遍,检查相关证书配置,版本号等
6.直接 Xcode Archive 打包IPA 上传 苹果后台
最后上传成功:
思路: 通过检查Flutter.framework 它的CPU 架构支持
如果: 该产物 支持模拟器 x86_arm64 这样的架构的话,说明该产物就是 Debug 版的 产物
因为release 版的 产物是 不支持 模拟器CPU架构的.
输入终端命令: lipo -info 产物的物理路径
比如: lipo -info /Users/zzc/Documents/rce_flutter/ios/Flutter/Flutter.framework/Flutter
Flutter 项目虽说是跨平台项目,但是项目的名称还是需要在不同的平台设置,不同平台的设置位置是:
1、 Android 项目名字配置是在 android/app/src/main/AndroidManifest.xml 文件中的 application 下的 android:label 。如下图所示:
2、 iOS 项目名字配置是在 ios/Runner/Info.plist 文件中的 dict 下的 keyCFBundleName/key stringtestapp/string 。如下图所示:
Flutter 项目虽说是跨平台项目,但是项目的 Logo 图标还是需要在不同的平台设置,不同平台的设置位置是:
1、 Android 项目 Logo 配置是在图片放置在 android/app/src/main/res 下的对应目录下:
mipmap-mdpi : 48 _ 48
mipmap-hdpi : 72 _ 72
mipmap-xhdpi :96 _ 96
mipmap-xxhdpi :144 _ 144
mipmap-xxxhdpi :192 * 192。如下图所示:
然后,在 android/app/src/main/AndroidManifest.xml 路径下的 AndroidManifest.xml 文件中的 android:icon 。如下图所示:
2、 iOS 项目 Logo 的配置是在 ios/Runner/Assets.xcassets/AppIcon.appiconset 文件下,直接更换图片,名字不要改动 。如下图所示:
1、使用 cd 指令进入项目(testapp)的根目录(方便后面操作),如下图所示:
填写对应的值,如下图所示:
1、 build.gradle 文件的位置,如下图所示:
2、在 build.gradle 中配置 key.propreties 的全局变量,
如下图所示:
3、 build.gradle 文件中进行签名配置。
如下图所示:
注意: buildTypes 中的 signingConfig signingConfigs.debug 可以变更为 signingConfig signingConfigs.release ,这样在打包的时候,直接可以 flutter build apk ,否则就执行 flutter build apk --release 。如图所示:
1、 cd 进入功能(testapp) 的根目录,如下图所示:
2、执行 flutter build apk 指令,如下图所示:
我们打包成功, 生成的 apk 包在 build/app/outputs/apk/release/app-release.apk 目录下,如下图所示:
1、将真机通过 USB 链接到电脑上,如下图所示:
2、然后,在项目的根目录执行 flutter install , 如果出现电脑同时有多个设备时,就执行 flutter install -d deviceid 。如下图所示:
3、设备的安装过程如下:
1、必须一个 Xcode 开发工具
2、如果是 Window 的电脑,请安装 Mac 虚拟系统,进行安装 Xcode .
1、打开目录下的 Runner.xcworkspace 工程。
如下图所示:
2、在 ios 工程中配置 Signing Capabilities , 如下图所示:
1、进入项目的根目录
2、打包指令 flutter build ios --release
如图所示:
3、使用 Xcode 工具进行打包
如图所示:
注意:进行该步骤,必须执行 flutter build ios --release 否则会报错。
打包成功,如下图所示:
每次将Flutter应用打包iOS上传到App Store Connect之后,都会收到以下电子邮件警告,但不影响正常构建版本。但是烦躁,解决如下:
大意就是 缺少推送相关的配置信息,其实在开发者网站配置证书的时候一般都进行 ‘推送功能’ APNs 勾选,但是项目中暂未设置推送配置,所以警告。
思路两个方向:
1.keychain 钥匙串访问
2.申请开发证书
3.注册Bundle ID
4.配置开发证书 (生成.mobileprovision文件)
5.安装证书
6.打包ipa
7.开发团队如何公用证书
进入以下程序
此文件保存到你想保存的地方,后面生成证书有用。
1.打开 苹果开发者中心 ( )
2.按照以下图片步骤走:
上面省略的步骤,按照具体需要选择,基本是“傻瓜式点击
到这bundle id就OK了
.mobileprovision文件格式的配置文件是让开发者的项目(APP)能有真机调试,发布的权限。
配置开发证书,就会需要你设置,在这个项目中添加哪些设备作为真机调试的设备
1.Xcode打开以下文件夹
2.三个必填项
4.选择发布平台:
1.本地安装完.cer证书文件
输入密码之后点击好,即可生成.p12文件