为颤振添加 image_picker 依赖项时出错(iOS)
Posted
技术标签:
【中文标题】为颤振添加 image_picker 依赖项时出错(iOS)【英文标题】:Errors when added image_picker dependency for flutter (iOS) 【发布时间】:2020-05-03 08:01:06 【问题描述】:我需要为我的应用程序使用 image_picker。我在 pubspec.yaml 文件中添加了 image_picker 依赖项,对于 ios,我添加了 NSCameraUsageDescription NSPhotoLibraryUsageDescription NSMicrophoneUsageDescription 到 info.plist 文件中,但尝试在 iOS 模拟器上运行应用程序时出现此错误。
这是我在尝试运行应用程序时遇到的错误。 `在调试模式下在 iPhone 11 Pro Max 上启动 lib/main.dart... /Users/sirapol/Desktop/FirstCareFrontEnd/care_now_frontend_v1/ios/Runner/Info.plist:属性列表错误:在里面找到非键 在第 27 行/JSON 错误:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。 运行 Xcode 构建...
Xcode 构建完成。 2.4s 无法构建 iOS 应用 Xcode 构建的错误输出: ↳ ** 构建失败 **
Xcode 的输出: ↳ /Users/sirapol/Desktop/FirstCareFrontEnd/care_now_frontend_v1/build/ios/Debug-iphonesimulator/flutter_plugin_android_lifecycl e/flutter_plugin_android_lifecycle.framework:不允许资源分叉、Finder 信息或类似的碎屑 命令 CodeSign 失败,退出代码为非零 注意:使用新的构建系统 注:规划建设 注意:构建构建描述 警告:将架构 armv7 映射到 i386。确保此目标的 Architectures 和 Valid Architectures 构建设置 为 iOS 模拟器平台正确配置。 (在项目“Pods”的目标“image_picker”中) 警告:将架构 arm64 映射到 x86_64。确保此目标的 Architectures 和 Valid Architectures 构建设置 为 iOS 模拟器平台正确配置。 (在项目“Pods”的目标“image_picker”中) 警告:签名和功能的功能可能无法正常运行,因为其权利使用占位符团队 ID。要解决此问题,请在 Runner 编辑器中选择一个开发团队。 (在项目“Runner”的目标“Runner”中)`
这是我的 pubspec.yaml 文件的一部分
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
provider: ^3.0.0
http: ^0.12.0+4
image_picker: ^0.6.3+1
path_provider: ^1.1.0
dev_dependencies:
flutter_test:
sdk: flutter
这是我的 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>$(DEVELOPMENT_LANGUAGE)</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>care_now_frontend_v1</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>NSLocationWhenInUseUsageDescription</key>
<key>NSCameraUsageDescription</key>
<key>NSPhotoLibraryUsageDescription</key>
<key>NSMicrophoneUsageDescription</key>
<false/>
</dict>
</plist>
我不知道为什么会发生错误。因为我已经这样做了一次并且没有错误。谢谢你的帮助
【问题讨论】:
您是否尝试过使用最新版本的图像选择器? : image_picker: ^0.6.1+4 你需要在<key>
后面加上<string>
是的,我已经尝试了新版本的 image_picker,仍然得到同样的错误
问题似乎来自info.plist,我尝试在您需要确保在 plist 文件中的键值之后添加了一个值。在这些键下添加字符串值,它应该可以解决问题。
例子:
<key>NSLocationWhenInUseUsageDescription</key>
<string>Allow access to your phone's location</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Allow access your photo library</string>
<key>NSCameraUsageDescription</key>
<string>Allow access your phone's camera</string>
<key>NSMicrophoneUsageDescription</key>
<string>Allow the app to record using your phone's microphone</string>
至于架构映射错误,请尝试在 xcode 项目中将您的 iOS 部署目标设置为 9.0 或更高版本。
另外,我注意到您的代码示例中有一个尾随值,看起来应该移到下面
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
【讨论】:
【参考方案2】:如果其他人遇到此问题,如果您在文件末尾添加密钥,它将失败并发送 Xcode 无法读取 Info.plist 文件错误,请在 Xcode 版本 12 上进行测试。
例如,这个文件可以正常工作:
<?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>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
....
<key>NSPhotoLibraryUsageDescription</key>
<string>Share pictures</string>
<key>NSCameraUsageDescription</key>
<string>Share pictures</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
但是,如果您像这样将键移到末尾,它将失败:
....
<key>UIViewControllerBasedStatusBarAppearance</key>
<key>NSPhotoLibraryUsageDescription</key>
<string>Share pictures</string>
<key>NSCameraUsageDescription</key>
<string>Share pictures</string>
<false/>
</dict>
</plist>
【讨论】:
以上是关于为颤振添加 image_picker 依赖项时出错(iOS)的主要内容,如果未能解决你的问题,请参考以下文章
在颤振应用程序中添加 image_picker 插件后,Gradle Build 失败
添加spring boot jpa依赖项时创建名称为“entityManagerFactory”的bean时出错
运行 image_picker 时我的新 android 应用程序崩溃(基于颤振飞镖)
为 amazon-kinesis-video-streams-producer-sdk-cpp 构建依赖项时出错 [重复]