最近有項(xiàng)目需要用到畫布玛荞,且是跨平臺的應(yīng)用,選用了https://github.com/Automattic/node-canvas
打包過程遇到了各種麻煩仁连,開發(fā)電腦沒有問題,未裝開發(fā)環(huán)境的電腦普遍白屏径簿,詳查才知道是動(dòng)態(tài)鏈接庫的問題。
出現(xiàn)問題得解決啊纱扭,于是乎有以下幾種思路牍帚。
- 讓canvas靜態(tài)編譯,參考:https://blog.csdn.net/lihangxiaoji/article/details/81297342
無奈條路沒有走通乳蛾。
- 將依賴的動(dòng)態(tài)庫打包到.app中暗赶,修正模塊的依賴路徑解決。
用第二種雖然花費(fèi)大量精力肃叶,但至少出來結(jié)果了蹂随。
修改編譯后的canvas.node的依賴路徑:
#!/bin/sh
PRODUCT_PATH=./node_modules
INSTALL_PATH=/usr/local/opt
LOAD_PATH=@rpath/../dylib
PRODUCT_NAME=$PRODUCT_PATH/canvas/build/Release/canvas.node
install_name_tool -change "$INSTALL_PATH/pixman/lib/libpixman-1.0.dylib" "$LOAD_PATH/libpixman-1.0.dylib" "$PRODUCT_NAME"
install_name_tool -change "$INSTALL_PATH/cairo/lib/libcairo.2.dylib" "$LOAD_PATH/libcairo.2.dylib" "$PRODUCT_NAME"
install_name_tool -change "$INSTALL_PATH/glib/lib/libgobject-2.0.0.dylib" "$LOAD_PATH/libgobject-2.0.0.dylib" "$PRODUCT_NAME"
install_name_tool -change "$INSTALL_PATH/libffi/lib/libffi.6.dylib" "$LOAD_PATH/libffi.6.dylib" "$PRODUCT_NAME"
以上參數(shù)根據(jù)實(shí)際情況修改。
還有因惭,子模塊的依賴也是需要修改的岳锁。如:
PRODUCT_NAME=$PRODUCT_PATH/libcroco-0.6.3.dylib
install_name_tool -change "$INSTALL_PATH/glib/lib/libglib-2.0.0.dylib" "$LOAD_PATH/libglib-2.0.0.dylib" "$PRODUCT_NAME"
install_name_tool -change "$INSTALL_PATH/gettext/lib/libintl.8.dylib" "$LOAD_PATH/libintl.8.dylib" "$PRODUCT_NAME"
PRODUCT_NAME=$PRODUCT_PATH/libharfbuzz.0.dylib
install_name_tool -change "$INSTALL_PATH/glib/lib/libglib-2.0.0.dylib" "$LOAD_PATH/libglib-2.0.0.dylib" "$PRODUCT_NAME"
install_name_tool -change "$INSTALL_PATH/gettext/lib/libintl.8.dylib" "$LOAD_PATH/libintl.8.dylib" "$PRODUCT_NAME"
install_name_tool -change "$INSTALL_PATH/freetype/lib/libfreetype.6.dylib" "$LOAD_PATH/libfreetype.6.dylib" "$PRODUCT_NAME"
install_name_tool -change "$INSTALL_PATH/graphite2/lib/libgraphite2.3.dylib" "$LOAD_PATH/libgraphite2.3.dylib" "$PRODUCT_NAME"