《iOS开发进阶》观后-上篇(辅助工具篇)

简介

  • 本篇主要内容是ios开发中常用的辅助工具总结,分为目前已使用辅助工具和将要使用工具二个方面,在此过程中还会涉及一些相关的打包脚本,持续化集成等等。

前言

  • 由于篇幅问题,会分三篇描述对应不同内容。辅助工具,底层原理,开发中要注意问题三个方面,谈谈对应的总结。本人觉得书只是一个索引,特别对于技术类书籍,基本都是通过书籍引入一些观点,然后在通过其它第三方途径进行扩展。所以本文描述内容不一定就是书本内容,会与自身实践经验,还有部分内容精简和拓展。有些基础概念第三方描述已足够详细,实例也足够详细,本文仅仅提出一些个人总结理解,不在重复描述具体功能原理。

  • 文字不如图片直观,所以先上一张本系列描述的观点的思维导图,梳理脉络。红色部分为本文内容梳理。

  • 《思维导图链接(点我打开)最新版本》

输入图片说明

目前使用辅助工具

1 CocoaPods、Carthage

2 Reveal

  • Reveal这个我从Xcode8版本就开始用了,其中在多本相关介绍IOS开发的说中都提及了,对于xcode自带的UI工具,强太多太多了,这个对于所有UI层级都清晰描述,并且对代码完全不需要修改。

  • Reveal 是一个界面调试工具。使用Reveal,我们可以在iOS开发时动态地查看和修改应用程序的界面。它类似Chrome的“审查元素”功能,我们不但可以在运行时看到iOS程序的界面层级关系,还可以实时地修改程序界面,不用重新运行程序就可以看到修改之后的效果。

  • 如何下载,如何破解,请自行百度。

  • 具体使用参考: 《iOS开发中集成Reveal》

  • 不建议采用参考文章的配置方法,可以使用全局软断点处理:

输入图片说明

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 "file=@${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/

猜你喜欢

转载自my.oschina.net/u/3729367/blog/1606387