- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
希望你一切都好。我想将 iMessage 贴纸添加到我的应用程序。我的应用程序使用 LibGDX/RoboVM 在 Android Studio 中创建。所以,我无法将 Stickers 扩展直接添加到我的项目中。在使用 RoboVM 构建后,我已经将 .ipa 签名为 Android Studio 的输出。我在 Xcode 中使用我的应用程序的 bundle id 创建了一个独立项目,添加了 Stickers 扩展,然后完成了以下操作。
在终端
- Unzipped the .ipa using "unzip MyApp.ipa".
- Removed the _CodeSignature folder using "rm -rf Payload/MyApp.app/_CodeSignature/"
- Copied and Pasted the Stickers extension to the "Payload/MyApp.app/"
- Copied and Pasted the provisioning profile using "cp MyDistributionProfile.mobileprovision Payload/MyApp.app/embedded.mobileprovision"
- Signed again using "codesign -f -s "iPhone Distribution: MyCompany INC" --entitlements Entitlements.plist Payload/MyApp.app"
- Zipped using "zip -qr MyResignedApp.ipa Payload/".
在此之后,我尝试从 XCode 通过 ApplcationLoader 上传 MyResignedApp.ipa,但在上传过程中没有出现任何错误。
问题是我收到了拒绝邮件,他们说了以下内容,
This bundle is invalid - The Info.plist file for /Payload/MyApp.app/Sticker Pack.stickerpack is missing or could not be read.
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
打包成fat binary。
lipo -create -output "OneSignalNotificationServiceExtension.appex/OneSignalNotificationServiceExtension" \
"build/release-iphoneos/OneSignalNotificationServiceExtension.appex/OneSignalNotificationServiceExtension" \
"build/release-iphonesimulator/OneSignalNotificationServiceExtension.appex/OneSignalNotificationServiceExtension"
此外,如果贴纸扩展 RoboVM 复制到 IPA:
手动重新打包时可能会丢失。
有一个tutorial对于 MobiVM 如何使用应用程序扩展,它提供了有关每个步骤的更多详细信息。
关于ios - 此 bundle 无效 -/Payload/MyAppName.app/Sticker Pack.stickerpack 的 Info.plist 文件丢失或无法读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55249121/
希望你一切都好。我想将 iMessage 贴纸添加到我的应用程序。我的应用程序使用 LibGDX/RoboVM 在 Android Studio 中创建。所以,我无法将 Stickers 扩展直接添加
我是一名优秀的程序员,十分优秀!