一切顺利。我想将iMessage Stickers添加到我的应用程序中。我的应用程序是使用LibGDX / RoboVM在Android Studio中创建的。所以,我不能直接将贴纸扩展添加到我的项目中。在使用RoboVM构建之后,我已经将.ipa签名为Android Studio的输出。我在Xcode中使用我的应用程序的包ID创建了一个独立项目,添加了Stickers扩展,然后完成了以下操作。
在终端
- 使用“解压缩MyApp.ipa”解压缩.ipa。
- 使用“rm -rf Payload / MyApp.app / _CodeSignature /”删除了_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 /”压缩。
在此之后,我尝试通过AppCationLoader从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>
我有什么错误吗?非常感谢。
你'将贴纸扩展名复制并粘贴到“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之后:
手动重新打包时可能会丢失哪些内容。
MobiVM有一个tutorial如何使用应用程序扩展,它提供了有关每个步骤的更多详细信息。