M1 Mac 上的 Pod 安装错误 - 使用 shared_preferences 等本机代码的 Flutter 项目
Posted
技术标签:
【中文标题】M1 Mac 上的 Pod 安装错误 - 使用 shared_preferences 等本机代码的 Flutter 项目【英文标题】:Pod install error on M1 Mac - Flutter project with native code like shared_preferences 【发布时间】:2021-05-08 06:33:42 【问题描述】:我使用的是 MacBook Pro M1(在有人说是因为 M1 或其他原因之前,我已经使用 Flutter 和 M1 编程了数周,但之后我必须重置我的 M1)。 ..我的大问题:
每次我遇到运行 Pod 安装时出错时,我都无法使用包含原生代码(如 shared_preferences
或 sqlite
)的包来启动我的项目。
我在 Stack Overflow 上进行了搜索,但到目前为止没有任何帮助。如果我在没有包的情况下启动我的项目没有问题,这是我的 Flutter 代码,非常简单:
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main()
runApp(MyApp());
class MyApp extends StatelessWidget
// This widget is the root of your application.
@override
Widget build(BuildContext context)
return MaterialApp(
home: Home(),
);
`class Home extends StatelessWidget
const Home(Key key) : super(key: key);
@override
Widget build(BuildContext context)
return Scaffold(
body: Center(
child: RaisedButton.icon(
onPressed: ()async
final prefs = await SharedPreferences.getInstance();
if(prefs.containsKey("test"))
print("available");
else
await prefs.setInt("test", 1);
final send = await post("xxx",body:
"query":"SELECT * FROM NEWS"
);
print(json.decode(send.body));
,
icon: Icon(Icons.person),
label: Text("Hii")
),
),
);
,
这是我从 Flutter 得到的错误:
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:177:in `sources'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:1073:in `block in resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/user_interface.rb:64:in `section'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:1072:in `resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:124:in `analyze'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:414:in `analyze'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:239:in `block in resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/user_interface.rb:64:in `section'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:238:in `resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:160:in `install!'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/command/install.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/command.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/bin/pod:55:in `<top (required)>'
/usr/local/bin/pod:23:in `load'
/usr/local/bin/pod:23:in `<main>'
```
――― TEMPLATE END ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
[!] Oh no, an error occurred.
Search for existing GitHub issues similar to yours:
https://github.com/CocoaPods/CocoaPods/search?q=dlsym%280x7fdfa0da8bc0%2C+Init_ffi_c%29%3A+symbol+not+found+-+%2FLibrary%2FRuby%2FGems%2F2.6.0%2Fgems%2Fffi-1.14.2%2Flib%2Fffi_c.bundle&type=Issues
If none exists, create a ticket, with the template displayed above, on:
https://github.com/CocoaPods/CocoaPods/issues/new
Be sure to first read the contributing guide for details on how to properly submit a ticket:
https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md
Don't forget to anonymize any private data!
Looking for related issues on cocoapods/cocoapods...
Found no similar issues. To create a new issue, please visit:
https://github.com/cocoapods/cocoapods/issues/new
Error output from CocoaPods:
↳
[!] Automatically assigning platform `ios` with version `12.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
我编辑了我的 Podfile 并指定了一个平台,但没有任何帮助。以下是一些细节:
Flutter Version = 1.22.5 (I tried also the newest version 1.22.6)
Xcode Version = 12.3 (I tried also the newest version 12.4)
Cocoa-pods = 1.10.0 ((I tried also the newest version 1.10.1)
我安装并重新安装了很多次 Cocoa-pods 也没有帮助
【问题讨论】:
在 M1 上运行,我最终需要以下两个答案的混合:arch -x86_64 sudo gem install ffi
然后cd ios && arch -x86_64 pod install
。谢谢@aheze 和@ShobitMahajan
在 arch -x86_64 sudo gem install ffi
之后,下次安装简单的 pod 即可。
【参考方案1】:
您需要执行以下操作,而不是 pod install
:
arch -x86_64 pod install
Cocoapods 仍然没有完整的 Apple Silicon 支持。使用arch -x86_64
运行命令会强制终端使用 Rosetta 2。
如果这不起作用,请尝试关注this article。
【讨论】:
即使这样也无济于事 这对我有用,但我如何分享我的配置来帮助其他人(我的 ruby 版本和位置,我的 pod 版本和位置)?我目前正在使用没有 rosseta 的终端【参考方案2】:运行这个命令:
arch -x86_64 sudo gem install ffi
之后,做你的flutter build ios --no-codesign
或其他
它会正常工作的。
更多信息在这里提供https://github.com/flutter/flutter/issues/70796#issue-746115543
【讨论】:
【参考方案3】:在我执行这些步骤之前,这些flutter run
、flutter build ios
、arch -x86_64 pod install
等都不起作用:
-
在终端运行
sudo gem install ffi
。
然后flutter build ios --release
。
并且工作正常。
【讨论】:
【参考方案4】:arch -x86_64 pod install
改为 pod install
同时更新repo
arch -x86_64 pod install --repo-update
【讨论】:
以上是关于M1 Mac 上的 Pod 安装错误 - 使用 shared_preferences 等本机代码的 Flutter 项目的主要内容,如果未能解决你的问题,请参考以下文章
Flutter小记7Mac M1 使用 pod install编译常见两种错误解决方案(CocoaPod Error | LoadError)
Flutter小记7Mac M1 使用 pod install编译常见两种错误解决方案(CocoaPod Error | LoadError)
Flutter小记7Mac M1 使用 pod install编译常见两种错误解决方案(CocoaPod Error | LoadError)
M1 mac 上的 android studio 和 manager 错误(未安装模拟器)