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

时间:2019-03-19 20:01:05

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

希望您一切都好。 我想将iMessage Stickers添加到我的应用程序。 我的应用是使用LibGDX / RoboVM在Android Studio中创建的。因此,我无法将Stickers扩展名直接添加到我的项目中。使用RoboVM构建后,我已经将.ipa签名作为Android Studio的输出。 我已经用我的应用程序的包ID在Xcode中创建了一个独立项目,添加了Stickers扩展名,然后执行了以下操作。

在终端机

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

此后,我尝试通过ApplcationLoader从XCode上传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>

有人建议我在做什么错吗? 非常感谢。

1 个答案:

答案 0 :(得分:1)

您将粘贴扩展复制并粘贴到“ 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

当您手动重新包装时,可能缺少哪些。

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