『壹』 macos開發,在程序裡面執行shell腳本
上一篇 我寫了在xcode裡面添加 run script 來執行腳本,可是打包之後發現,只有用 xcode 運行的時候才會執行這個 shell 命令,查了很多資料,最後我覺得應該是我理解錯了,這里的 run script 很可能只是為了方便自動化打包之類的場景適用,而並不是真正的運行時執行腳本。那該怎麼實現呢?
參閱博客一
參閱博客二
參閱博客三
但是有一個問題,因為腳本是:
adb需要管理員許可權,所以一直提示沒有許可權執行腳本。
查了一下資料,可以用 with administrator privileges ,這時候又報"用戶名密碼不正確",不知道為啥,最終拋棄了 NSTask ,找到了 這個庫 ,它自動幫我們處理許可權問題,最終:
按理說這樣應該就沒啥問題了,可是這是由又報 someting went wrong:6005 ,又是一頓google, 最終發現 :
『貳』 Xcode使用Run Script腳本
由於某次上線,忘記修改Display Name,鑄成大錯。
Xcode可以使用腳本,在打包時修改Display Name、Bundle Id等信息。
一、在Build Phases添加腳本
1.2 自增長Build Number
二、在Scheme里添加腳本
在這里寫可以不用寫判斷Debug或Release模式
三、錯誤
可能會出現錯誤:
編譯前clean一下,就可以解決了。
這是由於PRODUCT_BUNDLE_IDENTIFIER並沒有改過來導致的。
所以在打包上傳之前,需要clean一下。
參考資料:
『叄』 Xcodebuild & xcuitest
充分利用Xcodebuild來完善、掌控、加速你的iOS UI自動化測試吧!
Xcode8之前,想要運行單元測試和UI測試,都需要進行編譯。事實上集成到自動化環境中,在Jenkins節點等服務機上編譯整個項目(就像打包app)是十分耗時且依賴配置的。
Xcode8的發布,帶來了iOS測試和開發的xcodebuild的一些新特性:
build-for-testing & test-without-building
就是把UITest的編譯和運行測試環節可以分開,不僅如此,編譯的結果可以帶到其它機器上直接執行測試流程哦。
當你的UITest腳本趨於穩定的時候,就可以考慮並發測試啦。build once,test anywhere!
2.1編譯(創建xctestrun文件)
該命令會編譯app並在DerivedPath文件夾中生成xctestrun文件。
可以在DerivedPath這個文件夾中找到xctestrun文件
2.2直接執行UI自動化測試
destination 參數可以指定多個
類似:
執行該命令會看到命令行終端給出提示:
默認是並發地使用多個目標來展開測試。
增加-disable-concurrent-destination-testing參數可以是測試在這些目標上串列進行。
最大的真機並發數量並沒有限制。
真機和模擬器的最大並發測試數量都可以通過對應的參數來指定。
-maximum-concurrent-test-device-destinations
-maximum-concurrent-test-simulator-destinations
那麼resultBundlePath指定的路徑就是測試結果數據所在的文件夾啦。
結合 xchtmlreport 命令可以產生多設備測試結果報告。(點擊可以打開項目地址)
在執行xcodebuild test或者test-without-building命令的時候,修改默認的-resultBundlePath 參數,將測試記錄指定到自己想要的目錄yourDir(上文中就是/Users/lipeng/Desktop/TestResult/GuijinshuDev)
安裝:
使用:
就可以得到更加適合非專業人士閱讀的UI自動化測試報告了:
極力推薦這個測試報告生成工具,可以查看多個機型的匯總報告。(相對於 xcpretty 更適合生成xcuitest報告)
『肆』 xcode使用方法
xcode使用方法:(以xcode5為例)
1,下載安裝好xcode5後,就可以開始ios開發之旅了。首先打開xcode。選擇新建一個xcode項目。
『伍』 iOS開發-需要了解的Shell腳本語法
Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設計語言。Shell 腳本(shell script),是一種為 shell 編寫的腳本程序。在iOS開發中,我們通常編寫一些自動化的腳本文件,來提高我們的生產效率,其本質就是通過Shell腳本對一些 xcodebuild , xcode-select , xcpretty , xcrun 等指令的封裝。本篇文章,我們就針對 Shell 腳本的語法,做一些羅列,以輔助我們去完成一些自動化封裝。
執行腳本
.sh 文件為 Shell 腳本文件格式,通過 sh 指令執行腳本文件
執行結果:
1.通過 echo 輸出變數時,需要使用 $ 或者 ${} 修飾
2. (重點)定義變數時,等號之間不能有空格,不然會誤認為變數為一個指令
3.可以直接修改 name 變數的值,即當前 name 默認為 readwrite 許可權
4.我們給 _var 用 readonly 修飾後,再修改值會拋出異常
執行結果:
執行結果:
執行結果:
執行結果:
$@ 和 $* 都是輸出所有參數,前者是 "$1" "$2" "$3" "$4" ,後者是 "$1 $2 $3 $4"
執行結果:
注意:條件表達式要放在方括弧之間,並且要有空格,例如: [$a==$b] 是錯誤的,必須寫成 [ $a == $b ] 。
關於文件檢測運算符,這里還是都羅列一下吧,比較重要:
執行結果:
執行結果:
執行結果:
執行結果:
2.有參數
執行結果:
注意: $10 不能獲取第十個參數,獲取第十個參數需要 ${10} .
使用 man 查詢 指令文檔
比如我們想查看 xcodebuild 指令下都有哪些操作,直接在終端執行:
當我們不清楚某一個指令下的操作時,就可以通過 man 查詢,然後輔助我們來編寫 Shell 指令。
在iOS下,了解下這些 Shell 語法就足夠了,已經可以幫助我們完成大部分的 Shell腳本 的編寫或者閱讀別人的 Shell 源碼。不需要記憶,簡單看下就可以。
『陸』 Xcode編譯時執行sh腳本報」許可權被拒絕「怎麼辦
這是sh腳本沒有加許可權導致的。
1、開終端進入腳本文件所在的目錄
2、輸入命令:
chmod 755 scriptname.sh
scriptname.sh就是你加許可權的sh腳本文件名。
『柒』 xcode 怎樣運行開發的程序
iPhone的開發現在大家還是在摸索的階段,當然不排除有人已經進階。
現在就簡單得介紹一下默認創建的工程的分析。 開發環境:Mac OS X10.5, XCode 實例代碼:默認項目 創建默認項目後,就可以進行 build,然後就可以在模擬器上運行,那麼,這個最基本的程序的啟動與執行流程 是什麼樣子的呢,
那麼現在來分析一下
1、程序入口點 創建的項目中,在XCode 的 Other Classes中,有一個 main.m的文件,入口點就在這里, 方法: int main(int argc, char * argv[]) 就是整個程序的入口,和 C語言一樣
2、主程序設置 main方法中有一個 UIApplicationMain(xx, xx, xx, xx,); 這個方法調用,關鍵就在這里,其中最後一個 參數的意義就是 DelegateClass,這個就是指定的代理類的名稱,代理的意思就是,執行這個方法後, 系統會裝載指定的類,並且執行相應的方法,進入循環中。
3、代理類 Delegate 代理類 基本上名稱是 XXXAppDelegate,其中需要定義 - (void) *)application 方法,該方法的含義是,當系統裝載完成 程序時,執行該方法操作
4、applicationDidFinishLaunching 裝載 顯示界面 創建 Window, 裝載 MyView,創建並顯示
5、MyView 自定義 View,如果使用 Interface Builder 進行設計的話該默認文件幾乎無用,以下介紹自定義View -(void)init 方法,重載該方法,可以進行各種屬性設置 -(void)drawRectCGRect)rect 方法,這個類似於 J2ME 中 Canvas的 paint方法,在該方法內部可以進行繪制操作
6、完畢
『捌』 Xcode打開終端(Terminal)進行git 相關操作
iOS 開發,新電腦,新環境。用Xcode,git,但是不喜歡Xcode自帶的source tree,又但是每次git pull 、push相關操作都得把項目文件拖進終端,這樣就麻煩了很多。
所以記錄了Xcode迅速打開終端(Terminal)
1.新建個.sh文件 ,執行一下腳本
#!/bin/sh
if [ -n "$XcodeProjectPath" ]; then
open -a Terminal "$XcodeProjectPath"/..
else
open -a Terminal "$XcodeWorkspacePath"/..
fi
2.打開 Xcode 的 Behavior 界面, 如下所示:
然後點擊如上圖的加號, 出現新建的 Behavior:
選擇你剛剛新建的.sh文件,如果文件是灰色的,不可選擇點擊,打開終端,執行chmod 777 你的.sh文件
chmod +x your_script_name.sh 這玩意好像不起作用,大家注意下
然後添加 勾選run,前面設置個快捷鍵 command+T,就完成了
『玖』 怎麼查看 xcode build phase 腳本執行
你要確認下www用戶,是否有許可權執行這個腳本
我給你明確一點,我在之前公司,用php做過安卓自動打包系統,是沒任何問題的
但具體代碼因為已經離開公司了,所以也就沒有了
你需要把安卓源文件整個文件夾許可權都改為777
然後sh、php文件都要有777許可權
然後如果還不行 要輸出報錯信息
才能進一步分析
『拾』 iOS專項測試雜談
最近稍微嘗試了一些iOS專項測試:壓力測試、CPU、內存、流量、耗電量測試等等,本文就簡單聊聊iOS專項測試。
一、壓力測試
iOS壓力測試推薦github上的ui-auto-monkey。使用簡介如下:
1. 安裝:xcode打開你的ios項目 — Proct — Profile — UI Automation,然後導入UIAutoMonkey.js這個腳本。
2. 修改配置信息:
3. 執行該腳本即可;
4. 它還具有一些額外功能包括:UI holes、application not responding等等。
二、CPU、內存、流量、耗電量測試
方法1:採用第三方framework,比如GT.framework,嵌入到應用中。
該方法的優點是:數據可以導出分析、可以圖表化展示、而且功能強大,CPU、內存、流量、耗電量、平滑度等等都能分析;缺點是需要源碼、並且重新打包app。因此該方法不能用來做競品分析。
方法2:instruments
Xcode自帶的instruments功能強大,可以檢查內存、內存泄漏、time profile、耗電量、流量、CPU等等;另外,開發者模式可以用來模擬弱網路、錄制耗電量和流量數據。
該方法的缺點就是很多數據不能導出分析,采樣得到的數據只能通過instruments自身進行分析;耗電量數據只是energy usage level,精確度數據不直觀。也很不方便用來做競品分析。
方法3:攝像+分析
iOS競品測試,主要是通過攝像然後進行時間分析的方法來進行。
方法3:通過tcpmp進行流量分析,可以用於競品分析。
歡迎訪問我的博客: www.dzwanli.com.cn