1. 程式人生 > >關於引入pods的iOS專案使用shell指令碼編譯的問題與探索

關於引入pods的iOS專案使用shell指令碼編譯的問題與探索

 由於自己所在公司是做生成平臺的所以app自動打包是必要的而xcode和commandlinetools確實也提供了這樣的功能,在沒有使用pods的時候build一個project很簡單,但是引入pods專案後,在build workspace的時候就出現了這樣或者那樣的問題了,其根本原因還是引數的問題
先貼一段指令碼:
#! /bin/bash
#Program:
#    在git上拉取最新分支,建立新的分支,替換資原始檔,打包,刪除分支

#工程路徑
proj_dir=$1

cd ${proj_dir}

#echo "reset --  hard"
#git reset --hard
#mecho "pull 新程式碼" #git pull #這裡呼叫了Python專案對圖片素材進行處理然後將執行結果寫入到iOSImageLoader.txt #python ${base_dir}/iosImageLoader.py ${ic_launcher} #${splash} "tmp_"${ipafilename} ${ic_title} ${ipafilename} ${h_img_0} ${h_img_1} ${h_img_2} #${h_img_3} ${h_img_4} &>iOSImageLoader.txt #image_result=`awk 'END {print}' iOSImageLoader.txt`
#echo $image_result #判斷素材的替換結果成功繼續失敗退出 #if [ $image_result = "ok" ];then #echo '------ 處理素材完成 ------' #else #echo '------ 處理素材出錯 ------' #exit #fi echo "**********************" echo "***開始build app檔案***" echo "**********************" echo '------------- 清理xCode快取 -----------' xcodebuild clean -configuration Release echo
'------------- 清理xCode快取完畢 -----------' mecho '------------- 開始build專案程式碼 -----------' #這一句是引入pods前編譯project專案的指令碼 #xcodebuild -target "$targetName" -configuration Release -sdk "iphoneos8.3" CODE_SIGN_IDENTITY="iPhone Distribution:***" PROVISIONING_PROFILE="***" #這一句是引入pods後的指令碼 xcodebuild -workspace $(PWD)/***.xcworkspace -scheme "***" -configuration 'Release' ONLY_ACTIVE_ARCH=NO CONFIGURATION_BUILD_DIR=$(PWD)/build/Release-iphoneos OBJROOT=$(PWD)/build SYMROOT=$(PWD)/build -sdk "iphoneos8.3" CODE_SIGN_IDENTITY="簽名" PROVISIONING_PROFILE="簽名檔案對應的UUID" mecho '------------- build專案程式碼完畢 -----------' #build出來的靜態報和app檔案路徑 #releaseDir為輸出路徑,ipafilename為app名稱 appfile=${releaseDir}/${ipafilename}.app echo '********************' echo '***開始打ipa渠道包****' echo '********************' /usr/bin/xcrun -sdk "iphoneos8.3" PackageApplication -v "$appfile" -o "$ipapath" --embed ${basedir}"***.mobileprovision"
一般情況下問題大多數出現在 “xcodebuild -workspace $(PWD)/***.xcworkspace -scheme "***" -configuration 'Release' ONLY_ACTIVE_ARCH=NO CONFIGURATION_BUILD_DIR=$(PWD)/build/Release-iphoneos OBJROOT=$(PWD)/build SYMROOT=$(PWD)/build -sdk "iphoneos8.3" CODE_SIGN_IDENTITY="簽名" PROVISIONING_PROFILE="簽名檔案對應的UUID"”這一句中的幾個引數 他們是 ONLY_ACTIVE_ARCH 、CONFIGURATION_BUILD_DIR、OBJROOT SYMROOT。


因為這幾個引數在之前的方法中不需要加入也可以正常編譯,首先我們看一下ONLY_ACTIVE_ARCH這個引數,如果你的專案支援A6架構的話(armv7s)在編譯的時候要將值設定成NO, 然後CONFIGURATION_BUILD_DIR這個引數要特別關心一下在build project是不輸入這個引數預設的build檔案都在專案目錄的build目錄中而在build workspace是這個一定要設定一下否則不方便找build出來的app檔案和靜態包檔案,SYMROOT、OBJROOT也要設定一下而且最好設定成$(PWD)/build "這裡用(pwd)比較安全否則可能出現pod安裝的某些庫編譯link報錯。
目前我發現的問題基本就這些!還希望經驗豐富的前輩們指教。

相關推薦

關於引入pods的iOS專案使用shell指令碼編譯的問題探索

由於自己所在公司是做生成平臺的所以app自動打包是必要的而xcode和commandlinetools確實也提供了這樣的功能,在沒有使用pods的時候build一個project很簡單,但是引入pods專案後,在build workspace的時候就出現了這樣

linux 下的shell 指令碼基礎變數

一、shell 指令碼基礎知識         在電腦科學中,Shell俗稱殼(用來區別於核),是指“為使用者提供操作介面”的軟體(命令解析器)。它類似於DOS下的command.com和後來的cmd.exe。它接收使用者命令

Mac 用shell指令碼編譯安裝openssl for Mac and iOS

Mac shell編譯安裝openssl for Mac and iOS 想做一個ios加密專案,用到openssl,故用指令碼傻瓜式下載、編譯、安裝,shell指令碼改自https://gist.github.com/armadsen/b30f352a8d6

shell指令碼檔案判斷相關的指令

-e filename 如果 filename存在,則為真 -d filename 如果 filename為目錄,則為真 -f filename 如果 filename為常規檔案,則為真 -L filename 如果 filename為符號連結,則為真

簡單shell指令碼日誌重定向輸出

linux crontab定時任務: */5 * * * * flock -xn /tmp/kettle_job_sjgz_server.lock -c '/bin/bash /opt/pdi-ce-6.1.0.1-196/kettle_job_sjgz_server.s

shell 指令碼的講解 應用

shell指令碼程式設計 作用:通過命令列解析的方式,自動執行設定好的程式或命令程式碼。(若將指令碼掛到定時任務中,就會自動在非工作時間裡自動觸發執行程式)   Shell指令碼檔案以“.sh”結尾 規範的Shell指令碼第一行會指出由哪個程式(直譯器)來執行指令碼中的內容。在linux b

基於Shell指令碼的Linux下Javaweb專案一鍵部署

剛買到伺服器的時候想把專案部署上去時,經常會用到各種scp、unzip之類一大堆的命令。雖然整個流程不是特別麻煩,不過學了一些Shell的命令知識之後我發現這個過程還是有優化的空間,於是大概花了幾個小時完成了這樣一個自動部署的指令碼。 首先要解決的問題是,命令如何在遠端伺服器上執行,因為之前每次

Shell指令碼構建Docker 半自動化編譯打包釋出應用

Docker 釋出的方式為實現DevOps(自動化運維,需要配置 程式碼管理工具如Git的hook來實現提交編譯、打包、釋出等一系列事件控制)提供了諸多方便,輔助於Shell指令碼可以很好的配合起來。Docker映象可以通過自動化編譯,也可以通過匯入映象的方式來獲得。本文的題目叫:Shell指令

linux shell 指令碼【1】 ---- echo printf 用法

終端列印的常用命令有 echo 和 printf 兩種。 先說基本用法: echo: 1. echo Hello Word ! 命令列輸出:Hello Word ! 2. echo 'Hello Word !' 命令列輸出:Hello Word ! 3. echo

linux shell 指令碼【3】 ---- 重定向 tee 命令

1.重定向: echo "ABCD"  > temp.txt 將ABCD寫入到temp.txt中 echo "ABCD" >> temp.txt 講ABCD追加到temp.txt中 其中  > 相當於 1>

Linux命令列shell指令碼程式設計大全(二)

十一、處理使用者輸入 命令列引數 讀取引數: $0是程式名,$1是第一個引數,$2是第二個引數,以此類推,直到第9個引數$9。當引數個數超過10以後,需要在變數數字周圍加上花括號,如${10},如果輸入到命令列的引數是字串且含有空格,需要使用引號。 #! /bin/bash echo

Linux命令列shell指令碼程式設計大全(一)

一、基本 bash shell命令 建立檔案 : touch 連結檔案:符號連結:是一個實實在在的檔案,兩個通過符號連結在一起的檔案,彼此的內容並不相同。使用ln -s命令。 硬連結:會建立獨立的虛擬檔案,其中包含了原始檔案的資訊及位置。但他們從根本上而言是同一個檔案。原始檔案必須事

Linux命令列shell指令碼程式設計大全(三)

十二、呈現資料 輸入和輸出     標準檔案描述符                  0 STDIN 標準輸入   &n

運維shell指令碼

運維工作內容 負載均衡GSLB 方式 輪詢 ip hash:這樣的話由於hash值是一樣的,那麼伺服器可以為使用者做快取 權重:按照伺服器能力,權重 業務運營支援系統BOSS 例如:計費、結算

《Linux命令列shell指令碼程式設計大全》讀書筆記————第三章 基本的bash shell命令

本章內容 1、使用shell 2、bash手冊 3、瀏覽檔案系統 4、檔案和目錄列表 5、管理檔案和目錄 6、檢視檔案內容   3.3 bash手冊 命令: man  xterm  作用:檢視檢視xterm使用者手冊 man命

《Linux命令列shell指令碼程式設計大全》讀書筆記————第一章 初識Linux shell

本章內容 1、什麼是Linux 2、Linux核心的組成   1、1 什麼是Linux Linux課劃分為以下四部分 a)Linux核心 b)GNU工具 c)圖形化桌面環境 d)應用軟體   1.1.1 深入探究Linux核心

shell指令碼中的函式shell

shell指令碼中的函式與子shell 原文https://www.jianshu.com/p/7db79d7997b5 函式 函式的使用 bash中也有函式。一個函式就是一個子程式,是用於實現一串操作的程式碼塊。bash中的函式的形式如下: functi

shell指令碼學習第四彈-管道IO重定向

shell指令碼學習第四彈-管道與IO重定向 一、IO介紹 什麼是IO?簡單的來說,IO就是輸入輸出;在unix裡面,我們必須要標準輸入,標準輸出和標準錯誤。我們可以用程式執行過程來更明顯說明:程式的輸入就是標準輸入,程式處理完之後,輸出結果就是標準輸出,或者報錯就是標準錯誤。

shell指令碼中的讀檔案(while read line)寫檔案(here document)

shell指令碼中如何讀取外部檔案並進行相關操作呢?正規化如下,是要背滴: while read line; do process $line done < file 如何在寫中將內容寫入新檔案呢,要用到here document,一種特殊的重定向技術,小范式如下,也

SHELL指令碼簡單的賦值遞增

Count=`expr $Count + 1`;#可以在各種shell執行,其他類C的寫法只能在指定的bash版本執行; 賦值不能帶$, 帶$相當於字串常量了;執行指令碼參考如下 #!/bin/sh Count=1; while [ 1 -lt 2 ] do Count=`expr $Count