我有一个用Eclipse为Mac OS X构建的java应用程序。此应用程序是通过.pkg文件安装的,并且应该是守护程序化的。一切都很好,使用Macbooks(Pro,Retina(,但使用我工作的iMac时,当应用程序启动时,我在Dock上有一个图标,正如您在以下链接。
我已经尝试过这个主题中的解决方案:stackoverflow.com/a/620950/3641679,但它不起作用(我仍然有Dock图标(。当前Info.plist如下所示。
我能做什么?
谢谢你抽出时间来帮助我。
信息(假设应用程序名称为testapp(
- 我停止或启动使用launchctl启动/停止的守护进程
- 当我双击可执行文件(在testapp.app/Contents/MacOs/testapp中(时,我在Dock中有testapp.app(在Info.plist中指定图标文件(
- 很抱歉有一些链接,我必须有10个信誉才能发布2个以上的链接
所以,我终于找到了解决方案!解决方案分为几个步骤。
步骤1:编辑Info.plist
我不得不添加LSBackgroundOnly键。它是字符串,必须设置为1。
正如苹果文档中所说:
仅限LS背景
指定此应用程序是否仅在后台运行。如果此密钥存在并且设置为"1",则Launch Services仅在后台运行应用程序。
信息:
尽管文档指定该键是布尔值,但将其设置为字符串(其中值为1(即可。
为此:
-
转到应用程序的文件夹
-
进入.app的文件夹,然后进入内容文件夹(例如/Applications/test.app/Contents(
-
使用所需的任何文本编辑器(SublimeText、TextEdit、Xcode等(打开Info.plist
-
在关闭dict标记(
</dict>
(之前添加以下行
<key>LSBackgroundOnly</key>
<string>1</string>
保存所有内容。
步骤2:编辑appname.ini
起初我只做了第一部分,所以这还不够。我找到了这个问题的答案。
该文件位于应用程序的.app(例如/Applications/testapp.app/Contents/MacOs/testapp.ini(内的">Contents/MacOs"文件夹中
-
打开.ini文件(使用所需的任何文本编辑器(。
-
在
-vmargs
行之前,添加以下行:-nosplash
-
在
-vmargs
行之后,添加以下两行:-Xdock:隐藏
-Dapple.awt.UIElement=错误
保存文件,现在你可以启动应用程序:它不应该是Dock或"强制退出"窗口中的任何图标,但你的应用程序应该在后台运行。
希望这有帮助,
将其添加到您的信息列表中:-
<key>LSUIElement</key>
<true/>
请注意,此处的值设置为"true",而不是1
正如苹果文档所说:-
指定应用程序是否为代理应用程序,即不应出现在Dock或Force Quit窗口中的应用程序。有关详细信息,请参阅"LSUIElement"。