Macos 如何更改签名包中的Info.plist?

Macos 如何更改签名包中的Info.plist?,macos,code-signing,info-plist,Macos,Code Signing,Info Plist,团队需要更改Info.plist以测试某些功能。 但有时应用程序(非常)安静地崩溃 System Integrity Protection: enabled Crashed Thread: 0 Exception Type: EXC_CRASH (Code Signature Invalid) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: E

团队需要更改Info.plist以测试某些功能。 但有时应用程序(非常)安静地崩溃

System Integrity Protection: enabled

Crashed Thread:        0

Exception Type:        EXC_CRASH (Code Signature Invalid)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace CODESIGNING, Code 0x1
现在,如果我们按照建议测试签名:

codesign--verify-vvv-R='anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.1]存在且(certificate leaf[field.1.2.840.113635.100.6.1.2]存在或certificate leaf[field.1.2.840.113635.100.6.1.4]存在)


spctl--verbose--assessment

< path to app >: invalid Info.plist (plist or signature have been modified)
:无效的Info.plist(plist或签名已被修改)
好的,但我真的想修改它:

  • 更改SIP不是一个选项
  • 仅重新签名Info.plist是可以接受的,但如何重新签名
所以有两个问题:

  • 我们如何更改Info.plist
  • (可选)系统何时对其进行验证?重新启动后可能吗

  • 在兄弟会中,这个问题有一个答案:。

    重新签署应用程序可以非常快:

    codesign --force --verbose=4 --sign "Developer ID Application: <your name> (<team ID>)" <application>
    
    codesign--force--verbose=4--sign“开发者ID应用程序:()”
    

    诀窍是避免使用
    --deep
    选项。在我的High Sierra上,大约需要20秒。

    您不能随意更改密封包中的文件。。。它们在归档过程中都会被散列和烧毛—您可以通过设置测试环境或测试单元等来测试它。。。每次归档项目时,所有文件(包括
    info.plist
    )都将在新的捆绑包中再次注销。“设置测试环境”-如何?最好测试用户的确切环境,而不是其他东西。是的,我们可以在进行设置之前配置Info.plist,但不幸的是,目前情况并非如此。必须有一个更简单的解决方案(除了在某处添加一个
    debug.settings.plist
    )。这是内部(公司内部)测试吗?是否必须使用有效的开发人员ID或您使用的开发或自签名ID进行签名?对Info.plist的更改范围有多大(例如,是否可能有一个预构建的Info.plist文件列表,以及一个签名随附交换的列表)?它用于内部测试,而不是外部世界。我们有一个有效的开发者ID。。。但苹果接受的任何东西(内部测试)都可以。更改相当广泛(字符串、URL名称)。@Liviu,例如,您将使用test
    info.plist
    文件创建一个单独的存档,如果该测试通过并且一切正常,那么您可以切换回live
    info.plist
    文件并将项目提交给最终用户。。。您可以这样做,例如为同一个项目设置不同的目标,并使用这些目标为当前构建正确的归档。