Ios 赢得';别走开!(有文件保护的权利)

Ios 赢得';别走开!(有文件保护的权利),ios,xcode,code-signing,code-signing-entitlements,Ios,Xcode,Code Signing,Code Signing Entitlements,Hey刚成为一名新的iOS开发者,到目前为止一切都很好,但是我在Xcode中为我的.xcodeproj文件发出了一个警告,上面写着“验证项目设置-更新到推荐的设置”。当我点击它时,我会看到一个窗口,上面写着“目标”(我的应用程序名称)“-升级DataProtectionClass权限。将应用程序的默认文件保护级别升级为建议值:NSFileProtectionComplete。”因此,我继续并单击“执行更改”,这样它就可以执行此操作,警告消失,但当我尝试在设备上调试时,会出现错误“应用程序的代码签

Hey刚成为一名新的iOS开发者,到目前为止一切都很好,但是我在Xcode中为我的.xcodeproj文件发出了一个警告,上面写着“验证项目设置-更新到推荐的设置”。当我点击它时,我会看到一个窗口,上面写着“目标”(我的应用程序名称)“-升级DataProtectionClass权限。将应用程序的默认文件保护级别升级为建议值:NSFileProtectionComplete。”因此,我继续并单击“执行更改”,这样它就可以执行此操作,警告消失,但当我尝试在设备上调试时,会出现错误“应用程序的代码签名权限文件中指定的权限与设置配置文件中指定的权限不匹配。(0xE8008016)

如果我删除了将默认文件保护升级为NSFileProtectionComplete的授权MNets文件,那么Xcode中的wanring将消失,并且它能够在设备上编译和运行,但是我在Xcode中遇到了一个不想移动的警告问题

这也发生在一个全新的项目中。我正在OSX10.8MountainLion DP3(12A178q)上运行Xcode版本4.4(4F134)

在终端,我继续查看我的.mobileprovision文件的权限。(不是通配符,而是具有特定应用程序id的)

我得到了授权键的这个值

 <key>Entitlements</key>
 <dict>
      <key>application-identifier</key>
      <string>GLAMURY37G.com.ionescuac.GPS-Status-</string>
      <key>get-task-allow</key>
      <true/>
      <key>keychain-access-groups</key>
      <array>
           <string>GLAMURY37G.*</string>
      </array>
 </dict>
把这个拿回来

<dict>
     <key>application-identifier</key>
     <string>GLAMURY37G.com.ionescuac.GPS-Status-</string>
     <key>get-task-allow</key>
     <true/>
     <key>keychain-access-groups</key>
     <array>
          <string>GLAMURY37G.com.ionescuac.GPS-Status-</string>
     </array>
</dict>

应用程序标识符
GLAMURY37G.com.ionescuac.GPS-Status-
获取任务允许
密钥链访问组
GLAMURY37G.com.ionescuac.GPS-Status-
并且它匹配,因此xcode可以在设备上运行应用程序。但是,xcode告诉我升级到FileProtectionComplete,所以我这样做了,然后在构建我的应用程序并再次检查应用程序的权限之后,这就是我得到的

<dict>
     <key>DataProtectionClass</key>
     <string>NSFileProtectionComplete</string>
     <key>application-identifier</key>
     <string>GLAMURY37G.com.ionescuac.GPS-Status-</string>
     <key>get-task-allow</key>
     <true/>
</dict>

DataProtectionClass
NSFileProtectionComplete
应用程序标识符
GLAMURY37G.com.ionescuac.GPS-Status-
获取任务允许
这使得它不再匹配,所以我在我的第一篇文章中得到了错误。如果我用FileProtectionComplete权限对其进行签名,那么xcode不会给出任何警告,但它不能再运行了。如果我在没有权限的情况下构建它,那么它将运行,但xcode会不断提醒我,文件保护权限应该升级到“推荐设置”


有点陷入了第22条军规的境地。在我加入开发人员计划之前,我在模拟器上玩了很多,从来没有在xcode上遇到过任何权限问题,说需要将它们添加到构建中。

有趣的是,DataProtectionClass权限在最新的iOS版本中实际上不起作用。这是开发者论坛上的一些苹果人说的。我想我看到了那些帖子,我不知道为什么xcode推荐我把这些权利放进去。它完全被窃听了(至少根据我的看法)。这个黄色的三角形不断出现真是令人恼火。我知道某些权利可以被排除或添加,而不会与资源调配配置文件中定义的权利产生冲突。显然,DataProtectionClass并非如此。我认为你最好的办法就是忽略这个警告。您还可以通过更改相应的生成设置,尝试仅在发布模式下使用.authorights文件。
<dict>
     <key>application-identifier</key>
     <string>GLAMURY37G.com.ionescuac.GPS-Status-</string>
     <key>get-task-allow</key>
     <true/>
     <key>keychain-access-groups</key>
     <array>
          <string>GLAMURY37G.com.ionescuac.GPS-Status-</string>
     </array>
</dict>
<dict>
     <key>DataProtectionClass</key>
     <string>NSFileProtectionComplete</string>
     <key>application-identifier</key>
     <string>GLAMURY37G.com.ionescuac.GPS-Status-</string>
     <key>get-task-allow</key>
     <true/>
</dict>