为啥应用程序包不总是一个包?

Posted

技术标签:

【中文标题】为啥应用程序包不总是一个包?【英文标题】:Why is the application package not always a package?为什么应用程序包不总是一个包? 【发布时间】:2019-01-08 01:23:44 【问题描述】:

我有一个 swift 应用程序,它是一个文件类型的查看器,它是一个包。该应用程序导出这种类型的 UTI(我更愿意导入它,但这有同样的问题)。如果文档存储在 iCloud 中,应用程序可以打开一个包,但如果文档存储在 Dropbox、oneDrive 或 Google Drive 中,则不能。

文档类型和导出的 UTI 声明中是否有任何内容可能会导致此问题?

文档类型有:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>JMRI Configuration Profile</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>org.jmri.profile</string>
        </array>
        <key>LSTypeIsPackage</key>
        <true/>
    </dict>
</array>

导出的 UTI 是:

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>com.apple.package</string>
            <string>public.composite-content</string>
        </array>
        <key>UTTypeDescription</key>
        <string>JMRI Configuration Profile</string>
        <key>UTTypeIconFiles</key>
        <array>
            <string></string>
        </array>
        <key>UTTypeIdentifier</key>
        <string>org.jmri.profile</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>JMRI</string>
                <string>jmri</string>
            </array>
        </dict>
    </dict>
</array>

【问题讨论】:

【参考方案1】:

事实证明,我遇到的问题是底层应用程序(Dropbox、Google Drive 和 oneDrive)如何实现对 FileProvider API 的支持。

自从我最初提出这个问题以来,Dropbox 已经添加了对包的支持,微软表示不支持包,我还没有找到(或想出如何询问)Google 是否会支持包。

【讨论】:

以上是关于为啥应用程序包不总是一个包?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个捆绑包不起作用?

为啥作曲家包不安装

为啥华为系统恢复eRecovery总是说获取安装包信息失败?

为啥 TCP 数据包不包含源 IP 和目标 IP?

为啥 node-sodium 包不起作用

卸载 程序时发现 安装程序包不存在 怎么办