使用flutter_boost 的時候發現demo工程頭文件沒法直接引用。ios
'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出來。 咱們添加下如下腳本:bash
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文件夾了。iphone
後續在導入別的package的時候 發現以前的use_frameworks又不見了。 因而又要修改下腳本。ui
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"
複製代碼