flutter_boost导入问题

2,295 阅读1分钟

使用flutter_boost 的时候发现demo工程头文件无法直接引用。

'flutter_boost/FlutterBoostPlugin.h' file not found

发现demo工程内找不到相关的framework。可能是因为flutter工程打包出了问题,没有将相应的boost的framework添加进来。
来到flutter工程的build/ios/Release-iphoneos文件下,发现确实有flutter_boost 但是打开一看却不是framework包的形式而是.a包。 去修改下flutter工程下的.ios内的podfile,添加use_frameworks! 然后再去重新打包。 之后在build文件夹内发现已经是.framework的形式了。 我们需要将这些产物全都copy出来。 我们添加下以下脚本:

if [ -z $out ]; then
    out='ios_frameworks'
fi

echo "准备输出所有文件到目录: $out"

find . -d -name build | xargs rm -rf
flutter clean
rm -rf $out
rm -rf build

flutter packages get
flutter build ios --release --no-codesign

mkdir $out

cp -r build/ios/Release-iphoneos/*/*.framework $out
cp -r .ios/Flutter/App.framework $out
cp -r .ios/Flutter/engine/Flutter.framework $out

cp -r $out ../flutter-lib/ios_frameworks 

自此能够正常输出四个framework包到ios_frameworks文件夹了。

后续在导入别的package的时候 发现之前的use_frameworks又不见了。 于是又要修改下脚本。

if [ -z $out ]; then
    out='ios_frameworks'
fi

echo "准备输出所有文件到目录: $out"

echo "清除所有已编译文件"
find . -d -name build | xargs rm -rf
flutter clean
rm -rf $out
rm -rf build

flutter packages get

addFlag(){
    cat .ios/Podfile > tmp1.txt
    echo "use_frameworks!" >> tmp2.txt
    cat tmp1.txt >> tmp2.txt
    cat tmp2.txt > .ios/Podfile
    rm tmp1.txt tmp2.txt
}

echo "检查 .ios/Podfile文件状态"
a=$(cat .ios/Podfile)
if [[ $a == use* ]]; then
    echo '已经添加use_frameworks, 不再添加'
else
    echo '未添加use_frameworks,准备添加'
    addFlag
    echo "添加use_frameworks 完成"
fi

echo "编译flutter"
flutter build ios --release --no-codesign

echo "编译flutter完成"
mkdir $out

cp -r build/ios/Release-iphoneos/*/*.framework $out
cp -r .ios/Flutter/App.framework $out
cp -r .ios/Flutter/engine/Flutter.framework $out

echo "复制framework库到临时文件夹: $out"

libpath='../flutter-lib'

rm -rf "$libpath/ios_frameworks"
mkdir $libpath
cp -r $out $libpath

echo "复制库文件到: $libpath"