arc*_*fox 35 dart flutter dart-ffi
执行dart run ffigen出现如下错误:
Unhandled exception:\nInvalid argument(s): Failed to load dynamic library '/Users/bruce/homebrew/opt/llvm/lib/libclang.dylib': dlopen(/Users/bruce/homebrew/opt/llvm/lib/libclang.dylib, 0x0001): tried: '/Users/bruce/homebrew/opt/llvm/lib/libclang.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/Users/bruce/homebrew/Cellar/llvm/13.0.1_1/lib/libclang.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))\n#0 _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:12:43)\n#1 new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:23:12)\n#2 initializeGlobals (package:ffigen/src/header_parser/data.dart:41:33)\n#3 initParser (package:ffigen/src/header_parser/parser.dart:48:3)\n#4 parse (package:ffigen/src/header_parser/parser.dart:22:3)\n#5 main (package:ffigen/src/executables/ffigen.dart:54:19)\n#6 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:295:32)\n#7 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)\nRun Code Online (Sandbox Code Playgroud)\n我检查了我的 Flutter 环境:
\n\xe2\x9d\xaf file /Users/bruce/dev_tools/flutter/bin/cache/dart-sdk/bin/dart\n/Users/bruce/dev_tools/flutter/bin/cache/dart-sdk/bin/dart: Mach-O 64-bit executable x86_64\nRun Code Online (Sandbox Code Playgroud)\n当我运行brew install llvm安装 llvm 时,我得到的是 arm64 的库,我认为这是导致错误的原因:
\xe2\x9d\xaf lipo -info /Users/bruce/homebrew/Cellar/llvm/13.0.1_1/lib/libclang.dylib\nNon-fat file: /Users/bruce/homebrew/Cellar/llvm/13.0.1_1/lib/libclang.dylib is architecture: arm64\nRun Code Online (Sandbox Code Playgroud)\nFlutter SDK好像没有针对Apple Silicon的版本,那么如何解决这个问题呢?
\n\xe2\x9d\xaf flutter doctor -v\n[\xe2\x9c\x93] Flutter (Channel stable, 2.8.1, on macOS 12.3 21E230 darwin-arm, locale\n zh-Hans-CN)\n \xe2\x80\xa2 Flutter version 2.8.1 at /Users/bruce/dev_tools/flutter\n \xe2\x80\xa2 Upstream repository https://github.com/flutter/flutter.git\n \xe2\x80\xa2 Framework revision 77d935af4d (4 months ago), 2021-12-16 08:37:33 -0800\n \xe2\x80\xa2 Engine revision 890a5fca2e\n \xe2\x80\xa2 Dart version 2.15.1\n \xe2\x80\xa2 Pub download mirror http://10.141.64.130:8080\n\n[\xe2\x9c\x93] Android toolchain - develop for Android devices (Android SDK version\n 32.1.0-rc1)\n \xe2\x80\xa2 Android SDK at /Users/bruce/Library/Android/sdk\n \xe2\x80\xa2 Platform android-32, build-tools 32.1.0-rc1\n \xe2\x80\xa2 Java binary at: /Applications/Android\n Studio.app/Contents/jre/Contents/Home/bin/java\n \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)\n \xe2\x80\xa2 All Android licenses accepted.\n\n[\xe2\x9c\x93] Xcode - develop for iOS and macOS (Xcode 13.3)\n \xe2\x80\xa2 Xcode at /Applications/Xcode.app/Contents/Developer\n \xe2\x80\xa2 CocoaPods version 1.11.3\n\n[\xe2\x9c\x93] Chrome - develop for the web\n \xe2\x80\xa2 Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome\n\n[\xe2\x9c\x93] Android Studio (version 2021.1)\n \xe2\x80\xa2 Android Studio at /Applications/Android Studio.app/Contents\n \xe2\x80\xa2 Flutter plugin can be installed from:\n https://plugins.jetbrains.com/plugin/9212-flutter\n \xe2\x80\xa2 Dart plugin can be installed from:\n https://plugins.jetbrains.com/plugin/6351-dart\n \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)\nRun Code Online (Sandbox Code Playgroud)\n我尝试安装Arm平台的Dart SDK,但仍然不起作用,使用独立的Dart环境,出现以下错误:
\n\xe2\x9d\xaf /Users/bruce/dev_tools/dart/bin/dart run ffigen\nThe Flutter SDK is not available.\n#0 BoundSdkSource.getDirectory (package:pub/src/source/sdk.dart:125:7)\n#1 SystemCache.load (package:pub/src/system_cache.dart:113:52)\n#2 Entrypoint._assertLockFileUpToDate (package:pub/src/entrypoint.dart:599:19)\n#3 Entrypoint.assertUpToDate (package:pub/src/entrypoint.dart:525:7)\n#4 getExecutableForCommand (package:pub/src/executable.dart:304:16)\n#5 RunCommand.run (package:dartdev/src/commands/run.dart:232:32)\n#6 CommandRunner.runCommand (package:args/command_runner.dart:209:27)\n#7 DartdevRunner.runCommand (package:dartdev/dartdev.dart:232:30)\n#8 CommandRunner.run.<anonymous closure> (package:args/command_runner.dart:119:25)\n#9 new Future.sync (dart:async/future.dart:296:31)\n#10 CommandRunner.run (package:args/command_runner.dart:119:14)\n#11 runDartdev (package:dartdev/dartdev.dart:67:29)\n#12 main (file:///opt/s/w/ir/cache/builder/sdk/pkg/dartdev/bin/dartdev.dart:11:9)\n#13 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:293:32)\n#14 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)\nRun Code Online (Sandbox Code Playgroud)\n
小智 44
在M1 mac上运行,这两个命令解决了我的问题。
$ arch -arm64 brew install llvm
$ sudo gem install ffi
Run Code Online (Sandbox Code Playgroud)
小智 7
这是对我有用的步骤,
使用自制程序 x86_64 版本安装 llvm
arch -x86_64 /usr/local/homebrew/bin/brew install llvm
安装 x86-64 版本的 ffi
sudo arch -x86_64 gem install ffi
删除pods目录和目录Podfile中iOS
使缓存无效并重新启动android studio
此错误出现在配备 Apple Silicon M1 芯片的 MacBook 上。仅当通过配置为使用 Rosetta 打开的终端运行命令时,才会出现此问题。
我所做的解决方法是:
因此,每次我想运行导致此错误的命令时,我都会使用“Terminal x86_64”来运行它,你猜怎么着?有用。
| 归档时间: |
|
| 查看次数: |
123510 次 |
| 最近记录: |