iOS端Titanium集成ti.admob模块后启动闪退如何解决
ti.admob iOS端启动闪退问题排查方案
引入模块后未显示闪屏直接退出的问题,基本都是版本不匹配、缺少必要配置或编译缓存导致的,按以下步骤逐一排查即可解决:
- 第一步匹配模块与Titanium SDK版本
ti.admob和Titanium SDK有严格的版本对应关系,跨大版本混用必然在启动加载模块阶段崩溃:ti.admob 3.x系列仅兼容Titanium SDK 7.x - 8.x版本ti.admob 4.0.0 - 4.7.0兼容Titanium SDK 9.x - 10.x版本ti.admob 4.8.0及以上兼容Titanium SDK 11.x+版本,同时支持M系列芯片的arm64模拟器架构
如果当前使用的SDK版本和安装的模块版本不对应,先卸载不兼容的模块版本,安装匹配的版本即可。
- 第二步补全
tiapp.xml中iOS端的必填配置
从4.0.0版本开始,AdMob iOS SDK启动时会校验必填配置,缺项会直接触发崩溃。需要在tiapp.xml的<ios><plist><dict>节点下添加以下内容:注意:以下配置项缺任意一项都可能导致启动即退
- AdMob应用ID配置(必填,测试阶段可以先用官方测试ID,上线替换成自己的正式ID)
<key>GADApplicationIdentifier</key> <string>ca-app-pub-3940256099942544~1458002511</string>- iOS14+广告追踪权限描述(必填,未添加会在系统权限校验阶段触发崩溃)
<key>NSUserTrackingUsageDescription</key> <string>用于提供与你偏好匹配的个性化广告内容</string>- SKAdNetwork配置(4.5.0及以上版本必填,缺少会导致SDK初始化失败)
<key>SKAdNetworkItems</key> <array> <dict> <key>SKAdNetworkIdentifier</key> <string>cstr6suwn9.skadnetwork</string> </dict> </array> - 第三步完全清理编译缓存
更换模块版本、修改tiapp.xml配置后,增量编译的缓存残留会导致崩溃,需要执行完整清理:- 手动删除项目根目录下的
build文件夹 - 在项目目录下执行
ti clean命令清除所有编译缓存 - 重新执行编译命令,不要直接运行之前的增量编译包
- 手动删除项目根目录下的
- 第四步排查依赖冲突
如果项目中同时集成了其他包含Google系基础依赖的模块(比如Firebase相关模块、Google地图模块),多个模块重复打包了GoogleUtilities、FirebaseCore等公共依赖时,会出现iOS运行时类冲突,直接在启动阶段崩溃。这种情况需要把所有带Google依赖的模块升级到适配同一版Titanium SDK的版本,保证公共依赖版本一致。 - 第五步排查架构兼容问题
如果你使用M系列芯片的Mac做iOS模拟器调试,4.8.0以下版本的ti.admob没有内置arm64模拟器架构,会因为符号缺失启动崩溃。要么升级模块到4.8.0及以上版本,要么在Xcode编译配置中给模拟器架构排除arm64架构再编译。
内容的提问来源于stack exchange,提问作者Manuel Rodrigues
相关产品推荐
相关产品推荐

