2015-09-03 38 views
2

我正在尝试为Mac Store部署签署我的Mac OS X,但是当我签署应用程序时,它不会进行网络调用。当我为我的Mac OS X应用程序设计密码时,API调用不会运行

该应用程序已在CPP使用Qt

开发

PKG生成步骤

这是我的脚本协同设计应用

整合二元

内部框架
macdeployqt MyAppName.app 

检查一切,当确定

dsymutil MyAppName.app/Contents/MacOS/MyAppName -o MyAppName.app.dSYM 

注册框架

codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore 
codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/Frameworks/QtGui.framework/Versions/5/QtGui 
codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport 
codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport 
codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/Frameworks/QtDBus.framework/Versions/5/QtDBus 
codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork 
codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets 
codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/PlugIns/bearer/libqcorewlanbearer.dylib 
codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/PlugIns/bearer/libqgenericbearer.dylib 
codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/PlugIns/imageformats/libq* 
codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/PlugIns/platforms/libqcocoa.dylib 
codesign --entitlements ../myappame_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app/Contents/PlugIns/printsupport/libcocoaprintersupport.dylib 

(直到这一步,应用程序运行得很好)

注册捆绑的应用程序

codesign --deep --entitlements ../myappname_desktop/MyAppName.entitlements -s "3rd Party Mac Developer Application: MyAppName" MyAppName.app 

生成PKG

productbuild --component MyAppName.app /Applications --sign "3rd Party Mac Developer Installer: MyAppName" MyAppName.pkg 

MyAppName.entitlements

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>com.apple.security.app-sandbox</key> 
    <true/> 
</dict> 
</plist> 

MyAppName.plist

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>NSPrincipalClass</key> 
    <string>NSApplication</string> 
    <key>CFBundleIconFile</key> 
    <string>icon.icns</string> 
    <key>CFBundlePackageType</key> 
    <string>APPL</string> 
    <key>CFBundleSignature</key> 
    <string>????</string> 
    <key>CFBundleExecutable</key> 
    <string>MyAppName</string> 
    <key>CFBundleIdentifier</key> 
    <string>com.myappname.desktop</string> 
    <key>CFBundleVersion</key> 
    <string>4</string> 
    <key>CFBundleShortVersionString</key> 
    <string>1.0</string> 
    <key>LSUIElement</key> 
    <string>1</string> 
    <key>ForAppStore</key> 
    <true/> 
    <key>LSApplicationCategoryType</key> 
    <string>public.app-category.productivity</string> 

</dict> 
</plist> 

束状结构

MyAppName.app 
└── Contents 
    ├── Frameworks 
    │   ├── QtCore.framework 
    │   │   ├── QtCore -> Versions/Current/QtCore 
    │   │   ├── Resources -> Versions/Current/Resources 
    │   │   └── Versions 
    │   │    ├── 5 
    │   │    │   ├── QtCore 
    │   │    │   └── Resources 
    │   │    │    └── Info.plist 
    │   │    └── Current -> 5 
    │   ├── QtDBus.framework 
    │   │   ├── QtDBus -> Versions/Current/QtDBus 
    │   │   ├── Resources -> Versions/Current/Resources 
    │   │   └── Versions 
    │   │    ├── 5 
    │   │    │   ├── QtDBus 
    │   │    │   └── Resources 
    │   │    │    └── Info.plist 
    │   │    └── Current -> 5 
    │   ├── QtGui.framework 
    │   │   ├── QtGui -> Versions/Current/QtGui 
    │   │   ├── Resources -> Versions/Current/Resources 
    │   │   └── Versions 
    │   │    ├── 5 
    │   │    │   ├── QtGui 
    │   │    │   └── Resources 
    │   │    │    └── Info.plist 
    │   │    └── Current -> 5 
    │   ├── QtNetwork.framework 
    │   │   ├── QtNetwork -> Versions/Current/QtNetwork 
    │   │   ├── Resources -> Versions/Current/Resources 
    │   │   └── Versions 
    │   │    ├── 5 
    │   │    │   ├── QtNetwork 
    │   │    │   └── Resources 
    │   │    │    └── Info.plist 
    │   │    └── Current -> 5 
    │   ├── QtPrintSupport.framework 
    │   │   ├── QtPrintSupport -> Versions/Current/QtPrintSupport 
    │   │   ├── Resources -> Versions/Current/Resources 
    │   │   └── Versions 
    │   │    ├── 5 
    │   │    │   ├── QtPrintSupport 
    │   │    │   └── Resources 
    │   │    │    └── Info.plist 
    │   │    └── Current -> 5 
    │   └── QtWidgets.framework 
    │    ├── QtWidgets -> Versions/Current/QtWidgets 
    │    ├── Resources -> Versions/Current/Resources 
    │    └── Versions 
    │     ├── 5 
    │     │   ├── QtWidgets 
    │     │   └── Resources 
    │     │    └── Info.plist 
    │     └── Current -> 5 
    ├── Info.plist 
    ├── MacOS 
    │   └── Hightrack 
    ├── PkgInfo 
    ├── PlugIns 
    │   ├── bearer 
    │   │   ├── libqcorewlanbearer.dylib 
    │   │   └── libqgenericbearer.dylib 
    │   ├── imageformats 
    │   │   ├── libqdds.dylib 
    │   │   ├── libqgif.dylib 
    │   │   ├── libqicns.dylib 
    │   │   ├── libqico.dylib 
    │   │   ├── libqjp2.dylib 
    │   │   ├── libqjpeg.dylib 
    │   │   ├── libqmng.dylib 
    │   │   ├── libqtga.dylib 
    │   │   ├── libqtiff.dylib 
    │   │   ├── libqwbmp.dylib 
    │   │   └── libqwebp.dylib 
    │   ├── platforms 
    │   │   └── libqcocoa.dylib 
    │   └── printsupport 
    │    └── libcocoaprintersupport.dylib 
    └── Resources 
     ├── empty.lproj 
     ├── icon.icns 
     └── qt.conf 
+0

@KubaOber是的,它复制我的包中的QtNetwork。我用我的包结构编辑了我的问题 – EnriMR

回答

3

传出的网络访问需要com.apple.security.network.client权利被添加到您的权利文件。完整列表请参见App Sandbox Entitlement Keys

+0

当我在〜/ Library/LaunchAgents /中创建文件以允许自动启动我的应用程序时,我遇到同样的问题。我已经试过这两个权利,但它不运行'com.apple.security.files.user-selected.read-write'和'com.apple.security.files.user-selected.executable' – EnriMR

+0

如果你是只是尝试启动应用程序(而不是单独的后台守护程序),则可能需要添加登录项而不是启动代理程序:https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup /Chapters/CreatingLoginItems.html –

+0

我会阅读它。谢谢你的帮助 – EnriMR

相关问题