Этот пакет недействителен - файл Info.plist для /Payload/MyAppName.app/Sticker Pack.stickerpack отсутствует или не может быть прочитан
Надеюсь, с тобой все хорошо. Я хочу добавить стикеры iMessage в свое приложение. Мое приложение создано в Android Studio с использованием LibGDX/RoboVM. Поэтому я не могу добавить стикеры непосредственно в свой проект. Я подписал.ipa как вывод из Android Studio после сборки с RoboVM. Я создал отдельный проект в XCode с идентификатором пакета моего приложения, добавил расширение Stickers, а затем сделал следующее.
В терминале
- Разархивируйте.ipa, используя "unzip MyApp.ipa".
- Удалил папку _CodeSignature, используя "rm -rf Payload/MyApp.app/_CodeSignature/"
- Скопировал и вставил расширение стикеров в "Payload / MyApp.app /"
- Скопировал и вставил профиль обеспечения с помощью "cp MyDistributionProfile.mobileprovision Payload/MyApp.app/embedded.mobileprovision"
- Снова подписано с использованием "codesign -f -s " Распространение через iPhone: MyCompany INC" --entitlements Entitlements.plist Payload/MyApp.app"
- Архивируется с помощью "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 ответ
Вы `скопировали и вставили расширение стикеров в"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 есть учебное пособие по использованию расширения приложения, которое предоставляет более подробную информацию о каждом шаге.