在 环境篇 ,我们在 步骤3 生成了一个 telegram-configuration 的文件夹,打开 telegram-configuration 文件夹,如图所示:
provisioning:真机运行以及打包 ipa 所需描述文件存放的文件夹
variables.bz:bazel构建项目时的配置
我们需要更改的就是 provisioning 文件夹和 variables.bzl 配置文件
1、打开 variables.bzl 配置文件
telegram_bundle_id = "xxx.xxxxx.xxxxxx"
telegram_api_id = "8"
telegram_api_hash = "7245de8e747a0d6fbe11f7cc14fcc0bb"
telegram_team_id = "xxxxxxxx"
telegram_app_center_id = "0"
telegram_is_internal_build = "true"
telegram_is_appstore_build = "false"
telegram_appstore_id = "xxxxxxxxx"
telegram_app_specific_url_scheme = "tg"
telegram_aps_environment = "development"
telegram_enable_siri = True
telegram_enable_icloud = True
telegram_enable_watch = True
- telegram_bundle_id:自己项目的 Bundle ID
- telegram_team_id:开发者账号的 teamID
- telegram_is_internal_build: dev 包填 true,appstore 包填 false
- telegram_is_appstore_build: dev 包填 false,appstore 包填 true
- telegram_appstore_id:上架后 AppStoreID,未上架可以不用改
- telegram_aps_environment:打包模式,dev 包填 development,appstore 包填 production
- telegram_enable_siri:是否需要配置 siri 功能
- telegram_enable_icloud:是否需要配置 iCloud 功能
- telegram_enable_watch:是否需要配置 watch App
根据自己需求填写完毕后,我们接着进行下一步
2、打开 provisioning 文件夹
我们能看到这就是打包时所需要的描述文件,这就需要我们到 苹果开发者中心 去生成对应的描述文件(如何生成对应的描述文件?看这个 issues),描述文件下载下来以后需要保持跟此文件夹的名字保持一致,然后将此文件夹的描述文件逐个替换;
如果 variables.bzl 文件中配置的是 dev 包,替换的就应是 Development 描述文件,配置 appstore 包,替换的就应是 App Store 描述文件
如果你不需要 watchApp 相关功能,你可以在 variables.bzl 中 telegram_enable_watch 填 False,然后将 provisioning 文件夹 WatchApp.mobileprovision 和 WatchExtension.mobileprovision 这两项删除,同时打开 BUILD 删除掉文件中对应的这两项;其他两个以此类推。
3、真机运行
cd Telegram-iOS
python3 build-system/Make/Make.py \
--cacheDir="$HOME/telegram-bazel-cache" \
generateProject \
--configurationPath="$HOME/telegram-configuration" \
--disableExtensions
跟生成 xcode 项目命令相比,少了一个操作指令
--disableProvisioningProfiles
这个指令是忽略掉描述文件构建 Xcode 项目,而我们已经配置好了我们的描述文件,所以不要执行忽略指令,让脚本根据我们的描述文件重新构建工程。
执行完毕,我们打开xcode来到这里:
可以看到 Bundle Identifier 是我们前两步配置的 Bundle ID,可以勾选 Automatically manage signing 让 Xcode 自动管理配置文件,也可以手动在 Provisioning Profile 选择对应的描述文件;设置完毕就可以在真机上运行了。
4、打包ipa
cd Telegram-iOS
python3 build-system/Make/Make.py \
--cacheDir="$HOME/telegram-bazel-cache" \
build \
--configurationPath="$HOME/telegram-configuration" \
--buildNumber=100001 \
--configuration=release_universal
- --buildNumber:熟悉开发上架的都应该知道这是啥,传 appstore 的时候同版本自增就行
- --configuration:打包 ipa 没特殊要求的话,就是默认 release_universal,如果要打 debug 包的话,就改为 debug_universal
5、ipa包位置
打包成功后,打开 Telegram-iOS 然后根据终端输出的路径去找 ipa 包