iOS小記--libtool: can't locate file for: -lPods-xxx

20190314日更新:

還是.framework的打包問題,因為framework中用到第三方庫,第三方庫通過Cocoapods引入,打包時發(fā)現(xiàn)在Xcode中編譯和通過xcodebuild -target xxx命令編譯效果不同,通過-target命令會報錯,如圖,我這里時找不到依賴的protobuf的文件。

屏幕快照 2019-03-14 17.55.27.png

多方嘗試之后,發(fā)現(xiàn)在項目依賴中把libPods-xxx.a的link移除。通過命令行可以編譯成功。目前不明白原理,先將方法記錄在此。


以下是原文:

先說下我遇到的情況,需求是將一個包含cocoapods的framework打成混合的framework,這里用到lipo -create,有很多優(yōu)秀的博客都提到了如何打包的問題,同時還提到了一種更加方便的方式,使用Aggregate(我的坑也就是這里來的)。



  • 填坑過程不再贅述,這里貼一下報錯信息。標(biāo)題里是我通過百度搜索的關(guān)鍵字,但是我運(yùn)氣不太好,沒能找到有效的答案。
屏幕快照 2017-10-08 14.41.33.png
  • 原因
    說起來其實很簡單,還記得在做xcodebuild打包的時候有一句話,如果項目包含workspace,請使用-workspace關(guān)鍵字替代-target。是的,問題就是這么簡單,前文博客里提供的腳本是針對一般的framework打包的,并沒有使用workspace,而我的項目因為用到了cocoapods,所以悲劇了。

  • 后記
    后面在build過程中還有遇到一個路徑不對導(dǎo)致的報錯問題,修改路徑成有效路徑就好。貼一下修改之后的腳本,適用于帶有.xcworkspace的項目。

# Sets the target folders and the final framework product.

# 如果工程名稱和Framework的Target名稱不一樣的話,要自定義FMKNAME

# 例如: FMK_NAME = "MyFramework"

FMK_NAME=${PROJECT_NAME}

# Install dir will be the final output to the framework.

# The following line create it in the root folder of the current project.

INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework

# Working dir will be deleted after the framework creation.

WRK_DIR=${SRCROOT}/build

DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework

SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework

# -configuration ${CONFIGURATION}
# CONFIGURATION_BUILD_DIR=xxx
# Clean and Building both architectures.
# 適用于帶有.xcworkspace ,否則請查看:(http://yzlyty.github.io/2016/11/22/create-a-framework-and-bundle-containing-resources-for-ios-oc/)
xcodebuild -configuration "Release" -workspace "${FMK_NAME}".xcworkspace -scheme "${FMK_NAME}" -sdk iphoneos clean build CONFIGURATION_BUILD_DIR=${WRK_DIR}/Release-iphoneos

xcodebuild -configuration "Release" -workspace "${FMK_NAME}".xcworkspace -scheme "${FMK_NAME}" -sdk iphonesimulator clean build CONFIGURATION_BUILD_DIR=${WRK_DIR}/Release-iphonesimulator

# Cleaning the oldest.

if [ -d "${INSTALL_DIR}" ]

then

rm -rf "${INSTALL_DIR}"

fi

mkdir -p "${INSTALL_DIR}"

cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"

# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.

lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"

rm -r "${WRK_DIR}"

open "${INSTALL_DIR}"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,094評論 25 709
  • 項目組件化、平臺化是技術(shù)公司的共同目標(biāo),越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件,一方面使項目架構(gòu)...
    swu_luo閱讀 22,848評論 0 39
  • 靜態(tài)庫與動態(tài)庫的區(qū)別 首先來看什么是庫,庫(Library)說白了就是一段編譯好的二進(jìn)制代碼,加上頭文件就可以供別...
    吃瓜群眾呀閱讀 12,335評論 3 42
  • 春節(jié)回了趟老家,生我養(yǎng)我的地方??傆X得故鄉(xiāng)的云,山,水依舊拍不夠,相冊里存了好多,這次回去又拍了好多,還是原來的景...
    丹增索南丶閱讀 441評論 15 5
  • 早晨抽到這張牌,看了看。一直到晚上才寫日記。 【教皇】牌上的教皇威嚴(yán)的坐在寶座上,左手舉著權(quán)杖,右手煞有介事的指向...
    LULU魯魯閱讀 339評論 0 0

友情鏈接更多精彩內(nèi)容