博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Xcode真机调试错误
阅读量:6138 次
发布时间:2019-06-21

本文共 1704 字,大约阅读时间需要 5 分钟。

  hot3.png

      
       最近Xcode和IOS的SDK版本升级都比较频繁,为了最快学习新版本的IOS SDK的新特性和掌握Xcode的新功能,所以本人的开发环境也一直在紧跟最新版本。最新使用的是Xcode4.6版本,IOS SDK6.1。今天在Demo工程的真机调试过程中遇到以下错误:
Could not change executable permissions on the application.
    弹出的错误对话框如下
       因项目的时间和任务分工,自己没有很熟练的掌握Xcode的真机联调的流程和细节,一直在使用现成的开发环境,平时没有遇到过什么关于Xcode调试的问题,今天突然遇到了这个莫名其妙的问题,因提示信息有限,所以上网查找了一下。原因大致是,两个Bundle identifier 相同的App在真机上是无法运行的,解决的办法是将真机上已存在的Bundle identifier重名的App工程删掉,然后重新连接真机运行。
于是按照解决办法,将真机上使用形同Bundle identifier名称的App删除,再次运行新工程,果然一切顺利,真机联调成功。

在Stackoverfolow上有描述了该问题的由来和解决方案。

Bundle identifier的生成

    以名为MyApp的工程为例来简单说明下Bundle identifier的生成过程,使用Xcode新建MyApp工程,如

    我们可以看到Bundle Identifier 是一个由Company Identifier+Product Name组成的字符串;点击Next继续直至新建工程完毕,在新工程的Xcode界面中,我们可以看到Bundle Identifier的位置
     打开MyApp工程的项目列表,找到其Info.plist文件。Bundle Identifier的位置
     我们知道Info.plist是一种XML格式的文本文件,现在我们以源代码方式打开该文件
     我们可以看到Bundle Identifier的真是的XML格式如下

CFBundleIdentifier
com.test.app.${PRODUCT_NAME:rfc1034identifier}
     此处验证了我们之前提到的Bundle Identifier为string类型的说法。其实Bundle Identifier在IOS SDK中的实际配置文件的表示为
CFBundleIdentifier ,与实际的Bundle Identifier名称是一对key-value组合
CFBundleIdentifier
作用
     

     根据IOS SDK手册说明,

     CFBundleIdentifier在IOS或OS X中标识了唯一的集合(bundle).系统中每个不同的app或程序包都必须有一个唯一的bundle ID。该ID是一个字符串类型,系统通过这个唯一的字符串来标定你的app。例如,系统中的偏好设置可以使用这个字符串标定你得app来指定用户设置的偏好值。加载服务程序(Launch Services)使用这个ID来确定它标定的app是否支持打开某些特殊类型的文件。在IOS中,bundle identifier还用来验证app签名的合法性。
      bundle ID字符串必须是一个统一类型标识符(uniform type identifier,简称UTI),并且只能包含"A-Z","a-z","0-9","-","."这些字符。bundle ID字符串应该以反响DNS格式加以组织,如果你得公司域名时Ajax.com,并且你创建的APP的名称为Hello,那么你可以指定字符串"com.Ajax,Hello"作为你的APP的bundle identifier 。

     至此,我们亦可以获知Xcode中所创建创建app默认bundle identifier格式的由来。以及Bundle Identifier的用处了。

注:描述于IOS SDK6.1下

转载于:https://my.oschina.net/hmj/blog/111246

你可能感兴趣的文章
二分K-均值算法
查看>>
关于spring配置文件properties的问题
查看>>
linux-gfs2删除节点
查看>>
简单易懂的 Vue.js 基础知识 !
查看>>
10.7的作业
查看>>
Dom+2016/4/20
查看>>
android实现前置后置摄像头相互切换
查看>>
父子结构数据(id,pid)递归查询所有子id合集和父id合集
查看>>
mysql_存储过程和函数
查看>>
最优二叉树搜索
查看>>
libreoffice实现WORD文档转PDF文档
查看>>
R语言-RStudio快捷键总结
查看>>
Spring Boot 操作 Memcache
查看>>
C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe...
查看>>
分成互质组
查看>>
NSURLSession 的学习资料
查看>>
Docker实践(1)—入门
查看>>
【软件工程实践】结对项目-四则运算 “软件”之升级版
查看>>
4、顺序查找
查看>>
Spring笔记——配置Hibernate框架事务
查看>>