gpt4 book ai didi

libAppleScriptEngine.dylib 的 Java 公证失败,二进制文件使用早于 10.9 SDK 的 SDK

转载 作者:行者123 更新时间:2023-12-05 07:10:30 25 4
gpt4 key购买 nike

2019 年底,我的 Java 8 应用程序进行了基本公证,2020 年 2 月,Apple 收紧了有关公证的规则,这使我的应用程序无法进行公证。因为无论如何我都需要迁移到 Java 11,所以我切换到了 Java 11,因为我知道这可以被公证并进行必要的代码更改,但仍然存在一些问题。

具体来说,我的应用程序中有一个选项可以使用 Applescript 与 Apple Music 应用程序(以前称为 iTunes)进行通信。在 Java 11 之前,这始终可以通过使用 libAppleScriptEngine.dylib 来实现,它随 MacoS JDK/JRE 和 applescript jar(最初由 Apple 提供并提供接口(interface),因此可以通过 javax.scripting 查找)。

在 Java 11 中,libAppleScriptEngine.dylib 已被删除,如 Oracle JDK 11 Migration Guide 中所述, 没有提供替代品。

Removed AppleScript Engine

The AppleScript engine, a platform-specific javax.script implementation, has been removed without any replacement in the JDK.

The AppleScript engine has been mostly unusable in recent releases. The functionality worked only in JDK 7 or JDK 8 on systems that already had Apple's version of the AppleScriptEngine.jar file on the system.

但是,如果我在我的包的 MacOS 文件夹中使用 libAppleScriptEngine.dylib 部署我的应用程序,applescript 将继续在 Java 11 上正常运行。

但不幸的是(尽管应用程序的签名验证没有错误)公证失败并出现以下错误

{
"logFormatVersion": 1,
"jobId": "224840dd-15ec-45a2-8cd0-b046dab3bccb",
"status": "Invalid",
"statusSummary": "Archive contains critical validation errors",
"statusCode": 4000,
"archiveFilename": "songkong-osx.dmg",
"uploadDate": "2020-04-14T11:50:17Z",
"sha256": "b4d3a808a11a342b748901e5b6df5d628fb76a936ebe67ed5b2558cee5f268f7",
"ticketContents": null,
"issues": [
{
"severity": "error",
"code": null,
"path": "songkong-osx.dmg/SongKong.app/Contents/MacOS/libAppleScriptEngine.dylib",
"message": "The binary uses an SDK older than the 10.9 SDK.",
"docUrl": null,
"architecture": "x86_64"
}
]
}

那么有办法解决这个问题吗?

这是构建脚本的结尾

export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate"
/usr/bin/codesign --timestamp --options runtime \
--entitlements /Users/paul/code/jthink/songkong/songkong.entitlements \
--sign "Developer ID Application: P Taylor" \
--force --deep --verbose /Applications/SongKong.app
/usr/bin/codesign -vvv --deep --strict /Applications/SongKong.app
spctl -a -t exec -vv /Applications/SongKong.app
cd /Users/paul/code/jthink/SongKong
/usr/local/bin/dmgcanvas /Users/paul/code/jthink/SongKong \
/dmgCanvas_songkong.dmgCanvas /Users/paul/songkong-osx.dmg \
-v SongKong -identity "Developer ID Application: P Taylor"\
-notarizationAppleID paultaylor@jthink.net \
-notarizationPassword password -notarizationPrimaryBundleID songkong

我尝试用最新的 Oracle Java 8 build Oracle 8u241 替换 libAppleScriptEngine.dylib 的版本,但没有任何区别。我很惊讶它是针对旧 SDK 构建的,因为我听说现在可以对 Java 8 构建进行公证。

我可以选择不签署 libAppleScriptEngine.dylib 文件以使公证成功吗?

最佳答案

因为 Oracle Java 8 链接到 OSX 10.8.3,它不会通过 Apple notary。

otool -l Library/Java/JavaVirtualMachines/liberica-jdk-8.jdk/Contents/Home/jre/lib/libAppleScriptEngine.dylib 报告:

      cmd LC_VERSION_MIN_MACOSX
cmdsize 16
version 10.9
sdk 10.14

没有允许对 Oracle Java 8 二进制文件进行公证的解决方法。

公证仅适用于链接到 macOS 10.9 或更高版本的二进制文件。

  • Java 8 本身是基于 10.7.5 SDK 构建的。您使用的是 Java8 的最新更新并不会改变向后兼容性。 Java 8 最初是在 10.9 Mavericks 期间发布的,并且与当时仍受支持的 10.7.5 Lion 兼容。 Java 8 的任何更新都旨在支持 10.7.5 Lion 并与其相关联。

  • 在 10.12 Sierra 期间发布的 Java 9 向后兼容 10.10。

任何未签名的二进制可执行文件也不会进行公证。

关于libAppleScriptEngine.dylib 的 Java 公证失败,二进制文件使用早于 10.9 SDK 的 SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61208189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com