本文目录一览:
Xcode 一定要在Mac上用吗,能不能在Windows上用呢
不可以,xcode是苹果版的,只能装在苹果的电脑系统
Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由苹果公司开发。Xcode是开发OS X 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。
Xcode6的项目放到Xcode7中无法运行?
Xcode7是iOS9了,对程序做了一些调整,给程序猿挖了点坑。
一、iOS9 bitcode
首先最大的问题就是坑货xcode7,xcode7默认是打开bitcode的,bitcode是苹果为了解决他自己以后的应用可以随意更换硬件的处理做的准备也就是arm指令集和x64指令集的问题
那么我们的工程如果你采用了别人封装的第三方库,那么好了,会爆以下错误
ld: ‘/UsersFramework/SDKs/PolymerPay/Library/mobStat/lib**SDK.a(**ForSDK.o)’does not contain bitcode. You must rebuild it with bitcode enabled (Xcodesetting ENABLE_BITCODE), obtain an updated library fromthe vendor, or disablebitcode for this target. for architecture arm64-xcode5windows
上述这段文字说明了我们的第三方库不支持bitcode,如果你需要支持,就需要这个第三方库也支持bitcode。苹果目前给出的临时解决方案就好比当初MRC和ARC时候的解决办法,当初xcode5更新时候默认是工程创建是ARC的,你可以关闭ARC改为MRC,经过了一段时间后,大家都开始使用了ARC,那么bitcode也一样,在xcode7时候默认是开启的,我们需要关闭,那么如何关闭-xcode5windows
我引用了一篇文章的gif图来做演示
在targets里面选择BuildSetting中搜索bitcode,然后改为no就ok了
二、iOS9 https问题
如果在Xcode 9之前使用的时http请求,那么在XCode 9上编译的App是不能联网的,会提示如下错误:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app‘s Info.plist file.-xcode5windows
修 改方法是要么使服务器支持https访问,要么关闭https的使用。第一种方法对于个人开发者来说代价还是比较大的,因此推荐使用后面一种方法,具体的 做法是:在工程的Info.plist文件里添加NSAppTransportSecurity字典类型的,添加一个元素:key为 NSAllowsArbitraryLoads,值为YES。-xcode5windows
三、iOS 9 使用URL scheme必须将其加入白名单(摘抄)
否则会提示类似如下错误:
canOpenURL: failed for URL: "mqqopensdkapiV2://qqapp" - error: "This app is not allowed to query for scheme mqqopensdkapiV2”-xcode5windows
修正方法是,Info.plist文件中添加一个key为LSApplicationQueriesSchemes的数组值,里面包含需要添加白名单的string类型的scheme。特酷吧在项目中使用了qq,微信等分享登录功能,需要添加的值为:-xcode5windows
mqqopensdkapiV2
mqqOpensdkSSoLogin
mqq
mqzoneopensdkapiV2
mqzoneopensdkapi19
mqzoneopensdkapi
mqzoneopensdk
mqzone
weixin
三、新浪微博的jsonkit在部分机型上面导致崩溃(群友Gemini提供
问题是 程序会奔溃到jsonkit.m void keyObjectISA = ((void **)keys[idx]);这行代码,因为在os x10.10中,NSString采用了TaggedPointer这项技术,此类型不使用解应用isa来获取其所属类,而是通过接下来的三位来查找类表索引的类型,且对象指针最低位置为1。-xcode5windows
如何解决:解决方法由群友sun提供参考地址如下
由于taggedpointer类型不能用isa了,就必须修改为object_getClass(keyObject) ,而且在line:2601处也需要做修改
这里附一个修改过的jsonkit,可以正常使用
四 、原来的dylib后缀名的库全部修改为libz.tbd
五、报错 Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294 (群友sun提供)-xcode5windows
在Info.plist中,可以找到:“Main storyboard file base name” String “Main”,删掉这个条目, 再启动,屏幕变成了黑屏
手动添加window
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {-xcode5windows
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //全屏window
self.window.backgroundColor = [UIColor whiteColor]; //白色背景
[self.window makeKeyAndVisible]; //
return YES;
}
ok,这个由于更新xcode7报错已解决!
如果按照上面修改完,发现还在报错,那么去看看你的项目是不是加了引导页
把上面的add方法,变成下面的就好。
这个add方法在xcode7之前是没有问题的,在xcode7后不能这样写了!
六、找不到(丢失).dylib文件,换成.tbd文件而又无法运行,请用下面的方式来解决。
Go to Build Phases Link Binary with Librairies + Add other
Once in the file selection window do "CMD"+Shift+G (Go to folder) and type /usr/lib/
From /user/lib you can add: libz.dylib and more...
Compile and have fun
简书Xcode7的常见问题
一.Xcode7,iOS9之后传出来的什么Xcode有鬼,被植入代码片段什么的,可以看看,了解一下
二.bitcode问题--未正确设置可能导致编译问题。适配iOS9
1、大部分社交平台接口不支持https协议。
问题描述:在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据。对ShareSDK来说,具体表现可能是,无法授权、分享、获取用户信息等。还可能造成我们的编辑界面里传http之类的网络图片的时候,我们的编辑界面不会显示图片截图,解决的办法或者全面关闭https,允许使用http请求;或者把图片的域添加;又或者选择使用https的图片-xcode5windows
解决方案(以下方法2选1):
(1)、暂时退回到http协议。
具体方法:在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。然后给它添加一个Key:NSAllowsArbitraryLoads,类型为Boolean类型,值为YES;-xcode5windows
示例
(2)、设置域。可以简单理解成,把不支持https协议的接口设置成http的接口。
具体方法:
1)、在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。
2)、然后给它添加一个NSExceptionDomains,类型为字典类型;
3)、把需要的支持的域添加给NSExceptionDomains。其中域作为Key,类型为字典类型。
4)、每个域下面需要设置3个属性:NSIncludesSubdomains、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads。均为Boolean类型,值分别为YES、NO、YES。-xcode5windows
示例
2、大部分社交平台SDK不支持bitcode。
问题描述:iOS 9新建项目默认需要支持bitcode,而不支持bitcode的SDK会导致无法编译运行。解决方案:
(1)、暂时关闭对bitcode的支持(建议),方法如下图
(2)、移除不支持bitcode的平台SDK。
示例
3、添加Scheme白名单
问题描述:在iOS 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。因此要支持客户端的分享和授权等,需要配置Scheme名单。-xcode5windows
具体方法:
1)、在项目的info.plist中添加一LSApplicationQueriesSchemes,类型为Array。
2)、然后给它添加一个需要支持的项目,类型为字符串类型;
示例
三.ATS 未正确设置可能导致一些网络请求出问题。
WWDC 2015上了解到iOS 9将要求网络请求使用HTTPS协议。我们知道,Apple在安全及用户隐私方面做了很多工作,包括沙盒机制、代码签名、禁用私有API等。而在今年6月份的WWDC 2015上,Apple又提出了App Transport Security(ATS)的概念。这一特性的主要意图是为我们的App与服务器之间提供一种安全的通信方式,以防止中间人窃听、篡改传输的数据。这一特性在iOS 9+和OS X 10.11+中是默认的支持项。这一概念的提出,也将意味着Apple将会慢慢转向支持HTTPS,而可能放弃HTTP。-xcode5windows
App Transport Security技术要求
我们先来看看ATS的技术要求(参考App Transport Security Technote):
1)The server must support at least Transport Layer Security (TLS) protocol version 1.2.
2)Connection ciphers are limited to those that provide forward secrecy (see the list of ciphers below.)-xcode5windows
3)Certificates must be signed using a SHA256 or better signature hash algorithm, with either a 2048 bit or greater RSA key or a 256 bit or greater Elliptic-Curve (ECC) key.-xcode5windows
可以看到服务端必须支持TLS 1.2或以上版本;必须使用支持前向保密的密码;证书必须使用SHA-256或者更好的签名hash算法来签名,如果证书无效,则会导致连接失败。
Apple认为这是目前保证通信安全性的最佳实践,特别是使用TLS 1.2和前向保密。当然,相信Apple也会与时俱进,不断的修正ATS,以保证网络通信的安全性。
默认配置
在iOS 9+和OS X 10.11+中,如果我们的App使用了NSURLConnection、CFURL 或者NSURLSession相关的API来进行数据通信的话,则默认是通过ATS的方式来传输数据。在此配置下,如果我们使用HTTP来进行通信,则会导致请求失败,并报以下错误:-xcode5windows
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.-xcode5windows
这样意味着如果使用ATS,将无法支持HTTP协议(我们测试了一下,由于我们的登录服务是使用HTTP协议,目前在iOS 9下已无法正常登录)。相信目前还有大量的应用是通过HTTP协议来访问服务器的。而要让所有的应用都转向支持HTTPS,显然是一件费时费力的事(与今年年头所有应用必须支持64位ARM不同,那次只是在客户端层面,而ATS涉及到服务端,影响面更大)。所以苹果提供了一种兼容方案,下面我们就来看看如何处理。-xcode5windows
自定义配置
考虑到现实因素,我们可能并不想使用默认配置,或者至少需要一个过渡时期。为此,Apple允许我们在Info.plist文件中来自行配置以修改默认设置(Exceptions),下表是一些键值及对应的类型和说明:-xcode5windows
示例
示例
示例
示例
示例
四.Scheme未正确设置可能导致应用程序间跳转会有问题
同一中的白名单
五.Requires full screen 未正确设置可能导致应用程序上传会失败 提示ITMS-90474 ITMS-90475
示例
ue5打开xcode协议错误
手把手帮你解决升级Xcode后UE5(UE4)编译、打包失败的问题(Mac、Windows均有对应方案)

江湖小辈
自由职业者,UE4程序兼美术,谢老板们赏饭。
来自专栏UE4游戏开发经验随笔
出去玩了好几个月,回来更新一个老的IOS项目,发现使用Transporter上传ipa文件时,AppStore已经不再支持IOS 15 SDK之前版本打包的应用了。
为了能更新到IOS 15 SDK,我们必须将Xcode也升级到13版本之后。连带着的,我的Mac系统也得升级到最新版才能支持Xcode13。(苹果这一套更新流程真的是痛苦)
一切系统、软件都已经升级完毕。我们满心欢喜地通过windows进行远程打包,发现报了一堆variable “***” set but not used 的错误。
而直接在Mac上通过Xcode编译空项目时,竟然也报这个错误。那基本可以断定,最新版的xcode编译条件更加严格,“set but not used”这种不算错误的错误,也被拎出来鞭尸了。
当然,我们可以把没有使用的变量都注释掉以规避掉这个问题,但是在开发测试阶段,变量又很多的情况下这样做非常耗时,更不要说有些未使用变量是部分引擎模块本身就存在的,所以我们还是要解决这个编译设置的问题。
解决方法有很多,大家择一而用就好。(推荐方法二、三)
一、使用较低版本的Xcode(适合纯小白)--亲测可用
Xcode13也是有很多小版本的,经过国内外各位开发者的测试,使用Xcode13.2.1版本你既可以享受最新版本的IOS SDK,你也可以不去管编译设置导致的错误。需要的用户可以直接使用以下链接下载使用。-xcode5windows
此方式不需要改代码,适合小白用户。但也仅适合小白用户。因为IOS SDK版本不断升级,以后我们必然还要使用更新的Xcode14、Xcode15 。。。 使用低版本Xcode只能解决眼下问题。
二、更改Unreal项目设置(适合使用mac编译的人)--亲测可用
用xcode打开项目,我们找到项目中的 .target.cs 和 Editor.target.cs,在其中加入以下两行
bOverrideBuildEnvironment = true; AdditionalCompilerArguments = "-Wno-unused-but-set-variable";
记得两个文件都要改,不要忘记Editor.target.cs。
之后我们重新使用Xcode编译,便可畅通无阻了。
当然,缺点是如果在windows下添加这两行进行远程编译,这是不起作用的,甚至Visual Studio会报Wno-unused-but-set-variable指令无效阻止你重新编译项目。
三、修改Unreal引擎文件(适合用windows进行远程编译的人) --亲测可用
找到Engine/Source/Programs/UnrealBuildTool 目录,双击 UnrealBuildTool.csproj 打开工程(不要求源码版,Launcer版本也可)
定位到工程的Platform/IOS/IOSToolChain.cs文件
在文档中搜索关键词 -Wall
我们删掉-Wall
rebuild一下UnrealBuildTool
关掉UBT工程,重新打开原本的项目,编译、打包一条龙毫无障碍~
在外面玩了好几个月,我终于要回到开发生活当中了。
大家关于游戏开发有想看、想学、想解决,又或者网上找不到资料、解决方案的,不管是美术方面还是程序方面,亦或者是webgl这种偏门应用领域,都可以在下面留言,如果有时间的话我会在旅行空余时间挑一些实用内容写写文章、做做视频。-xcode5windows
展开阅读全文

发布于 5 月前著作权归作者所有

赞同 8


喜欢 0

小菜鸟请教xcode问题 按按钮没反应啊
1.可能你把uibutton加在了一张uiimageview上,UIImageView的userInteractionEnabled默认是NO的,不接受event。所以请把它设置成yes
2.也有可能,你的uibutton虽然加入到了一个view里,但是你view没有给frame,但是button却给了。所以虽然显示的了,但是没办法点
请看看,是不是有可能是以上2种情况