iOS开发工具

2024-04-02 fishedee 后端

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.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.5 其他操作

8.5.1 clean

编译时遇到的疑难杂症,都可以执行以下步骤

  • 在Xcode上运行”Product > Clean Build Folder“。
  • 在终端上运行flutter clean
  • 在终端上运行flutter pub get (这将创建/project/ios/flutter/Generated.xcconfig)
  • 在终端上运行pod install (假设您在/project/ios文件夹中)

然后可以在xcode上进行构建。

9 签名证书,内测与上架

参考资料:

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备案号

最后选择构建版本,然后选择右上角的“添加并审核”就完成发布了

相关文章