0 概述
Mac经验汇总
1 curl
-x 127.0.0.1:7890
写入~/.curlrc文件,配置全局的curl代理
2 homebrew
看这里
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"
export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/bottles"
/bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"
输入即可
brew -v
安装成功的提示
3 rvm
curl -x 127.0.0.1:7890 -L get.rvm.io | bash -s stable
安装rvm
rvm -v
可以显示rvm版本
echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > ~/.rvm/user/db
设置rvm的源
4 ruby
看这里
rvm list known
列出可用的ruby版本
rvm install 2.7.2
rvm use 2.7.2 --default
ruby -v
安装成功的显示
sudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools.old
xcode-select --install
sudo rm -rf /Library/Developer/CommandLineTools.old
rvm get stable
rvm reload
rvm install 2.7.2 --with-openssl-dir=`brew --prefix openssl@1.1`
遇到编译失败的话走以上流程
5 gem
gem source -l
查看gem的源
gem sources -r https://rubygems.org/
gem sources -a https://mirrors.aliyun.com/rubygems/
替换gem的源为aliyun的源
6 cocoapods
sudo gem install cocoapods -V
安装cocoapods
7 开发者账号
参考资料
7.1 注册类型
开发者有四种类型,注意按照是否上AppStore的不同来决定使用哪种账号。
对应有三种证书
7.2 注册AppleID
在这里
创建AppleID
注意点:
- 名字用汉字或者拼音
- 地区选中国大陆
- 日期写身份证号码
- 安全提示问题要写好
打开邮箱,点击验证链接,选择注册就可以了
7.3 AppleID双重认证
用iPhone手机登录AppleID账号
选择“密码与安全性”,开启双重认证
最后输入手机的验证码就可以了
7.4 邓白氏编码
注册公司账号需要先注册邓白氏编码,三种方式:
我试过,只有第三种方法是可行的。
查询DUNS编码
邓白氏官网注册
到苹果官网发邮件申请邓白氏编码,我试过只有这个可行
然后Apple就会发邮件通知你已经提交DUNS编码的创建请求。
过几天就有收到service@dnb.com的邮件,通知你登录他们的网站,然后提交公司信息就可以了。提交资料以后,注意一下手机电话。公司资料包括有:
- 公司的营业执照
- 公司的公章
- 申请函
资料无误的话,大概一周就能得到DUNS编码了
7.5 注册开发者账号
下载Apple Developer的App,然后登录AppleID。注意,要用手机版本,我用Mac上注册是失败的。
先登录AppleID,然后选择“现在注册”
公司账号的话,选择“组织”
完成资料以后,会提示“注册正在审核”中
没多久就会收到邮件,选择“联系我们”,然后立即就有人打电话给你。没多久就会收到邮件。
7.6 开发者账号订阅付款
最后进入付款就行,没啥好说的
8 XCode
8.1 打开项目
注意,需要打开的是Runner.xcworkspace,而不是Runner.xcodeproj. 否则编译会失败
8.2 打开模拟器
open -a Simulator
用命令行可以打开模拟器
在XCode的右键,选择Open Developer Tool也能打开模拟器
打开模拟器以后,可以在左上角选择Simulator的类型
8.3 项目配置
8.3.1 设置BundleId
key>CFBundleDisplayName</key>
<string>App名字</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>trade_app</string> <
修改ios/Runner/Info.plist文件,其中
- CFBundleDisplayName是用户可以看到的名字
- CFBundleName是内部可以看到的名字,可以看成是进程名
- CFBundleIdentifier是完整的标识,包括包名,例如是com.example.myapp
在XCode上也能进行设置BundleID
8.3.2 设置AppIcon
先在这里生成各个尺寸的iOS图标
然后将各个尺寸的图标设置进去就可以了
ios/Runner/Assets.xcassets/AppIcon.appiconset
也可以直接将图标文件夹,直接放到以上的项目文件夹也可以
8.3.3 设置启动页面
设置一下不同比例的启动画面即可
然后在LaunchScreen的StoryBoard设置一下constraint就可以了。
最后需要设置一下View的background
8.3.4 用户隐私申报
参考资料:
从2024年5月1日起,App将要求提交用户隐私报告,否则会收到警告邮件。
项目,右键,New File
选择App Privacy
逐个选择隐私项,和隐私原因(数组类型)
这是公司项目的隐私配置
检查一下该隐私报告有没有在Bundle Resources中出现,确保能被打包上传。
8.4 编译配置
8.4.1 Scheme配置
在Runner的Edit Scheme中
在这里可以配置,不同操作下所使用的版本,包括Run/Test/Profile/Archive下的编译配置。
8.4.2 部署目标
在这个位置需要选择部署的目标,是模拟器,还是真机等。真机测试需要满足以下条件:
- flutter的dev模式是启动JIT热更新的,这在真机上不被允许的。所以flutter项目的真机测试只能使用release/profile的Scheme配置
- iOS的真机测试必须是使用开发者证书,且有UDID注册的设备才能部署。而默认的调试证书是无法在真机上执行的
8.4.3 编译签名
8.4.3.1 自动选择签名证书
在这里可以选择开发者账号,编译所用的证书。每个证书仅能使用一年,所以每个App每年至少更新一次才能正常使用。
8.4.3.2 手动选择签名证书
先取消勾选Automatically manage Signing
targets build Settingts code signing Identity 选择证书
8.4.4 链接器配置
看这里
XCode 15编译的App默认在iOS 12以下的版本会崩溃,解决方法是加入链接器options
加入-ld_classic配置就可以了
8.10 其他操作
8.10.1 clean
编译时遇到的疑难杂症,都可以执行以下步骤
- 在Xcode上运行”Product > Clean Build Folder“。
- 在终端上运行flutter clean
- 在终端上运行flutter pub get (这将创建/project/ios/flutter/Generated.xcconfig)
- 在终端上运行pod install (假设您在/project/ios文件夹中)
然后可以在xcode上进行构建。
9 签名证书,内测与上架
参考资料:
- Hbuilder用自有证书打包 ios App上架AppStore流程
- 2020年苹果开发者证书配置简要说明
- 苹果iOS证书(.p12)、描述文件(.mobileprovision)和推送证书(.p12)申请
- App Store 发布应用过程(图文),xcode打包Transporter交付
9.1 p12证书与.mobileprovision文件
为了保证App的安全性,完整性,合法性,AppStore在打包App的时候,需要两个文件:
- Certificate,证书,描述的是该App的确是由你的公司来打包生成,没有该Certificate的公司无法打包这个App。
- Provisiong Profile,配置文件,苹果允许你打包的对象,包括允许的App Bundle ID,允许的App用途(iOS development还是iOS distribution),允许安装App设备(AdHoc模式需指定的UDID设备,AppStore模式下的任意设备),以及允许的打包用Certificate证书。
两者的组合才能成功打包一个App,缺一不可。
在合规情况下,苹果只允许使用XCode来打包iOS的App。在XCode上开发也很方便,在勾选Automatically manage signing以后,只需要输入AppleİD的账号密码,XCode就能自动处理Certificate证书和Provisiong Profile。
但是,在实际团队开发中,每次不同开发员打包都需要输入公司的AppleID账号密码,这显然是非常不安全的。因此,我们希望仅提供Certificate证书和Provisiong Profile就能打包一个合法的iOS App。
确实,在HBuilder等云打包平台上,用户通过上传p12证书(Certificate证书)和.mobileprovision文件(Provisiong Profile)就能在云端打包和上传AppStore了,不需要特定输入公司的AppleİD账号密码。
9.2 Certificate证书
Certificate证书的作用是描述的是该App的确是由你的公司来打包生成,而不是其他公司来打包生成。它的操作流程为:
- 由开发者自己生成一个csr文件
- 开发者登录AppleID账号,然后上传csr文件给苹果,苹果会返回一个cer证书,该证书的有效期只有1年。
- 该cer文件导入Mac电脑,就能导出p12证书(需配合自定义密码使用)。
9.2.1 生成csr文件
打开“应用程序”->‘实用工具’->‘钥匙串访问’->‘证书助理’,选择‘从证书颁发机构请求证书’
填写信息:
- 用户电子邮件,和苹果开发者账号的邮件地址一致
- 常用名称,空
- CA电子邮件地址,空
选择“存储到磁盘”,继续,这样我们就得到csr文件。它的文件名一般为“CertificateSigningRequest.certSigningRequest”
9.2.2 上传csr,获取cert
登录开发者账号
在证书管理页面选择 “Certificates” 可查看到已申请的所有证书(Development 为开发证书,Distribution为发布证书),点击页面的加号来创建一个新的证书
在 “Software” 栏下选中 “iOS App Development” 然后点击 “Continue”
接下来需要用到刚刚生成的证书请求文件,点击“Choose File…”选择刚刚保存到本地的 “CertificateSigningRequest.certSigningRequest”文件,点击 “Continue” 生成证书文件
生成证书后选择 “Download” 将证书下到本地 (ios_development.cer)
9.2.3 从cert得到p12证书
双击保存到本地的 ios_development.cer 文件,会自动打开 “钥匙串访问” 工具说明导入证书成功,可以在证书列表中看到刚刚导入的证书,接下来需要导出 .p12 证书文件,选中导入的证书,右键或者顶部文件点击选择 “导出…”:
就这样,我们得到p12证书
9.3 Provisioing Profile
Provisioing Profile,配置文件的用处在于让苹果指定允许你打包的对象,包括有:
- 允许的App Bundle ID
- 允许的App用途(iOS development还是iOS distribution)
- 允许的App功能(推送,Apple Pay, Game Center等)
- 允许安装App设备(AdHoc模式需指定的UDID设备,AppStore模式下的任意设备)
- 对应打包用Certificate证书。
Provisioing Profile的输出就是.mobileprovision文件。
9.3.1 Identifiers
Identifiers就是指定打包用的App Bundle İD
选择页面的 “Identifiers” 可查看到已申请的所有 App 应用标识,点击页面上的加号来创建一个新的应用标识
选择标识类型为 “App IDs”,然后点击 “Continue”
平台选择 “APP”,然后点击 “Continue”
下图所示:Bundle ID 选择 “Explicit”,在 Description 中填写描述,然后填写 Bundle ID,Bundle ID 要保持唯一性,建议填写反域名加应用标识的格式 如:“com.xxxx.xxx”, 接下来需要选择应用需要使用的服务(如需要使用到消息推送功能,则选择“Push Notifications”),然后点击 “Continue”。确认后选择提交,回到 identifiers 页面即可看到刚创建的App ID。
9.3.2 Devices
在生成描述文件之前,需要先添加调试设备(iPhone 、iPad)
填写设备名称 和 UDID(设备标识)
获取设备的udid(最便捷的方式):打开蒲公英,一步快速获取 iOS 设备的UDID 手机扫描二维码根据提示操作 确定之后确定信息点击“Continue” 即可在Devices列表里面看到刚刚创建的
也可以XCode-> Windows -> Devices and Simulators中可以查看连接设备的udid
9.3.2 生成mobileprovision文件
在证书管理页面选择 “Profiles”,可查看到已申请的所有描述文件,点击页面上的加号来添加一个新的描述文件:
选择之前创建好的Bundle ID
选择Certificate证书,这里建议直接勾选 “Select All”,点击“Continue”
选择授权调试设备,这里建议直接勾选 “Select All”,点击 “Continue”
输入描述文件的名称, 点击 “Generate” 生成描述文件
点击“Download”下载保存开发描述文件(文件后缀为 .mobileprovision)
9.4 内测发布
9.4.1 Certificate证书
前面9.2说过了,就不啰嗦了
9.4.2 Provisioning Profile
前面9.3说过了,就不啰嗦了。
9.4.3 Archive
在XCode选择,Product , Archive
然后选择版本,选择Distribute App
选择Custom
选择Release Testing
选择自动签名
最后选择Export就可以了
9.4.4 蒲公英
在Export文件中找到ipa文件,然后丢入蒲公英里面就可以发布内测了。
9.5 AppStore发布
9.5.1 Certificate证书
在证书管理页面选择 “Certificates” 可查看到已申请的所有证书(TYPE:Development 为开发证书,Distribution为发布证书),点击页面的加号来创建一个新的证书
在 “Software” 栏下选中 “App Store and Ad Hoc”,点击 “Continue”
其他流程和9.2.1,9.2.2,9.2.3 是一样的,最后得到一个p12证书
9.5.2 Provisioning Profile
选择添加一个Profile
在 “Distribution” 栏下选中 “App Store”,点击“Continue”按钮:
选择之前创建好的APPID
接下来选择需要绑定的发布证书(iOS Distribution),这里勾选刚刚生成的发布证书”,点击“Continue”:
接下来输入描述文件的名称, 点击 “Generate” 生成描述文件:
最后点击 “Download” 将描述文件下载到本地(文件后缀为 .mobileprovision)
和9.3不同的是,发布到AppStore的Profile是不需要指定设备的UDID的
9.5.3 注册App
首次打包上传App之前,需要先注册App,否则会提示以上错误
登录这里,选择App
选择加号,新建App,填写相关信息,注意这里的BundleID必须要写对
9.5.4 Archive并上传
在XCode选择,Product , Archive
然后选择版本,选择Distribute App
选择App Store Connect,这个
它会自动选择证书,然后上传到AppStore
上交以后,在TestFlight就能看到你的App
9.5.5 提交审核
App信息需要填写、公司名称 、名称 、中文、套装ID 、SKU 、版权 、描述 关键词 、截图、技术支持 、App 审核信息、联系信息、App 设置内容版权、价格、类型等等…
另外还要记得填写App备案号
最后选择构建版本,然后选择右上角的“添加并审核”就完成发布了
- 本文作者: fishedee
- 版权声明: 本博客所有文章均采用 CC BY-NC-SA 3.0 CN 许可协议,转载必须注明出处!