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

2018-01-13 11:06:42来源:oschina作者:RayChow_周小睿人点击

分享
简介
本篇主要内容是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》

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

输入图片说明


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"?>



teamID
6MQB4*****
method
development
compileBitcode

uploadSymbols

provisioningProfiles

com.*.*
*


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/

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台