【发布时间】:2013-11-25 10:45:57
【问题描述】:
我在 Mavericks 的 JavaFX 应用程序上创建并使用 Xcode 5.0.2 签名 -
codesign --deep -s "my name" MayApp.app
codesign -v MayApp.app && echo MayApp.app is Signed Successfully!
没有签名 MYAPP 启动正常!!
如果不使用 --deep,我无法在 Mavericks 签署应用程序。
-- 更多尝试--
现在在 Mavericks,如果包中的任何嵌套包未签名,我们将无法再对包进行签名。我确实按照写在 - http://furbo.org/2013/10/17/code-signing-and-mavericks/
的说明签署了我的应用程序的框架codesign --verbose --force --sign "my name" MyApp.app/Contents/PlugIns/jdk1.7.0_21.jdk
单独或在签署框架后签署框架命令,不会对签署应用程序进行任何更改。
-----主要问题------
在运行上述命令时(无论是仅签署应用程序还是与框架签署一起),MyApp.app 已成功签署,但 应用程序未在 Mac 上启动,因为签署命令未保留文件 libjli 的 ALIAS 属性.dylib 存在于 - MyApp.app/Contents/PlugIns/jdk1.7.0_21.jdk/Contents/MacOS。签名应用代码将 libjli.dylib 别名转换为动态库。
然后我想到了通过以下命令复制 libjli.dylib -
<target name="Copylib" depends="SigningApp">
<delete file="MyApp.app/Contents/PlugIns/jdk1.7.0_21.jdk/Contents/MacOS/libjli.dylib"/>
<exec executable="cp">
<arg line="-R /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/MacOS/ MyApp.app/Contents/PlugIns/jdk1.7.0_21.jdk/Contents/MacOS"/>
</exec>
</target>
这个保留别名,但现在在验证签名应用时说 -
admins-iMac:osx admin$ codesign -v -v MyApp.app
MyApp.app: code object is not signed at all
In subcomponent: MyApp.app/Contents/PlugIns/jdk1.7.0_21.jdk
In architecture: x86_64
如果我在 MyApp.app 中手动复制该别名,也会发生同样的情况。
请建议任何方式来签署应用程序并保留我的框架中存在的所有文件的属性 - Contents/PlugIns/jdk1.7.0_21.jdk?
谢谢
【问题讨论】:
标签: java xcode code-signing osx-mavericks codesign