iOS 开发常见问题 (一)

一、iOS 静态库为什么这么大?会导致打出来的包体积大很多吗?

.a 文件的体积(46.8 M) = 真机用的 .a (28.1M) + 模拟器用的 .a (18.7 M),当然每个 .a 文件还支持了不同架构:arm64 armv7 armv7s i386 x86_64。.a 的部分都只包含了代码的部分,静态库是在编译时链接二进制代码,对产生的二进制文件的大小并不会有太大的影响,目前 iOS 的 Sample 引入 AnySDK Framework 产生的大小也只有 1 M。

二、编译时报错 /xxxx/libPluginProtocol.a(Util.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.
或者 clang: error: -fembed-bitcode is not supported on versions of iOS prior to 6.0

Xcode7 开始加入的 bitcode 是被编译程序的一种中间形式的代码,在 Xcode 7 中,我们新建一个 iOS 程序时,bitcode 选项默认是设置为YES的。我们可以在”Build Settings”->”Enable Bitcode”选项中看到这个设置,并且关掉它

iOS 开发常见问题 (一)_第1张图片
bitcode

三、编译时报错 All interface orientations must be supported unless the app requires full screen.

看到这句提示,就是说 App 默认是有开启了多任务功能,而多任务功能是需要 App 支持所有方向,如果我们 App 是有需要支持多任务,则需要开启 App 对各个方向(上、下、左、右)的支持;如果 App 不需要开启多任务,则只需要将如下示意图的requires full screen
勾选上就 ok

iOS 开发常见问题 (一)_第2张图片
xcode7-2

四、应用内网络无法连接

在 App 的 Info.plist
里面加入如下信息,或者按图中方法添加

xcode7-3

五、UrlSchemes跳转返回失败

在 iOS 9 中,如果使用 URL scheme 必须在Info.plist
中将你要在外部调用的 URL scheme 列为白名单,否则不能使用。Key为 LSApplicationQueriesSchemes ,键值内容是 LSApplicationQueriesSchemes urlscheme urlscheme2 urlscheme3 urlscheme4目前已知可能需要添加的值:微信:wechat weixinQQ:mqq mqqapi mqqapiwallet支付宝:alipay alipayshare safepay
下图仅供参考

iOS 开发常见问题 (一)_第3张图片
xcode7-3

六、找不到 libsqlite3 动态库

更新2.1.0版本打包工具可以解决
不更新工具可以删除原先工程中的 libsqlite3.dylib ,在 Build Phase->Link Binary With Libraries
中添加相应的libsqlite3.tbd如果还报错,删掉 libsqlite3.tbd,在build settingother linker flags增加 -lsqlite3,其他dylib也可以类似处理

七、Info.plist 中出现了NSApplication 和 Main nib file base name 这两项原先没有的项

这两项是 Mac 的 Info.plist 拷贝过来的,请删除 Mac 的 Target 和相关文件夹。如果该 Target 需要留着,请参考各语言的快速集成指南,按规则拷贝一份.xcodeproj
用于 AnySDK 打包。
如果原工程的配置有改动的话可能需要重新拷贝这份.xcodeproj。

**八、iOS9下使用了- (BOOL)application:(UIApplication )app openURL:(NSURL )url options:(NSDictionary, id> )options 方法导致 SDK 方法未被调用

iOS9 后引入了该方法。若工程的 Delegate 中有该方法,且设备为 iOS9 以上,则走该方法,否则走原先的
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
方法
若遇到相关问题,可将
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options
方法删掉试试。如果应用必须使用该方法,则可将
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
处 AnySDK 添加的代码移到该方法下。

九、编译时各种 std 报错

若在编译时碰到如下问题,请确认Build Setting中的C++ Standard Library 和你使用的框架的libc++/libstdc++相对应

iOS 开发常见问题 (一)_第4张图片
stderror

iOS 开发常见问题 (一)_第5张图片
stderror2

十、渠道要求启动图片要显示 3 秒以上
在入口文件中 AppDelegate/AppController/UnityAppController
添加以下代码,已有该方法的话就将 [NSThread sleepForTimeInterval:3.0];
添加到函数最前面。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
     [NSThread sleepForTimeInterval:3.0];//设置启动页面时间
     return YES;
}

你可能感兴趣的:(iOS 开发常见问题 (一))