首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在签署应用时保留别名属性?

如何在签署应用时保留别名属性?
EN

Stack Overflow用户
提问于 2013-11-25 10:45:57
回答 1查看 749关注 0票数 3

我在小牛上创建了JavaFX应用程序,并使用Xcode 5.0.2使用-

代码语言:javascript
复制
codesign --deep -s "my name" MayApp.app
codesign -v MayApp.app && echo MayApp.app is Signed Successfully!

没有签署MYAPP启动罚款!!

如果不使用--深度,我就无法在小牛队签署应用程序。

--更多的尝试--

现在在小牛队,如果包中的嵌套包没有签名,我们就不能再对包签名。我按照- http://furbo.org/2013/10/17/code-signing-and-mavericks/所写的指令签署了我的应用程序的框架。

代码语言:javascript
复制
codesign --verbose --force --sign "my name" MyApp.app/Contents/PlugIns/jdk1.7.0_21.jdk

单独或在签署框架后签署框架命令,不会在签名应用程序中做任何更改。

-主要问题-

在运行上述命令时(无论是只签署应用程序还是与框架签名一起运行),MyApp.app都会成功地签名,但是该应用程序没有在Mac上启动,因为签名命令没有为存在于- MyApp.app/Contents/PlugIns/jdk1.7.0_21.jdk/Contents/MacOS__的文件libjli.dylib保留别名属性。将libjli.dylib别名转换为动态库的应用程序代码签名。

然后我想通过以下命令复制libjli.dylib -

代码语言:javascript
复制
<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>

这个保存了别名但现在在验证符号应用程序上说-

代码语言:javascript
复制
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?框架中存在的所有文件的属性。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-27 10:52:16

我的问题可以通过从jdk7u21升级到最新的jdk7u45来解决,因为苹果已经在OS上禁用了甲骨文的JavaVersion7u25及以下版本。更新到最新版本将允许在Mac上运行Java。

另外,我还得做这些修改才能让应用程序生效-

  1. 在MyApp.app/Contents/Info.plist中,CFBundleExecutable为MyApp,CFBundleIconFile为MyApp.icns。
  2. 需要将/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/MacOS/libjli.dylib复制到MyApp.app/Contents/PlugIns/jdk1.7.0_45.jdk/Contents/MacOS以获得libjli.dylib别名。
  3. 我们还需要将/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Info.plist从已安装的系统jdk复制到MyApp.app/Contents/PlugIns/jdk1.7.0_45.jdk/Contents/

注意:步骤2和3是必需的,因为在部署JavaFx应用程序时,部署过程只在默认情况下将/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home复制到MyApp.app/Content/PlugIns中,它跳过了MacOS/ folder和Info.plist。

而不进行上述更改,以便将应用程序与-

代码语言:javascript
复制
codesign --deep -s "my name" MayApp.app

我在签名时遇到了错误-- MyApp.app:包格式不被识别、无效或不合适--我们正面临这个问题,因此我们需要确定是什么使应用程序包格式不被识别、无效或不合适。

谢谢

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20190177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档