M1 Pro iOS lame 编译报错

iOS编译lame报错:

Building for 'iOS-simulator', but linking in object file (/Users/mac/.pub-cache/git/flutter_plugin_record-d11120b8be154e38c6e36fc895ec6ea8c612375c/ios/lame-ios.framework/lame-ios[arm64][2](VbrTag.o)) built for 'iOS'

这一看lame官网,好家伙,最后一个版本 2017 年发布的,你搁哪儿给我扯蛋呢?

编译 Apple 全平台的framework

编译真机 (arm64):

xcodebuild -project lame.xcodeproj \
-sdk iphoneos \
-arch arm64 \
-configuration Release \
build \
CONFIGURATION_BUILD_DIR=../build/ios
编译模拟器 (x86_64 + arm64-simulator)

xcodebuild -project lame.xcodeproj \
-sdk iphonesimulator \
-arch x86_64 -arch arm64 \
-configuration Release \
build \
CONFIGURATION_BUILD_DIR=../build/simulator

这样../build/ios 和../build/simulator里会各自生成一个静态库libmp3lame.a

回到项目根目录执行:

xcodebuild -create-xcframework \
-library build/ios/libmp3lame.a \
-headers include \
-library build/simulator/libmp3lame.a \
-headers include \
-output build/lame-ios.xcframework

最终你会在build/目录得到:

lame-ios.xcframework

Snipaste 2025 09 06 13 24 29

修改 flutter_plugin_record.podspec 配置

#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
#use_frameworks!
Pod::Spec.new do |s|
s.name = 'flutter_plugin_record'
s.version = '0.0.1'
s.summary = 'A new Flutter plugin.'
s.description = <<-DESC
A new Flutter plugin.
DESC
s.homepage = 'http://example.com'
s.license = { :file => '../LICENSE' }
s.author = { 'Your Company' => 'email@example.com' }
s.source = { :path => '.' }
# s.swift_version = '4.2'
s.source_files = 'Classes/**/*.{h,m}'
s.public_header_files = 'Classes/**/*.h'
# s.vendored_libraries = 'Classes/libopencore-amrnb.a'
s.dependency 'Flutter'
s.framework = "AVFoundation"
s.vendored_frameworks = 'LAME.xcframework' <-- 注意这里 ...
s.ios.deployment_target = '8.0'
end

引用

注意引用的地方:

/Users/mac/flutter_plugin_record/ios/LAME.xcframework/ios-arm64/LAME.framework/Headers/lame.h
#include <LAME/lame.h>
作者

陈桥驿站

发布于

2025-09-05

更新于

2025-09-06

许可协议

评论