我已经通过命令行成功地为我正在为其开发插件的 Mac 应用程序公证了插件。该插件旨在在 Mac 应用商店之外分发。
xcrun altool --notarize-app --primary-bundle-id "com.demo.bundle.id" --username "email@abc.com" --password "xxx-x-xxxx-xx" --file Plugin.zip
Run Code Online (Sandbox Code Playgroud)
收到一封电子邮件,表明已成功公证,并且该电子邮件包含有关如何导出以进行分发的说明。然而,这是 XCode UI 的说明,但我通过命令行进行了公证,因此这些说明不适用于我。是否有命令行来下载经过公证的文件(Plugin.zip),或者如何Plugin.zip从 Apple 获取该文件并将其分发到我的网站上?
更新:
事实证明,您可以对 .zip 文件进行公证,但无法装订它。因此,我决定创建一个 .pkg 来分发我的插件,而不是通过 zip 文件分发。
这是我成功公证和装订我的插件所遵循的步骤,假设我的插件名称是FileConvertor.PluginExtension
codesign --sign "Developer ID Application: Developer Name" --verbose=4 --deep --force --strict FileConvertor.PluginExtension.PluginExtensionproductsign --sign "Developer ID Installer: Developer Name" ./FileConvertor.pkg ./FileConvertorSigned.pkgxcrun altool --notarize-app --primary-bundle-id "com.demo.plugin" --username xyz@abc.com" --password "xxxx-xxxx-xxxx-xxxx" --file FileConvertorSigned.pkgxcrun stapler staple …我正在寻找对 macOS Catalina (10.15) 的 DotNet Core 控制台应用程序进行签名和公证的详细过程。我的应用程序构建并运行得非常愉快,但签名过程对我不起作用。也就是说,我不知道我是否在项目定义或构建过程中弄乱了某些内容,或者是否修改了协同设计的参数。
在 Visual Studio for Mac 中查看 DotNet Core (3.1) 控制台应用程序的项目选项时,没有任何专门针对 Mac 签名的设置,因为有明确的 macOS DotNet/Xamarin 应用程序。
无论进行多少谷歌搜索,都找不到一个程序来逐步介绍如何设置项目并对其进行签名和公证。一般来说,我能得到的最好结果是在协同设计期间出现“主要可执行文件未能严格验证”消息。我最新的、最伟大的(可能是偏离目标的)协同设计命令如下:
codesign -s "Developer ID Application: James Ramsey (XXXXXXXXXX)" --timestamp --options runtime -f --entitlements FMComparison_DotNet/entitlements.plist --deep <pathToMyPublished app>/FMComparison_DotNet
Run Code Online (Sandbox Code Playgroud)
有谁知道实现这一目标的最佳程序是什么?
谢谢。
我正在开发一个 C/C++ 库,它将作为苹果架构的框架进行分发,但我无法让 CMake 签署我的二进制文件以进行公证/分发。
使用 CMake 协同设计框架的最佳实践是什么?
由于该库将支持多个平台,因此我想使用现有的 conan/cmake 构建系统,而不是专门为苹果维护单独的 Xcode 项目文件。理想情况下,我希望将代码签名作为构建的一部分,这样 conan 就会自动打包签名的框架。
根据CMakeFRAMEWORK文档和我在该主题上挖掘的其他问题,似乎只要设置了XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY和,CMake 就应该签署我的输出包XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED,但这不是我所拥有的经验。我的 CMake 输出没有提及代码签名,并且在构建/打包后,快速代码签名验证显示代码签名没有发生:
codesign -v build/package/HelloWorld.framework
build/package/HelloWorld.framework: code object is not signed at all
In architecture: x86_64
Run Code Online (Sandbox Code Playgroud)
我的框架的目标属性设置如下:
set_target_properties(${TARGET_NAME} PROPERTIES
OUTPUT_NAME ${TARGET_NAME}
PUBLIC_HEADER "${PUB_INCLUDES}")
if((CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") AND BUILD_SHARED_LIBS)
set_target_properties(${TARGET_NAME} PROPERTIES
FRAMEWORK TRUE
FRAMEWORK_VERSION C
MACOSX_FRAMEWORK_IDENTIFIER "com.example.project"
XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED ${APPLE_SIGN_BINARIES}
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${APPLE_CERT_IDENTIFIER}"
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "XXXXX")
endif()
Run Code Online (Sandbox Code Playgroud)
我通常使用 APPLE_CERT_IDENTIFIER =“开发人员 ID”,但我也尝试过各种其他开发人员和分发证书,包括尝试它们的全名(即“开发人员 ID 应用程序:Devname(十六进制代码)”)。将 CODE_SIGNING_REQUIRED 设置为 …
尝试运行链接到动态库的可执行文件,出现以下错误:
Library not loaded:
[...]
Reason: tried:
<lib> not valid for use in process: mapped file has no
cdhash, completely unsigned? Code has to be at least ad-hoc signed.
Run Code Online (Sandbox Code Playgroud)
如何临时签署我的库?
我有一个奇怪的问题.Codeign拒绝签署我拥有的这个大项目,项目A,但确实签署了另一个,项目B.但是,当我签署项目B时,它也可以突然签署项目A. 我百分百肯定我没有改变任何其他东西.我采取的步骤是:
尝试构建,签署A - 签署失败
尝试构建,签署B - 成功
尝试构建,签署A - 成功
成绩单:
CodeSign build/Debug-iphoneos/CPPlayer.app cd /Users/nick/CPPlayer setenv CODESIGN_ALLOCATE /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /usr/bin/codesign -f -s "iPhone Developer: Nick Overdijk (PM7C8QKTYS)" --resource-rules=/Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app/ResourceRules.plist --entitlements /Users/nick/CPPlayer/build/CPPlayer.build/Debug-iphoneos/CPPlayer.build/CPPlayer.xcent /Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app /Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app: object file format invalid or unsuitable Command /usr/bin/codesign failed with exit code 1
有什么我可以错过的吗?任何想法如何发生这种情况?我现在一切都工作了,这似乎解决了我的问题,但我想了解发生了什么.
有时它也是这样的:
构建/签署A - 成功
构建/签署A - 失败
构建/签署B - 成功(B似乎总是成功)
构建/签署A - 成功
构建/签署A - 失败
因此,在每次成功构建A之后,我必须构建并签署B以便能够再次签署项目A. 我可以连续多次重建项目B,它总是成功的.
我不确定它是否重要,但是当我尝试在模拟器中运行它(iPhone OS 3.1.2的调试模式)时,它无法相互安装.所以:
构建/运行 - 失败
构建/运行 - 工作
构建/运行 …
我编写了一个脚本,用于xcodebuild生成iPhone应用程序的AdHoc版本.
我想编辑此脚本以输出用于签署构建的Provisioning Profile的名称.
这将允许我在自动生成的zip中包含Provisioning Profile.这样,我就可以自动将存档发送给AdHoc测试人员,并确保他们拥有正确的配置文件来安装应用程序.
有没有办法提取用于签署应用程序的供应配置文件名称或文件:
Unforgiven 建议使用该命令security获取用于签署应用程序的证书的名称.获得此信息后,有没有办法找到供应配置文件的名称?
这是我尝试过的:
遗憾的是,构建期间xcodebuild的输出不包含此信息.在CodeSign步骤中,有一行:
/usr/bin/codesign -f -s "iPhone Distribution: My name" ...
但我无法将其与证书相匹配.
我研究了使用codesign和命令
/usr/bin/codesign -d -vvv --entitlements - -r - /Users/lv/Desktop/TicTacBoo.app/TicTacBoo看起来很有希望,但它没有给我我需要的信息.
我刚刚更新到mac os 10.9和xcode 5.0.1,但是codesign返回了错误消息"CSSM_SignData return:800108E6".没有带有"退出代码1"的消息和其他任何消息.谁有解决方案?谢谢.
我有一个正在建设的项目.看似随机,执行一次运行会导致代码错误,我已经无法解决2天了.
错误如下:
包格式无法识别,无效或不适用在子组件中:/Users/user/Library/Developer/Xcode/DerivedData /.../Base.lproj
我不确定为什么会出现这个错误.它可能发生在我在Xcode中选择了一个"团队"之后 - 但我不记得了(我不知道为什么会导致这个问题).我尝试清理我的钥匙串,在我的开发者帐户中创建包标识符,从其他帖子创建一些终端命令,但无济于事.
对我来说奇怪的是它似乎表明它与Base.lproj有关 - 它只包含LaunchScreen笔尖和我的Main.storyboard.故事板中是否会出现导致编码问题的问题?别的什么?SOS.
将Worklight应用程序上传到iTunes时出错.
应用程序验证失败,并显示以下错误:
签名无效.代码对象根本没有签名.路径[MyApp.app/buildtime.sh]中的二进制文件包含无效签名.确保您已使用分发证书(而非临时证书或开发证书)对您的应用程序进行了签名.验证Xcode中的代码签名设置在目标级别是否正确(覆盖项目级别的任何值).此外,请确保您上传的软件包是使用Xcode中的Release目标而不是Simulator目标构建的.如果您确定您的代码签名设置正确,请在Xcode中选择"全部清除",删除Finder中的"构建"目录,然后重建您的发布目标.有关详细信息,请参阅 https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html
我的问题是我在2周前提交了相同的应用程序,它运行正常.今天的版本只更改了www /文件夹内容,并且因此错误而失败.
我搜索了这个问题,发现Xbox 4.6.3中的Dropbox API的Codesign 失败:"代码对象根本没有签名",但我尝试添加--deep选项,这对我没用.
这可以与buildtime.sh脚本有关吗?在我阅读它时,它似乎只是更新worklight.plist文件中的构建时间值:
#!/bin/bash
# Licensed Materials - Property of IBM
# 5725-I43 (C) Copyright IBM Corp. 2006, 2013. All Rights Reserved.
# US Government Users Restricted Rights - Use, duplication or
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# Update buildtime in project
echo -n ${TARGET_BUILD_DIR}/${PRODUCT_NAME}.app/worklight.plist | xargs -0
/usr/libexec/PlistBuddy -c "Set :buildtime `date +\"%s\"`"
Run Code Online (Sandbox Code Playgroud)
此外,当谷歌搜索问题时,我发现了一些类似的问题:https: //github.com/AppGyver/steroids/issues/918他们似乎使用sh脚本的混合应用程序,这让我相信这个问题与构建时间有关.sh脚本.
我删除了构建时脚本,并在我的Xcode项目中删除了运行脚本阶段,这次它没有给出错误.
这样做是否安全? …
我使用良好的证书对我的安装软件进行了协同设计。我刚刚注意到当前版本的 Windows 10 显示以下警告消息。这在以前版本的 Windows 10 中没有出现。如何防止弹出此警告?
Windows 保护您的 PC
Windows Defender SmartScreen 阻止无法识别的应用程序启动。运行此应用程序可能会使您的电脑面临风险。
codesign ×10
xcode ×5
ios ×3
macos ×3
code-signing ×2
iphone ×2
.net-core ×1
c++ ×1
cmake ×1
command-line ×1
notarize ×1
provisioning ×1
xcode5 ×1