Этот пакет недействителен - файл Info.plist для /Payload/MyAppName.app/Sticker Pack.stickerpack отсутствует или не может быть прочитан - PullRequest
2 голосов
/ 19 марта 2019

Надеюсь, ты в порядке. Я хочу добавить стикеры iMessage в свое приложение. Мое приложение создано в Android Studio с использованием LibGDX / RoboVM. Поэтому я не могу добавить стикеры непосредственно в свой проект. Я подписал .ipa как вывод из Android Studio после сборки с RoboVM. Я создал отдельный проект в XCode с идентификатором пакета моего приложения, добавил расширение Stickers, а затем сделал следующее.

В терминале

  1. Разархивировал .ipa, используя "unzip MyApp.ipa".
  2. Удалил папку _CodeSignature, используя «rm -rf Payload / MyApp.app / _CodeSignature /»
  3. Скопировал и вставил расширение стикеров в «Payload / MyApp.app /»
  4. Скопировал и вставил профиль обеспечения, используя «cp MyDistributionProfile.mobileprovision Payload / MyApp.app / embedded.mobileprovision»
  5. Снова подписано с использованием "codesign -f -s" Распространение через iPhone: MyCompany INC "--entitlements Entitlements.plist Payload / MyApp.app"
  6. Заархивировано с помощью "zip -qr MyResignedApp.ipa Payload /".

После этого я попытался загрузить MyResignedApp.ipa через ApplcationLoader из XCode и не получил никаких ошибок во время загрузки.

Проблема в том, что я получил письмо с отказом, где они сказали следующее:

Этот пакет недействителен - файл Info.plist для /Payload/MyApp.app/Sticker Pack.stickerpack отсутствует или не может быть прочитан.

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 Ответ

1 голос
/ 20 марта 2019

Вы `скопировали и вставили расширение стикеров в« 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 существует учебное пособие по использованию расширения приложения, которое предоставляет более подробную информацию о каждом шаге.

...