【问题标题】:This bundle is invalid - The Info.plist file for /Payload/MyAppName.app/Sticker Pack.stickerpack is missing or could not be read此捆绑包无效 - /Payload/MyAppName.app/Sticker Pack.stickerpack 的 Info.plist 文件丢失或无法读取
【发布时间】:2019-08-10 11:02:05
【问题描述】:

希望你一切都好。 我想将 iMessage 贴纸添加到我的应用程序中。 我使用 LibGDX/RoboVM 在 Android Studio 中创建的应用程序。所以,我不能直接将 Stickers 扩展添加到我的项目中。在使用 RoboVM 构建后,我已将 .ipa 签名为 Android Studio 的输出。 我在 Xcode 中使用我的应用程序包 ID 创建了一个独立项目,添加了 Stickers 扩展,然后完成了以下操作。

在终端中

  1. 使用“unzip MyApp.ipa”解压 .ipa。
  2. 使用“rm -rf Payload/MyApp.app/_CodeSignature/”删除了 _CodeSignature 文件夹
  3. 将 Stickers 扩展复制并粘贴到“Payload/MyApp.app/”
  4. 使用“cp MyDistributionProfile.mobileprovision Payload/MyApp.app/embedded.mobileprovision”复制并粘贴了配置文件
  5. 使用“codesign -f -s "iPhone Distribution: MyCompany INC" --entitlements Entitlements.plist Payload/MyApp.app”再次签名
  6. 使用“zip -qr MyResignedApp.ipa Payload/”压缩。

在此之后,我尝试从 XCode 通过 ApplcationLoader 上传 MyResignedApp.ipa,并且在上传过程中没有收到任何错误。

问题是我收到了拒绝邮件,他们说如下,

此捆绑包无效 - /Payload/MyApp.app/Sticker Pack.stickerpack 的 Info.plist 文件丢失或无法读取。

Info.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>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>new_stickers</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME_)</string>
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>NSExtension</key>
<dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.message-payload-provider</string>
    <key>NSExtensionPrincipalClass</key>
    <string>StickerBrowserViewController</string>
</dict>

任何建议我做错了什么? 非常感谢。

【问题讨论】:

    标签: ios xcode imessage imessage-extension ios-stickers


    【解决方案1】:

    您将 Stickers 扩展复制并粘贴到“Payload/MyApp.app/”,但扩展必须位于“Payload/MyApp.app/PlugIns”中。

    MobiVM 本身支持开箱即用的打包和签名扩展。并且不需要手动重新打包/签名。

    但是您必须在独立项目中的 Xcode 中构建应用扩展,然后在 robovm.xml 中引用扩展,如下所示:

     <appExtensions>
         <extension profile="3AED05A9-5F1F-4120-9276-11980B9C88EE">OneSignalNotificationServiceExtension</extension>
     </appExtensions>
    

    在 Xcode 中轻松构建它是将扩展目标添加到空项目。然后使用xcode-build从命令行单独构建它:

    xcodebuild -project onesignal.xcodeproj -target OneSignalNotificationServiceExtension -configuration release -sdk iphoneos -arch arm64 -arch armv7 -arch armv7s BUILD_DIR=build BUILD_ROOT=build
    xcodebuild -project onesignal.xcodeproj -target OneSignalNotificationServiceExtension -configuration release -sdk iphonesimulator -arch i386 -arch x86_64 BUILD_DIR=build BUILD_ROOT=build
    

    并使用lipo打包成胖二进制文件。

    lipo -create -output "OneSignalNotificationServiceExtension.appex/OneSignalNotificationServiceExtension" \
        "build/release-iphoneos/OneSignalNotificationServiceExtension.appex/OneSignalNotificationServiceExtension" \
        "build/release-iphonesimulator/OneSignalNotificationServiceExtension.appex/OneSignalNotificationServiceExtension"
    

    如果贴纸扩展 RoboVM 将以下内容复制到 IPA:

    • MessagesApplicationExtensionSupport/MessagesApplicationExtensionStub
    • MessagesApplicationSupport/MessagesApplicationStub

    手动重新打包时可能会丢失。

    有一个 tutorial 用于 MobiVM 如何使用应用程序扩展,其中提供了有关每个步骤的更多详细信息。

    【讨论】:

    • 你好。非常感谢您的回答。现在调查它。会让你知道更新。谢谢)
    • 我已按照教程中的步骤进行操作。在最后一步中,我已将以下内容添加到我的 Robovm.xml 文件中。 &lt;appExtensionPaths&gt; &lt;path&gt;Plugins&lt;/path&gt; &lt;/appExtensionPaths&gt; &lt;appExtensions&gt; &lt;extension&gt;new_stickers&lt;/extension&gt; &lt;/appExtensions&gt; 现在,我该怎么办?我不确定是否应该像我认为的那样构建我的 Robovm 项目,我必须对 new_stickers 文件夹做一些事情:D
    • 我假设你已经建立了你的贴纸扩展并得到了stickers.appex。 (顺便说一句,Xcode 中有 Stickers Pack App 模板,这使得事件更容易生成) 然后在 RoboVM 中: 1) -- 指定 stickers.appex 相对于项目根目录的位置,例如如果你把它放在libs/ 中——那么只指定&lt;appExtensionPaths&gt; &lt;path&gt;libs&lt;/path&gt;&lt;/appExtensionPaths&gt; 2) 请参阅&lt;appExtensions&gt; &lt;extension&gt;stickers&lt;/extension&gt; &lt;/appExtensions&gt; 部分。请注意它没有 .appex 扩展名
    • 然后像往常一样运行它或创建 IPA
    • 这行得通@dkimitsa。万分感谢。现在我可以在我的设备上运行并查看贴纸。但是,当我尝试将 .ipa 上传到 TestFlight 时,我收到了来自 Apple 的以下拒绝消息。无效的消息应用程序扩展支持。 MessagesApplicationExtensionStub 文件与 myAPP.app/PlugIns/newstickers.appex/MessagesApplicationExtensionStub 不匹配。确保文件正确,重新构建您的应用程序,然后重新提交。不要对 myAPP.app/PlugIns/newstickers.appex/MessagesApplicationExtensionStub 应用后处理。我做错了什么?
    猜你喜欢
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    相关资源
    最近更新 更多