天天看點

《iOS開發進階》觀後-上篇(輔助工具篇)

簡介

  • 本篇主要内容是ios開發中常用的輔助工具總結,分為目前已使用輔助工具和将要使用工具二個方面,在此過程中還會涉及一些相關的打包腳本,持續化內建等等。

前言

  • 由于篇幅問題,會分三篇描述對應不同内容。輔助工具,底層原理,開發中要注意問題三個方面,談談對應的總結。本人覺得書隻是一個索引,特别對于技術類書籍,基本都是通過書籍引入一些觀點,然後在通過其它第三方途徑進行擴充。是以本文描述内容不一定就是書本内容,會與自身實踐經驗,還有部分内容精簡和拓展。有些基礎概念第三方描述已足夠詳細,執行個體也足夠詳細,本文僅僅提出一些個人總結了解,不在重複描述具體功能原理。
  • 文字不如圖檔直覺,是以先上一張本系列描述的觀點的思維導圖,梳理脈絡。紅色部分為本文内容梳理。
  • 《思維導圖連結(點我打開)最新版本》
《iOS開發進階》觀後-上篇(輔助工具篇)

目前使用輔助工具

1 CocoaPods、Carthage

  • CocoaPods 相信做IOS的必須用上也沒有什麼可以說的,而Carthage可以說與CocoaPods同類,但是有更具輕量級, 特别對于一些CocoaPods暫時未更新到的版本,使用Carthage生成庫更高效,并且不需要要引入各種依賴之類的。可以作為一種補充手段。
  • Carthage 參考《項目路徑》
  • Carthage 參考《如何使用Carthage管理iOS依賴庫》
  • Carthage 有個小坑,打包上傳AppStore要注意frameworks包含的類型,如動态庫中含有x86_64,i386...類型必須去除,會在這系列的其他篇幅細說内容。 參考《使用Embedded Framework(動态庫)打包釋出時遇到的錯誤,及解決方案》

2 Reveal

  • Reveal這個我從Xcode8版本就開始用了,其中在多本相關介紹IOS開發的說中都提及了,對于xcode自帶的UI工具,強太多太多了,這個對于所有UI層級都清晰描述,并且對代碼完全不需要修改。
  • Reveal 是一個界面調試工具。使用Reveal,我們可以在iOS開發時動态地檢視和修改應用程式的界面。它類似Chrome的“審查元素”功能,我們不但可以在運作時看到iOS程式的界面層級關系,還可以實時地修改程式界面,不用重新運作程式就可以看到修改之後的效果。
  • 如何下載下傳,如何破解,請自行百度。
  • 具體使用參考: 《iOS開發中內建Reveal》
  • 不建議采用參考文章的配置方法,可以使用全局軟斷點處理:
《iOS開發進階》觀後-上篇(輔助工具篇)
UIApplicationMain

expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void*)0)
           

3 json->model

  • 暫時找不到web版json轉oc模型的工具,所有找了一個開源轉換軟體極大簡化了複雜json轉模型問題,該軟體需要自己編譯。《碼雲-連結》

計劃引入輔助工具

1 xctool/xcbuild/xcodebuild

  • 書本有點過時,隻說了xctool做打包。實際上,xctool是谷歌的打包工具這沒錯,但是那是Xcode8之前,xcode8之後拆分為xctool和xcbuild。前者專注測試用來跑用測試用例,後者專注于打包,相比xcodebuild,增量打包速度據網友測試,有明顯優勢。但是在本人使用過程中,pod引入的部分第三方庫會有檔案丢失問題,相比xcodebuild相容性确實差了點。《xcbuild可用性分析報告 》
  • 打算有時間的話,會寫寫單元測試,采用xctool做持續測試內建。
  • 這是公司的一款XX直播助手的打包腳本使用的是xcodebuild,含上傳蒲公英。DevelopmentExportOptionsPlist.plist和releaseBuild.sh都是放在工程根目錄,生成檔案按時間分類放在桌面。
DevelopmentExportOptionsPlist.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>teamID</key>
	<string>6MQB4*****</string>
	<key>method</key>
	<string>development</string>
	<key>compileBitcode</key>
	<false/>
	<key>uploadSymbols</key>
	<true/>
	<key>provisioningProfiles</key>
	<dict>
		<key>com.*.*</key>
		<string>*</string>
	</dict>
</dict>
</plist>

           
releaseBuild.sh


#工程名
project_name=*****

#打包模式 Debug/Release
development_mode= Debug

#scheme名
scheme_name=****

#plist檔案所在路徑
exportOptionsPlistPath=./DevelopmentExportOptionsPlist.plist

buildTime=$(date +%Y%m%d-%H%M)
#導出.ipa檔案所在檔案夾路徑
exportFilePath=~/Desktop/$project_name-ipa/${development_mode}-${buildTime}
	
#導出.ipa路徑想
exportIpaPath=${exportFilePath}/${project_name}.ipa

#上傳描述
PgyerUpdateDescription=${1:- }
PgyerUKey="***"
PgyerApiKey="***"

#計時
SECONDS=0

echo '*** 正在 清理工程 ***'
xcodebuild \
clean -configuration ${development_mode} -quiet  || exit 
echo '*** 清理完成 ***'


echo '*** 正在 編譯工程 For '${development_mode}
xcodebuild \
archive -workspace ${project_name}.xcworkspace \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath build/${project_name}.xcarchive -quiet  || exit
echo '*** 編譯完成 ***'


echo '*** 正在 打包 ***'
xcodebuild -exportArchive -archivePath build/${project_name}.xcarchive \
-configuration ${development_mode} \
-exportPath ${exportFilePath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
-quiet || exit

# 删除build包
if [[ -d build ]]; then
    rm -rf build -r
fi

if [ -e $exportFilePath/$scheme_name.ipa ]; then
    echo "*** .ipa檔案已導出 ***"
    cd ${exportFilePath}
    echo "*** 開始上傳.ipa檔案 *** ${exportIpaPath}"
    #此處上傳分發應用
    curl -F "[email protected]${exportIpaPath}" -F "updateDescription=${PgyerUpdateDescription}" -F "uKey=${PgyerUKey}"  -F "_api_key=${PgyerApiKey}" https://www.pgyer.com/apiv1/app/upload --progress
		echo "*** .ipa檔案上傳成功 ***"
else
    echo "*** 建立.ipa檔案失敗 ***"
fi
echo "*** 打包完成 *** Total time: ${SECONDS}s"

           

2 ImageOptim

  • ImageOptim是個GUI,他實際上調用了很多指令行程式來實作壓縮。其使用了多個圖檔庫 PNGOUT, AdvPNG, Pngcrush, OptiPNG, JpegOptim, MozJPEG, jpegtran, Gifsicle and SVGO......,會選最優圖檔,以減小體積。《png 圖檔壓縮工具ImageOptim是如何壓縮圖檔的?》
  • 圖檔壓縮對APP大小體積有十分十分明顯影響,是以這部分也是要抽時間去做處理。

原文:http://raychow.linkfun.top/2018/01/07/archives/1_ios/2017-section-1/index/

版權聲明:本文為CSDN部落客「weixin_34200628」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34200628/article/details/92404404