xcode中的git project.pbxprojj冲突怎么解决

【解决xcode 故障】-为您提供最新最优解决xcode 故障信息-突袭网
解决xcode 故障的所有信息
&& &回答() && &回答() && &回答() && &回答() && &回答() && &通过切身实践,我总结出如下方法。在targetsetting(不是project setting)中,应该检查如下设置: Valid Architectures : armv7 然后我删除了arm6,程序可以正常运行。 M Jesse 在创建多项目标(target)的时候,我也遇到过这种问题,我的...回答(1) && &通过切身实践,我总结出如下方法。在targetsetting(不是project setting)中,应该检查如下设置: Valid Architectures : armv7 然后我删除了arm6,程序可以正常运行。 M Jesse 在创建多项目标(target)的时候,我也遇到过这种问题,我的办法...回答(1) && &看AAViewController这个名字,就知道是自定义的类,你看看你有没有自定义这个类了回答(3) && &do while有些问题 程序死循环了 第一个打印printf("%d=",num); 没显示的原因是没有遇到换行符 存在buffer里面了,要等到遇到换行或者程序结束才会显示出来 改了一下,还有一些格式上的问题 你试试 #include "stdio.h" int main() { int...回答(1) && &这是经常出现的现象,虽然异常发生后,最后停在这一行里了,但实际上并不是这行代码有问题。而是内部某一处出现错误,但因为没有进行异常捕捉,异常被抛出,最后停到调用的最外层去了。具体哪儿出错,得自己根据产生异常中断的操作,在该操作外...回答(1) && &dataSource 和 delegate是UITableViewController的属性,UIViewController是没有的,所以你右键UIViewController没有出现,右键UITableViewController才会出现 希望能解决您的问题。回答(2) && &1. 打开项目文件夹,将里面所有的文件复制到一个新的文件夹中去; 2. 打开新得到的文件夹,里面有TableViewTest文件夹和TableViewTest.xcodeproj。现在更改TableViewTest文件夹名为TableView,然后在更改名称之后的Table文件夹中把TabelViewTest...回答(3) && &简单来说,直接双击Build好的可执行文件就可以了。在项目文件夹\build\debug 目录里就可以找到。 更直接一点,Xcode里面的文件列表就有,例如下图中最上面的一个文件(图标长得就像终端一样的)。 回答(2) && &是不是app的设置里Main Interface里还是Main_iPhone所以找不到入口的原因,为何不用storyboard呢回答(1)干了3天之后才想起来合并两个同时开发的分支,结果project.pbxproj的冲突不知道怎么解决,xcode打不开项目了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
Sponsored by
100offer 程序员拍卖,让不缺工作机会的优秀程序员,安全匿名的在一个月内拿到 10 - 15 个优质面试机会,从而拥有一份激(shou)动(ru)人(geng)心(gao)的事业。
Promoted by
干了3天之后才想起来合并两个同时开发的分支,结果project.pbxproj的冲突不知道怎么解决,xcode打不开项目了
23:40:18 +08:00 · 1854 次点击
我们的一个项目原来有外包的团队开发,3天前,我们本地的一个团队参与到里面去,我们从当时的分支创建了一个新的分支进行本地开发,两个分支在同时进行开发,这3天大概也有提交了几十次了,今天晚上,我们对两个分支进行了第一次合并,发现project.pbxproj中有冲突导致项目无法在xcode中打开。project.pbxproj超过了1w行,我打开文件后手工删除了里面&&&head,===,&&&branch-name 这样的地方,不过现在还是无法打开,这个文件太大了,而且是自动生成的,所以现在要找出是哪里的问题实在不好办,真后悔应该每天都合并一次的,时间越长合并的时候越麻烦啊?请问大家对于project.pbxproj的冲突合并有啥经验吗?我现在想想实在不行的话只能放弃一个分支的提交记录,重新创建分支,然后把之前的代码应用过来了,真不甘心啊。
5 回复 &| &直到
18:19:40 +08:00
& & 00:29:38 +08:00
用文本编辑器打开project.pbxproj手工merge一下里面的冲突
& & 01:01:36 +08:00
project.pbxproj里主要就是文件目录结构和项目配置引入的框架什么的吧如果手动合并是在困难,不如拿个minimal的project.pbxproj从头来,把项目文件一个个添加进去,正好还可以整理下目录结构
& & 02:33:41 +08:00
& & 04:49:45 +08:00
以前出现merge的工程冲突的时候,是采用2l的方法。工程文件只是配置文件,是工程里其他资源的索引结构,用其中一个branch的工程文件打开整个merge后的工程,然后再手动添加或者删除,应该就没问题了。
& & 18:19:40 +08:00 via iPad
我们去年也面临过这个问题,我们使用kdiff3手动merge解决冲突,后来再也没担心过project file冲突问题。
& · & 1129 人在线 & 最高记录 1307 & · &
创意工作者们的社区
Lovingly made by OLIVIDA
VERSION: 3.8.3 · 39ms · UTC 02:26 · PVG 10:26 · LAX 19:26 · JFK 22:26? Do have faith in what you're doing.1201人阅读
Xcode 是苹果公司的集成式开发环境(IDE),可以同时用来开发 iOS 和 Mac OS X 应用程序。当你在 Mac 电脑上安装 Xcode 之后,同时也会安装 iOS SDK,其中包含了 iOS 平台开发所需的接口等。
&& 在线安装下载地址 /xcode/index.php
&& 下载地址 登录进入 ,就可以看到下载列表
1. 编译项目时常报如& Undefined symbols:
&.objc_class_name_PlacardView&, referenced from:
literal-pointer@__OBJC@__cls_refs@PlacardView in MoveMe2View.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
这样的错误.
解决方法参考下文:
That has happened to me a lot of times. That error is caused when the compiler can't find a class or function. Besides the obvious reasons for that to happen, you should also do something like this:
On the left of the Xcode window go to the targets, and find your application. Open it. You should see a build phase named &Compile Sources&. Make sure that your implementation file is included inside that build phase. If not, drag and drop it onto that build
Also, make sure that you have all frameworks included and linked to your application! To make that sure, go into your application target again, and see the &Link Binary With Libraries& build phase. See if all necessary .framework files are in there. If not,
add them using drag and drop.
在项目的Groups&Files窗口中,打开Targets/项目名 /Compile Sources/把提示找不到的源文件拖到这里.重新编译.
2.接上手机(版本 4.2.1 8c148a),在Organizer中,报The version of iOS&&... &does not match any of the versions of iOS supported...,重启手机,xcode都不能解决。最后,重装xcode_3.2.5_and_ios_sdk_4.2_final.dmg。
3.设置字体大小:
1)打开Preferences,快捷键是“Command +,”(注意,是三个键,按住command键,然后再快速地按“+”和“,”两个键即可)
2)选择“Fonts &Colors”,选中所有的“Category”,然后双击“Font”一列,在弹出的对话框中选择适合自己的字体大小即可。
包括重构变量名,方法名,和类名。
选择变量名,点击Edit\Refactor\Rename...,要在输入框内输入新名字后,点Preview,然后Preview变成Apply,点击Apply。
http://blog.csdn.net/f/article/details/6457927
&&& 一般在开始重构之前要备份,选择File-Make Snapshot,Xcode会记住项目当前的状态。如果发现代码被改得面目全非,选择File-Snapshot,回到做快照的那一刻。
如果发现提示:Snapshot Failed:A project snapshot cannot be created. 可能是一个磁盘镜像文件被损坏了,它用来存储快照,可以到~/Library/Application Support/Developer/Shared/SnapshotRepository.sparseimage 把镜像文件删掉,然后重启xcode。
&&& 如果发现修改了某些代码之后出了问题,利用 Xcode 快照(snapshot)功能就可以轻松恢复工程到之前的状态,甚至已删除的工程也可以。快照会保存当前工程的所有状态到磁盘上,以备之后进行恢复。Xcode 的工程管理器中列出了所有可用的快照。
&&& 可以随时手动创建快照,也可以让 Xcode 根据场合自动创建快照,例如每次构建之前或通过查找并替换修改代码之前等。
&&&& File & Create Snapshot,输入此快照的名称和描述,点按 Create Snapshot。?此快照就会出现在工程管理器中了。要恢复到此快照,请点选 File & Restore Snapshot。
6.help\search
&用来查找在菜单中的功能,命令等。
7.在svn上增加目录时,用import.
8. 修改某个文件时,弹出
This file is not writable. You could either perform an SCM Edit operation on this file, or allow editing anyway. You may not be able to save your changes, but you will be able to Save a Copy somewhere
是由于在本地锁定了文件,显示简介 ,去掉勾选已锁定。
9. 制表符替换成2个空格,在编写程序代码时用空格代替Tab,可以避免由于编辑器对tab显示方式不同引起的代码错乱,是一种良好的编程风格
Xcode Preferences-&Indentation 把indent width设置为2个空格。
10.格式化代码
&&& Edit - Format-&Re-Indent
&& 在Xcode\Preferences...\ key bindings\拷贝一份xcode default\编辑Re-Indent 同时按下想要设置的快捷键。
&& In Xcode 4, it's been moved to Editor (注意是Editor,不是Edit)& Structure & Re-Indent command (and has a default shortcut of CTRL+I ),默认快捷键是 Ctrl加i。它好按且未与其它快捷键冲突,所以不需要修改。
11.打不开工程文件时,打开project.pbxproj,查找冲突mine,删除冲突标记。
12.换过证书,提示provising文件问题,在 project.pbxproj 中查找提示那串码,删除掉这串码保存。
13.xcode 4.2 svn问题
&&& 在Respotitories中选中工程目录后,点update,弹出对话框,&Error validating server certificate for& :443.......&,解决办法:
&&& 比如用浏览器登录 /p/.../source/checkout,复制 svn checkout /svn/trunk/ xxx --username xxx,到控制台中运行,提示Error validating server certificate for ':443':
&- The certificate is not issued by a trusted authority. Use the
&& fingerprint to validate the certificate manually!
Certificate information:
&- Hostname: *.
&- Valid: from Wed, 11 Apr :01 GMT until Thu, 11 Apr :01 GMT
&- Issuer: Google Inc, US
&- Fingerprint: cb:f1:c8:ac:28:d5:61:b7:c1:9c:73:7e:3a:b6:bb:e2:e6:55:95:2a
(R)eject, accept (t)emporarily or accept (p)ermanently?& 输入p,开始checkout,然后到xcode中,发现也可以成功执行更新了。
& 但在提交上,仍然弹出& Authentication realm: &https://:443& Google Code Subversion Repository
Password for '用户名':
Authentication realm: &:443& Google Code Subversion Repository
Username: svn: Commit failed (details follow):
svn: MKACTIVITY of '/svn/!svn/act/3-4c4e-a551-3e0dfd8c0510': authorization failed: Could not authenticate to server: rejected Basic challenge ()
14.在xcode4.2中,
&&&&& Product -& Profile 再选择leaks,启用内存泄漏监测。
&&&&& 相比之下,Product \ Analyze 是更好的工具,它分析一些垃圾代码,及潜在的内存泄漏,并且指出精确的代码行。可以看出,它建议所有自定义函数都返回自动释放的对象,否则会被列入潜在的内存泄漏中,potential leaks。
&&& 添加framework,
In the project navigator, selectyour projectSelect your targetSelect the 'Build Phases' tabOpen 'Link Binaries With Libraries'expanderClick the '+' buttonSelect your framework(optional) Drag and drop the addedframework to the 'Frameworks' group
&&&&& 且在xcode4中新建工程时,去掉Use storyboards,Use ARC,include Unit Tests三个复选。
15.& 编译可执行文件时,报object file format invalid or unsuitable
&&&&&& 打开终端:
&&&&&& sudo su&
&&&&&&&查看/usr/bin目录下是否存在codesign_allocate程序,如果存在,执行改名操作
&&&&&& sudo mv /usr/bin/codesign_allocate /usr/bin/codesign_allocate_old
&&&&&& 将xcode目录下的codesign做一个软链接
&&&&&&&sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate /usr/bin
16. 真机调试时,提示 No provisioned IOS devices are available.Connect an IOS device or choose an IOS simulator as the destination.
&&&&& 修改IOS Deployment Target,不要高于真机的版本。
http://rainbird./828
17.添加预定义宏
&&& 打开工程 Project---&Edit Project Editting(选着build)选项---&找到GCC Preprocessing-&Preprocessor Macros ,例如设置其值为DEBUG=1
18.xcode4中修改编译生成文件的位置
&& File\project settings\Derived data location\,选择Project-relative,输入文件夹名字
19. 真机调试报 error: failed to launch '/Users/gzty1/Library/Developer/Xcode/DerivedData/应用名-chiobhpmbvwnqudfqnfawdzjrtey/Build/Products/Debug-iphoneos/应用名.app/应用名' -- No such file or directory (/Users/gzty1/Library/Developer/Xcode/DerivedData/应用名-chiobhpmbvwnqudfqnfawdzjrtey/Build/Products/Debug-iphoneos/应用名.app/应用名)
&&&& 出现的原因可能是正在从appstore上安装此程序,同时又在真机调试安装些程序,导致后面真机调试安装此程序一直失败。
&&&& 解决方法:1. Clean (Shift+Cmd+K) ------ Removes all the product files, as well as any object files (.o files) or other intermediate files created during the build process (Apple Doc)
2. Navigate to &~/Library/Developer/Xcode/DerivedData&, delete folder for app in question ------ Derived data consists of project indexes, logs, and build products including intermediate files (Apple Doc)
3. Restart Xcode
One or the other usually fixes it. I haven't had to change Code Signing settings, but that would be my next step. Wouldn't re-install Xcode unless absolutely necessary.
&& 或者: 重新完成从appstore上安装此程序后,再尝试真机调试安装。
20. Xcode 提供了一系列用来管理整个开发流程的工具,从创建应用到测试、优化应用,直至上传应用到 App Store。
&&&&& /posts/20273
&&&&& 原英文版地址
&&&&& /library/ios/#referencelibrary/GettingStarted/RoadMapiOS/Tools/CreateYourAppinXcode/StartYourProjectinXcode/StartYourProjectinXcode.html
&&&&& 本《iOS应用开发入门指南》译自苹果官方的 系列教程。
&&&&& /posts/20250
&&&&& Provisioning Portal 配置门户
&&&&& 在创建新工程向导中,Class Prefix,应用委托就会被命名为 [Class Prefix]AppDelegate
21.Storyboards,故事板
&&&& 故事板里包含了定义此应用程序用户界面的对象、过渡(Transition)以及连接(Connection)。查看源文件发现MainStoryboard.storyboard是xml格式的内容。
&&&& /posts/20868
&&&& 利用 Xcode 检视器(Inspector),来观察视图控制器的状态等信息。
&&&& 需要注意的是,当选择一个视图时 Xcode 会将其高亮显示,此时画布中的颜色因为叠加可能会和 Colors 窗口中所选的颜色不完全一致。
&&&& 对齐引导线,它们能帮你轻松在视图中将 UI 元素对齐到边界或中心位
22.IBAction和Outlet
&&& 在 Xcode 中,给某个 UI 元素添加动作并设定相应的动作方法的途径是:按住 Control 键,并从画布上的该元素拖动到合适的源文件上(一般而言就是视图控制器的源文件)。故事板会把通过这种方式建立的连接进行存档。之后,当应用运行载入故事板时,这些连接就会被还原出来。
&& 在 Xcode 工具条里,点按 Utilities(实用工具)按钮关闭实用工具区域,然后点按辅助编辑器按钮(Assistant Editor)调出辅助编辑器面板。
确保辅助编辑器里显示的是视图控制器的头文件。在画布中,按住 Control 并从 Hello 按钮拖动到&HelloWorldViewController.h 的方法声明部分(即&@interface 语句到&@end 语句之间的部分)。
&& 在非苹果键盘上control键依然是Ctrl键。
&& IBAction 是一个特殊的关键词,用来告诉 Xcode 把一个方法当成目标-动作连接来看待。IBAction 被定义为&void。
&& 插座变量(Outlet)描述的是两个对象之间的连接。当你需要让一个对象(例如视图控制器),与它所包含的一个对象(例如文本框)进行沟通时,你就会把被包含的那个对象称为插座变量。当应用运行起来时,你在 Xcode 里创建的插座变量就被还原出来了,这样在运行时这些对象就可以相互交流了。
&& 给文本框设置委托对象:按住 Control 键并从文本框拖动到场景坞里的黄色球体上(黄色球体代表视图控制器对象),当半透明面板出现时,选择 Outlets(插座变量)部分的delegate。
23.源代码控制管理(SCM)
&&&& 能够提供比快照更加细致入微的变更跟踪管理。(如果你在团队中与他人协同工作,源代码控制管理还能帮你提高团队效率。)SCM 系统会在磁盘中对每个文件保存多个版本,并存储各个文件各个版本的元数据到 SCM 仓库中。
&&&& Xcode 支持两种流行的 SCM 系统:Git 和 Subversion。Xcode 包含了一个版本编辑器,无论使用哪种 SCM 系统都可以轻松对比保存在仓库中文件的不同版本。如果你发现代码中出现了漏洞,则可以将最新的版本和之前的某个正常运行的版本拿来比较,让你捉出产生问题的“臭虫”。
24.分发和发布应用
&&&& Xcode 能够让你轻松地将尚未正式发布到 App Store 的应用分享给测试者们。要分发应用,请在方案编辑器中创建一个应用归档。然后就可以使用 Xcode 的归档管理器来让测试者们分享你的应用。
&&&& 当你准备正式发布应用的时候,可以先使用归档管理器来评估一下你的应用能否达到 App Store 审核的标准。这项评估能够通过则可以保障正式审核过程尽可能地快速。然后就可以在 Xcode 正式向 App Store 提交你的应用了。
/posts/20284
25.在instruments中查看内存
The Living bytes, or Net bytes is how much memory your application is using at the time you select in the timeline. That will include leaked memory, since leaked memory is never deallocated.
#Living is how many allocations of a certain size/object type happened (and are still allocated). This is very useful when looking for leaks. For example, if you repetitively perform an action (like
coming in an out of a modal view controller), and you see that #Living of an object grows by the same amount each time, then you're probably leaking those objects. You can then confirm by drilling down and seeing the exact line of code that is allocating the
objects, and even see the time index each one was created.
Overall bytes includes memory that has been released. It's useful to track that number for performance optimization purposes, but not if you're just trying to see your current memory footprint or look
for leaks.
笔画输入面板打开后,内存使用增加了20M
苹果bug--获取键盘有内存泄露问题
memory leaks in open_handle_to_dylib_path and UIKeyboardInputManagerClassForInputMode
If you're developing an iPhone app that uses UITextField objects and you're rigorous enough to check for memory leaks using Instruments, chances are you'd discover some leaks in UIKit and CoreGraphics libraries, stemming from some allocations done in dyld::mkstringf,
called from dyld::loadPhase5.
According to some reports found on the web, it seems that this is a bug in the tools from Apple, and it appears only on the simulator, not when testing on the actual device. So you could safely ignore it. In any case you couldn't do anything about it, as the
traceback leading to the leak goes through code outside of your control, that is, unless you happen to work for Apple :).
26.安装后可以看到还有一个dashcode,它用于web开发
27. 如果工程中的代码失去了着色,到Users/gzty1/Library/Developer/Xcode/DerivedData删除对应目录,再重新编译即可。
28.资源文件夹管理
&&&& xcode里的新建的一个分组文件夹(黄色的),并不是真正在目录下就有一个这样的文件夹。然而有时候项目要用到的资源很多,有时候还会有重名的情况,这样如果放在分组文件夹里就不好了。
&&& 为了方便管理,在目录下新建一些真实存在的文件夹来存放这些资源,然后把这个文件夹加入到xcode的时候不要选copy items into destination group's folder,而Folders那一项要勾选create folder references for any added
folders,这样文件夹加入进去就是蓝色的,真实存在的。
&&& NSString *themePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@“theme”];//actual theme path
if(themePath)
self.backgroundIV.image = [UIImage imageWithContentsOfFile:[themePath stringByAppendingPathComponent:@&mask_1.png&]
29.工程中的.js文件可能在生成包中未找到,是因为它被当作了代码文件,未被当作资源文件。
&&&& 在build phases中处理...
&&&& 同时可以看出,在UIWebView中,可以使用&script src=&a.js”&来使用js文件。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:42892次
排名:千里之外
转载:22篇
(1)(3)(1)(3)(1)(3)(4)(4)(4)(1)(2)什么是Provisioning Profile(2)
什么是Provisioning Profile(1)一文中介绍了Provisioning Profile的文件格式。本文将深入到Provisioning Profile中的实际内容上。
一文中介绍了Provisioning Profile的文件格式。本文将深入到Provisioning Profile中的实际内容上。 &&
之前提到过Provisioning Profile实际上就是一个plist文件。下面我们从头开始看看这个plist文件中的键/值。这里有一个Provisioning Profile.plist示例文件,在阅读下面的内容时,可以参考:
1.在plist字典中的第一项是&AppIDName.& 这是你在 iOS Provisioning Portal中给App ID指定的名字。
2.下一项是&ApplicationIdentifierPrefix.& &这是在创建App ID时,由provisioning protal生成的10个字符。在 iOS Provisioning Portal中称为Bundle Seed ID(App ID前缀)。
3.下一项&CreationDate& 是一个日期时间戳,表示这个Provisioning Profile文件被创建的时间。
4.接下来的&DeveloperCertificates&之所以很有趣是有原因的。首先,它是一个数组(array),所以这里面可以包含多个证书。不过在这里我只看到一个证书。其次,它是base64编码的开发者证书。你可以将&data&标签中的文本拷贝并粘贴到另外一个文件中(粘贴在&&&BEGIN CERTIFICATE&&&和 &&&END CERTIFICATE&&&之间)。
看起来是这样的:
1.-----BEGIN CERTIFICATE-----
2.MIIFnTCCBIWgAwIBAgIIDlfxd9Mb0+gwDQYJKoZIhvcNAQEFBQAwgZYxCzAJ
3.BgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBs
4.ZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBw
5.bGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlv
6.biBBdXRob3JpdHkwHhcNMTIwODAzMjEzNDQxWhcNMTMwODAzMjEzNDQxWjCB
7.kDEaMBgGCgmSJomT8ixkAQEMClc1OFo3OVc4WDkxMjAwBgNVBAMMKWlQaG9u
8.ZSBEZXZlbG9wZXI6IEpheSBHcmF2ZXMgKEU2TDg3NlFGTTYpMRMwEQYDVQQL
9.DAo5SzlGOUxDVjc0MRwwGgYDVQQKDBNNYXNzaXZlbHkgT3ZlcnJhdGVkMQsw
10.CQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANdD
11.4hK9TjfXqoe1p0WpxvEULd575mhDpaKkvuUPG29bFEDIQrf2h0DTIGbvu6rR
12.z09+nxI0JkN56A0JO2OygfJGG5hcKm78CRtNFrDrOksOKD12PJkubnxhAi4y
13.sMI9M5+WCE+zV48VwMMI7dHLG7Pg5irMaqecnqNpRCoKxMeeziki+fD3H7jU
14.MiC6CA7iKCVHoDZKycF9Q3CeA5+sGWO28IqDYbOiCdeFhaiLYVVZJlmdKjqU
15.gHBsQWjj/vCeyikf+Ls52pPrD9+e0VgBnzrK2RcDPdNZON9gVAp1GeNNsmte
16.gmHGMlEzpLXF3/4RxOr2eLQ5iy5W/2SBUWpdSRUCAwEAAaOCAfEwggHtMB0G
17.A1UdDgQWBBSQHWHglRuqJq0gR4KzILT29p9ZIDAMBgNVHRMBAf8EAjAAMB8G
18.A1UdIwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MIIBDwYDVR0gBIIBBjCC
19.AQIwgf8GCSqGSIb3Y2QFATCB8TCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5j
20.ZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFj
21.Y2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJt
22.cyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBh
23.bmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjApBggrBgEF
24.BQcCARYdaHR0cDovL3d3dy5hcHBsZS5jb20vYXBwbGVjYS8wTQYDVR0fBEYw
25.RDBCoECgPoY8aHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vY2VydGlmaWNh
26.dGlvbmF1dGhvcml0eS93d2RyY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDAWBgNV
27.HSUBAf8EDDAKBggrBgEFBQcDAzATBgoqhkiG92NkBgECAQH/BAIFADANBgkq
28.hkiG9w0BAQUFAAOCAQEAApeWS6BrVv0jOFY7F0kCUR5h/RrXaMnUwjyFsF6r
29.HilDf70nvgIgIohtK2Uez5lkYavyDBzQGsN6gHbGLvg+4camDfT28quRPumk
30.qcIwZBCyB5A11HGlrer0Jz6iev6NAX5SSODWbAuzXJBs72EKuwF/+pGB5x1n
31.2YsKuQd8nQ+vD7kIHenP4n7goY8RSv8QQ8DhIkkgXqSbnZ6Xp4DKSTWgzb0T
32.a28g57YJlFjYioqkVFDi+5BANXxL0lHNeLAPXIY+TqQ/MWho/F6L2ONZyNT6
33.K6cadeQuTDgimoiTIjUGnAAR33SW7rIfHJNr2tNEtKu/aerKYCfWDLHf0QK9
35.-----END CERTIFICATE-----
然后在终端程序中使用命令 openssl x509 -text -in MassivelyOverrated.pem,就可以看到证书的所有信息,如下所示:
1.Certificate:
2. & &Data:
3. & & & &Version: 3 (0x2)
4. & & & &Serial Number:
5. & & & & & &0e:57:f1:77:d3:1b:d3:e8
6. & & & &Signature Algorithm: sha1WithRSAEncryption
7. & & & &Issuer: C=US, O=Apple Inc., OU=Apple Worldwide Developer Relations, CN=Apple Worldwide Developer Relations Certification Authority
8. & & & &Validity
9. & & & & & &Not Before: Aug &3 21:34:41 2012 GMT
10. & & & & & &Not After : Aug &3 21:34:41 2013 GMT
11. & & & &Subject: UID=W58Z79W8X9, CN=iPhone Developer: Jay Graves (E6L876QFM6), OU=9K9F9LCV74, O=Massively Overrated, C=US
12. & & & &Subject Public Key Info:
13. & & & & & &Public Key Algorithm: rsaEncryption
14. & & & & & &RSA Public Key: (2048 bit)
15. & & & & & & & &Modulus (2048 bit):
16. & & & & & & & & & &00:d7:43:e2:12:bd:4e:37:d7:aa:87:b5:a7:45:a9:
17. & & & & & & & & & &c6:f1:14:2d:de:7b:e6:68:43:a5:a2:a4:be:e5:0f:
18. & & & & & & & & & &1b:6f:5b:14:40:c8:42:b7:f6:87:40:d3:20:66:ef:
19. & & & & & & & & & &bb:aa:d1:cf:4f:7e:9f:12:34:26:43:79:e8:0d:09:
20. & & & & & & & & & &3b:63:b2:81:f2:46:1b:98:5c:2a:6e:fc:09:1b:4d:
21. & & & & & & & & & &16:b0:eb:3a:4b:0e:28:3d:76:3c:99:2e:6e:7c:61:
22. & & & & & & & & & &02:2e:32:b0:c2:3d:33:9f:96:08:4f:b3:57:8f:15:
23. & & & & & & & & & &c0:c3:08:ed:d1:cb:1b:b3:e0:e6:2a:cc:6a:a7:9c:
24. & & & & & & & & & &9e:a3:69:44:2a:0a:c4:c7:9e:ce:29:22:f9:f0:f7:
25. & & & & & & & & & &1f:b8:d4:32:20:ba:08:0e:e2:28:25:47:a0:36:4a:
26. & & & & & & & & & &c9:c1:7d:43:70:9e:03:9f:ac:19:63:b6:f0:8a:83:
27. & & & & & & & & & &61:b3:a2:09:d7:85:85:a8:8b:61:55:59:26:59:9d:
28. & & & & & & & & & &2a:3a:94:80:70:6c:41:68:e3:fe:f0:9e:ca:29:1f:
29. & & & & & & & & & &f8:bb:39:da:93:eb:0f:df:9e:d1:58:01:9f:3a:ca:
30. & & & & & & & & & &d9:17:03:3d:d3:59:38:df:60:54:0a:75:19:e3:4d:
31. & & & & & & & & & &b2:6b:5e:82:61:c6:32:51:33:a4:b5:c5:df:fe:11:
32. & & & & & & & & & &c4:ea:f6:78:b4:39:8b:2e:56:ff:64:81:51:6a:5d:
33. & & & & & & & & & &49:15
34. & & & & & & & &Exponent: 601)
35. & & & &X509v3 extensions:
36. & & & & & &X509v3 Subject Key Identifier:
37. & & & & & & & &90:1D:61:E0:95:1B:AA:26:AD:20:47:82:B3:20:B4:F6:F6:9F:59:20
38. & & & & & &X509v3 Basic Constraints: critical
39. & & & & & & & &CA:FALSE
40. & & & & & &X509v3 Authority Key Identifier:
41. & & & & & & & &keyid:88:27:17:09:A9:B6:18:60:8B:EC:EB:BA:F6:47:59:C5:52:54:A3:B7
43. & & & & & &X509v3 Certificate Policies:
44. & & & & & & & &Policy: 1.2.840..5.1
45. & & & & & & & & &User Notice:
46. & & & & & & & & & &Explicit Text: Reliance on this certificate by any party assumes acceptance of the then applicable standard terms and conditions of use, certificate policy and certification practice statements.
47. & & & & & & & & &CPS: /appleca/
49. & & & & & &X509v3 CRL Distribution Points:
50. & & & & & & & &URI:/certificationauthority/wwdrca.crl
52. & & & & & &X509v3 Key Usage: critical
53. & & & & & & & &Digital Signature
54. & & & & & &X509v3 Extended Key Usage: critical
55. & & & & & & & &Code Signing
56. & & & & & &1.2.840..6.1.2: critical
57. & & & & & & & &..
58. & &Signature Algorithm: sha1WithRSAEncryption
59. & & & &02:97:96:4b:a0:6b:56:fd:23:38:56:3b:17:49:02:51:1e:61:
60. & & & &fd:1a:d7:68:c9:d4:c2:3c:85:b0:5e:ab:1e:29:43:7f:bd:27:
61. & & & &be:02:20:22:88:6d:2b:65:1e:cf:99:64:61:ab:f2:0c:1c:d0:
62. & & & &1a:c3:7a:80:76:c6:2e:f8:3e:e1:c6:a6:0d:f4:f6:f2:ab:91:
63. & & & &3e:e9:a4:a9:c2:30:64:10:b2:07:90:35:d4:71:a5:ad:ea:f4:
64. & & & &27:3e:a2:7a:fe:8d:01:7e:52:48:e0:d6:6c:0b:b3:5c:90:6c:
65. & & & &ef:61:0a:bb:01:7f:fa:91:81:e7:1d:67:d9:8b:0a:b9:07:7c:
66. & & & &9d:0f:af:0f:b9:08:1d:e9:cf:e2:7e:e0:a1:8f:11:4a:ff:10:
67. & & & &43:c0:e1:22:49:20:5e:a4:9b:9d:9e:97:a7:80:ca:49:35:a0:
68. & & & &cd:bd:13:6b:6f:20:e7:b6:09:94:58:d8:8a:8a:a4:54:50:e2:
69. & & & &fb:90:40:35:7c:4b:d2:51:cd:78:b0:0f:5c:86:3e:4e:a4:3f:
70. & & & &31:68:68:fc:5e:8b:d8:e3:59:c8:d4:fa:2b:a7:1a:75:e4:2e:
71. & & & &4c:38:22:9a:88:93:22:35:06:9c:00:11:df:74:96:ee:b2:1f:
72. & & & &1c:93:6b:da:d3:44:b4:ab:bf:69:ea:ca:60:27:d6:0c:b1:df:
73. & & & &d1:02:bd:d6
74.-----BEGIN CERTIFICATE-----
75.MIIFnTCCBIWgAwIBAgIIDlfxd9Mb0+gwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNV
76.BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js
77.ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3
78.aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
79.HhcNMTIwODAzMjEzNDQxWhcNMTMwODAzMjEzNDQxWjCBkDEaMBgGCgmSJomT8ixk
80.AQEMClc1OFo3OVc4WDkxMjAwBgNVBAMMKWlQaG9uZSBEZXZlbG9wZXI6IEpheSBH
81.cmF2ZXMgKEU2TDg3NlFGTTYpMRMwEQYDVQQLDAo5SzlGOUxDVjc0MRwwGgYDVQQK
82.DBNNYXNzaXZlbHkgT3ZlcnJhdGVkMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcN
83.AQEBBQADggEPADCCAQoCggEBANdD4hK9TjfXqoe1p0WpxvEULd575mhDpaKkvuUP
84.G29bFEDIQrf2h0DTIGbvu6rRz09+nxI0JkN56A0JO2OygfJGG5hcKm78CRtNFrDr
85.OksOKD12PJkubnxhAi4ysMI9M5+WCE+zV48VwMMI7dHLG7Pg5irMaqecnqNpRCoK
86.xMeeziki+fD3H7jUMiC6CA7iKCVHoDZKycF9Q3CeA5+sGWO28IqDYbOiCdeFhaiL
87.YVVZJlmdKjqUgHBsQWjj/vCeyikf+Ls52pPrD9+e0VgBnzrK2RcDPdNZON9gVAp1
88.GeNNsmtegmHGMlEzpLXF3/4RxOr2eLQ5iy5W/2SBUWpdSRUCAwEAAaOCAfEwggHt
89.MB0GA1UdDgQWBBSQHWHglRuqJq0gR4KzILT29p9ZIDAMBgNVHRMBAf8EAjAAMB8G
90.A1UdIwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MIIBDwYDVR0gBIIBBjCCAQIw
91.gf8GCSqGSIb3Y2QFATCB8TCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0
92.aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ug
93.b2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0
94.aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlv
95.biBwcmFjdGljZSBzdGF0ZW1lbnRzLjApBggrBgEFBQcCARYdaHR0cDovL3d3dy5h
96.cHBsZS5jb20vYXBwbGVjYS8wTQYDVR0fBEYwRDBCoECgPoY8aHR0cDovL2RldmVs
97.b3Blci5hcHBsZS5jb20vY2VydGlmaWNhdGlvbmF1dGhvcml0eS93d2RyY2EuY3Js
98.MA4GA1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzATBgoqhkiG
99.92NkBgECAQH/BAIFADANBgkqhkiG9w0BAQUFAAOCAQEAApeWS6BrVv0jOFY7F0kC
100.UR5h/RrXaMnUwjyFsF6rHilDf70nvgIgIohtK2Uez5lkYavyDBzQGsN6gHbGLvg+
101.4camDfT28quRPumkqcIwZBCyB5A11HGlrer0Jz6iev6NAX5SSODWbAuzXJBs72EK
102.uwF/+pGB5x1n2YsKuQd8nQ+vD7kIHenP4n7goY8RSv8QQ8DhIkkgXqSbnZ6Xp4DK
103.STWgzb0Ta28g57YJlFjYioqkVFDi+5BANXxL0lHNeLAPXIY+TqQ/MWho/F6L2ONZ
104.yNT6K6cadeQuTDgimoiTIjUGnAAR33SW7rIfHJNr2tNEtKu/aerKYCfWDLHf0QK9
106.-----END CERTIFICATE-----
苹果和iOS使用这个证书来验证有开发者签过名的代码。
5.下一个是&Entitlements&这里面有一个字典,字典中有许多键值对,都是与iCloud、Game Center、推送通知和调试程序相关的一些内容。这里并不打算介绍这些相关的键值内容。如果你以前遇到这样的错误&The executable was signed with invalid entitlements&,可以将这个Entitlements字典拷贝并粘贴到程序的Entitlements.plist文件中,确保程序和Provisioning的entitlements都是精确匹配的。
6.&ExpirationDate&是这个Provisioning Profile文件的过期日期。
7.&Name&是在iOS Developer Portal给这个Provisioning Profile指定的名字。
8.&ProvisionedDevices&是一个数组,里面是一个设备UDID列表,这表示了利用这个Provisioning Profile签名的程序只能安装在这里列出来的UDID设备中(我是这样认为的)。一般我打开一个Provisioning Profile文件,都是看看某个设备的UDID是否已经包含在这个数组中了。
9.&TeamIdentifier&也包含一个数组,不过我只在这个数组中看到过一个值。这个值相当于一个标示符,用来唯一标识这个Provisioning Profile文件属于哪个团队。
10. &TeamName&表示这个Provisioning Profile文件属于团队的名称。有趣的是&TeamIdentifier&是数组,但是这里的 &TeamName&不是。
11. &TimeToLive&是这个Provisioning Profile文件的有效天数。苹果将这个值设置为365天。
12. &&UUID&这个值可以在Xcode工程文件中找到。每更新一次Provisioning Profile文件,这个UUID都会改变。如果你曾在Xcode中选择了某个特定的 Code Signing Identity,而不是 &iPhone Developer& 或&iPhone Distribution&,这个UUID可以在Xcode project.pbxproj文件中的&PROVISIONING_PROFILE&字段进行设置。在你将Xcode中的Provison Profile文件修改为另外一个,SCM会差分出如下结果:
1.- PROVISIONING_PROFILE = &D8F8CD60-CD85-4FEA-BF87-CD5D67FDC3EA&;
2.+ PROVISIONING_PROFILE = &9B44F36C-328F-45C0-BC62-4A272CB9DAD7&;
13.&Version&是这个文件数据格式的版本。苹果将其设置为1。
上面提到过,当我检查这个Provision Profile文件时,90%次都是检查 &ProvisionedDevices&数组。另外10%次是检查 &Entitlements& 和&UUID&。如果程序中使用了APNS(Apple&s Push Notification service),那么&Entitlements&这个字段将保存着apns的相关信息。这个值可以包含 &production& 或&development&的信息,也可以没有设置相关信息,不过这样的话在程序中就不能正常使用推送通知。一般在将程序提交到iTunes Connect时,我都会检查一下这个字段。
一般在Xcode中,我都是使用&UUID&来指定一个特定的Provisioning Profile文件,这样可以不依赖于Xcode的自动选择(经常会出问题)。Jenkins利用.xcconfig文件来覆盖&UUID&,可以让自动build更加容易。相信不久,你能看到相关文章。
CocoaChina是全球最大的苹果开发中文社区,官方微信每日定时推送各种精彩的研发教程资源和工具,介绍app推广营销经验,最新企业招聘和外包信息,以及Cocos2d引擎、Cocos Studio开发工具包的最新动态及培训信息。关注微信可以第一时间了解最新产品和服务动态,微信在手,天下我有!
请搜索微信号“CocoaChina”关注我们!
关注微信 每日推荐
扫一扫 浏览移动版

我要回帖

更多关于 project.pbxproj 冲突 的文章

 

随机推荐