编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • Android提升进阶

  • iOS开发和进阶

    • README
    • ObjC编程入门

    • Swift编程入门

    • iOS入门到精通

      • iOS入门到精通案例
      • UIKit框架原理探索
      • UIViewController
      • 项目工程面板说明
      • 通信实践和设计思想
      • 网络请求和数据解析
      • 多线程实践和原理
      • Swift和OC混编开发
      • Swift版SnapKit布局
      • 开发SDK实践设计
      • iOS经验类笔记积累
        • 01.iOS真机模拟调试
        • 02.iOS打包ipa应用
          • 2.1 iOS发布方式
          • 2.2 AdHoc方式打包
        • 03.首次安装打开白屏
        • 04.混编桥接类配置
        • 05.Web加载跨域问题
        • 06.遇到沙盒权限保护
        • 07.iOS断点调试应用
          • 7.1 断点调试技巧
          • 7.2 自定义设置
          • 7.3 断点类型说明
  • Web开发和进阶

  • Linux应用开发

  • Apps
  • iOS开发和进阶
  • iOS入门到精通
杨充
2025-07-17
目录

iOS经验类笔记积累

# 17.iOS经验类笔记积累

  • 01.iOS真机模拟调试
  • 02.iOS打包ipa应用
    • 2.1 iOS发布方式
    • 2.2 AdHoc方式打包
    • 2.3 AppStore打包
  • 03.首次安装打开白屏
  • 04.混编桥接类配置
  • 05.Web加载跨域问题
  • 06.遇到沙盒权限保护
  • 07.iOS断点调试应用
    • 7.1 断点调试技巧
    • 7.2 自定义设置
    • 7.3 断点类型说明

# 01.iOS真机模拟调试

  • 第一步:连接设备,将你的iOS 17设备通过USB线缆连接到电脑上。确保你的设备已经解锁,并授权信任你的电脑。
  • 第二步:选择目标设备,打开Xcode,并在顶部工具栏中选择你的iOS设备作为目标设备。如果你的设备未在列表中显示,请检查USB连接,并确保设备已正确连接。
  • 第三步:配置项目设置,选择你的项目并进入"Build Settings"选项卡。在"Base SDK"中选择最新的iOS版本,以确保项目能够与该系统版本兼容。

iOS12-Xcode10-App真机调试以及一些坑:https://juejin.cn/post/6844903832602804232

# 02.iOS打包ipa应用

  • iOS开发- 打包ipa,让别人设备安装你的App:https://zhuanlan.zhihu.com/p/575601001
  • 最新版iOS Xcode如何证书配置和ipa打包:https://juejin.cn/post/7222475192932892728
  • IOS使用批处理打包:https://www.cnblogs.com/rslai/p/9291172.html
  • ios快速打包的方法:https://www.applebyme.ltd/info/ios-kuai-su-da-bao-de-fang-fa-168992.html
  • 详解iOS打包、发布与证书体系:https://juejin.cn/post/6989856745375924237
  • iOS 的 Code Signing 体系:https://juejin.cn/post/6844903902605737997

打包过程

  1. 选择发布方式。目前使用 Ad Hoc 方式
  2. 选择证书和描述文件。目前使用炳亿的苹果账号
  3. 编译 & 签名。直接通过 Archive 编译出包
  4. 导出ipa文件。打出ipa文件后上传到公司的keystore (opens new window)

AdHoc与App Store打包

  1. AdHoc打包:允许开发者将应用分发给特定的设备。使用AdHoc打包的应用只能在开发者注册的设备上安装和运行。适合于内部测试或小规模分发。
  2. App Store打包:此打包方法是为了将应用发布到App Store,可以让所有用户下载和安装。应用需要经过苹果的审核流程。

如何使用TestFlight做iOS的灰度

  1. 首先要打个ipa包,然后上传到TestFlight平台后,做灰度测试
  2. Test Flight审核没有正式审核严格,所以一般1-2天就可以通过,但是前提条件是我们没有严重的BUG。

# 2.1 iOS发布方式

App Store Connect -上架App Store以及TestFlight的app,用于生产环境发布 Ad Hoc - 部分机器可安装的app,用于非生产环境的测试 Enterprise - 企业级应用发布 Development - 与Ad Hoc类似,只有后续步骤所需要的证书和描述文件不同

# 2.2 AdHoc方式打包

Ad Hoc 分发是一种方式,允许开发者将应用程序分发给受限的用户群体,例如测试人员、内部员工或特定客户,而不需要通过 App Store 进行发布。Ad Hoc 分发通常用于测试、内部部署或限制性分发的情况。

限制设备数量:每个 Ad Hoc 分发的应用程序都有一个设备数量限制,通常是 100 台设备。

1.打包(AdHoc方式)——>2.keyStore签名体验——>3.发布蒲公英扫码安装

1.1 配置证书(在Signing & Capabilities),选择All,然后安装证书后,在iOS(在Provisioning Profile)找到所安装证书。

1.2 在菜单栏中选择"Product",然后选择"Archive"。这会将项目编译并生成一个归档文件。

1.3 配置plist文件。把这个文件放到工程根目录下,然后编辑修改method,teamID,还有provisioningProfiles等属性

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
<plist version="1.0">
<dict>
	<key>provisioningProfiles</key>
	<dict>
		<key>com.johannli.WecardSDKDemo</key>
		<string>marx_dist2026</string>
	</dict>
	<key>method</key>
	<string>ad-hoc</string>
	<key>uploadBitcode</key>
	<false/>
	<key>uploadSymbols</key>
	<true/>
	<key>teamID</key>
	<string>CRY5MTFJN7</string>
	<key>signingCertificate</key>
	<string>Apple Distribution</string>
</dict>
</plist>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

1.4 制作脚本,脚本如下所示。核心命令是:xcodebuild -exportArchive

#!/bin/bash
RELEASE_DIR=release
rm -rf $RELEASE_DIR
mkdir -p $RELEASE_DIR

#xcodebuild archive \
#    -project AirPalmSdk.xcodeproj \
#    -scheme AirPalmSdk \
#    ARCHS="arm64" \
#    -destination 'generic/platform=iOS' \
#    -configuration Release \
#    -archivePath ./build/archive.xcarchive
xcodebuild -exportArchive \
    -archivePath /Users/yangchong/Library/Developer/Xcode/Archives/2025-03-06/AirPalmSdk.xcarchive \
    -exportPath ${RELEASE_DIR} \
    -exportOptionsPlist ./ad-hoc.plist \
    -allowProvisioningUpdates
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

1.5 然后编译脚本,修改1.2步骤输出的归档文件路径。然后在cmd中执行脚本即可,如下所示,打包成功!

CHONGYYANG-MB1:AirPalmSdk yangchong$ bash release.sh
2025-03-06 12:04:18.357 xcodebuild[25931:56545555] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path "/var/folders/f1/12b2l4wx1cb_js9wm1zy_8z00000gn/T/AirPalmSdk_2025-03-06_12-04-18.356.xcdistributionlogs".
2025-03-06 12:04:18.465 xcodebuild[25931:56545555] [MT] IDEDistribution: Command line name "ad-hoc" is deprecated. Use "release-testing" instead.
Exported AirPalmSdk to: /Users/yc/ugit/WxiOSPalmDa/ObjectiveC/AirPalmSdk/release
** EXPORT SUCCEEDED **
1
2
3
4
5

2.1 上传ipa,到keyStore签名平台。然后到企业签名中,点击内部体验,上传1.5步骤中打好的安装包,进行签名。最后会生成一个下载文件(带有sign)

3.1 将带有签名的ipa上传到蒲公英上,会生成一个安装二维码。扫码安装即可完成app的体验!

# 03.首次安装打开白屏

问题表现:最近新APP的开发反馈来一些问题,主要表现在首次安装该APP,首次启动,页面白屏没有数据。后台杀死重新打开,就好了!

iOS系统问题:iOS10之后,APP首次安装会有询问【是否允许“xxxAPP”使用数据?】询问网络权限弹窗,导致在用户允许之前,APP发出去的请求都是失败的。

猜测:因此很容易猜测出这样的结论:用户点“允许”之前,网络请求全都是失败的;而点“允许”之后,网络请求就能正常进行了。

解决方案如下所示:

  1. 首次安装增加开机屏引导:APP判断用户是否为首次,如果是,则推迟网络请求时机到用户滑动完引导界面。一般在用户滑动的过程中系统应该会询问网络权限。
  2. 首页无网络case的状况处理:出现数据空白时,如果在空白页面上有“重新加载”的按钮,也可以让用户体验好一些。用户点击重新连接会重新发起请求!
  3. 延迟请求:对于首次启动的所有接口,如果能延迟到用户点击“允许”之后再请求就可以,但致命缺点是不知道延迟多长时间。
  4. 稍后重新请求:网络框架如果做了请求失败时,定时重新请求的处理,应该也能解决首次请求失败的问题。这个比较麻烦!
  5. 监听网络状态:可以监听网络可达性检测的过程,类似Android中网络状态监听广播。当收到网络已连接可用,重新加载页面或者接口!

注意事项:如果用户点了不允许,那这个问题无解,必须用户去设置里面开启。

最快捷最后选择方案5,因为这个实现起来稍微简单,省时省力!如果后期该App对外发布则考虑2和5结合!

# 04.混编桥接类配置

【iOS开发】Swift、OC 混编用到的 Bridging-Header.h

https://cloud.tencent.cn/developer/article/1412686

iOS开发:在Swift中调用oc库 https://www.cnblogs.com/tonge/p/4974686.html iOS开发之-- oc 和 swift混编之自建桥接文件:https://www.cnblogs.com/hero11223/p/6337398.html Swift版本的Framework中,使用OC桥接报错:https://blog.csdn.net/weixin_33928467/article/details/91681955 用swift开发framework时采用OC混编的解决方案: https://www.cnblogs.com/zbblog/p/16228840.html

遇到问题:'WXApiObject.h' file not found with include; use "quotes" instead

解决办法:https://blog.csdn.net/wyz670083956/article/details/109360816

# 05.Web加载跨域问题

IOS 跨域问题分析和处理:https://blog.csdn.net/yangwubolwg/article/details/125215476

# 06.遇到沙盒权限保护

iOS swift Could not create a sandbox extension for '/' 该怎么解决

错误原因:iOS 的沙盒机制限制了应用程序对文件系统的访问。WKWebView 需要明确的权限来访问文件或目录。如果 allowingReadAccessTo 参数设置为根目录 / 或一个不包含目标文件的目录,就会触发此错误。

# 07.iOS断点调试应用

# 7.1 断点调试技巧

设置断点,在你想要调试的代码处点击设置就行了。通过快捷键"Command+"也可以。

断点的自定义设置,在设置断点的地方,右击该断点,会弹出一个栏,选择Edit Breakpoint,可以对断点进行自定义设置。具体可以看:https://blog.csdn.net/sunhuaqiang1/article/details/138151904

# 7.2 自定义设置

# 7.3 断点类型说明

上次更新: 2026/06/10, 11:13:41
开发SDK实践设计
README

← 开发SDK实践设计 README→

最近更新
01
信号崩溃快速排查
06-15
02
CoreDump破案
06-15
03
perf火焰图实战
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式