flutter_boost匯入問題

jeffery丶發表於2020-01-08

使用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"
複製程式碼

相關文章