问题描述
近期在集成公信宝的SDK时,发现跳到SDK相关界面时,界面有图标缺失的问题;但是运行SDK demo时,三方界面又展示正常。下面来一步步排查问题。
排查步骤
1、核对集成步骤
仔细对了一遍集成步骤,发现没有任何问题,bundle目录如下图所示:

2、怀疑是bundle路径问题
加载不出来的图片是在gxb_data_sdk_bundle.bundle
中,下面是项目目录分析:

由上面的目录可以看出,工程目录比较复杂。
最外面是主工程,主工程里包含了
FanbeiCreditSDK
,FanbeiCreditSDK
中集成了公信宝SDK。
3、解决方案
把gxb_data_sdk_bundle.bundle
改成外部依赖,即放到主工程中,如下图所示:

结果:加载成功!
4、原因分析
因为gxb_data_sdk_bundle
不在mainBundle
中(在FanbeiCreditSDK
中),所以以下代码是加载不了gxb_data_sdk_bundle
中的图片资源的。
// 主bundle,也就是可执行的工程的bundle
NSBundle *mainBundle = [NSBundle mainBundle];
// 放在主工程中的自定义bundle
NSString *myBundlePath = [[NSBundle mainBundle] pathForResource:@"gxb_data_sdk_bundle" ofType:@"bundle"];
NSBundle *myBundle = [NSBundle bundleWithPath:myBundlePath];
// 放在自定义bundle中的图片
NSString *imagePath = [myBundle pathForResource:@"authListHeaderbg" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
综上所述,得到的解决办法是:增加主工程的外部资源依赖,即拷贝一份gxb_data_sdk_bundle
到主工程中。
网友评论