iOS相关
1. fastlane
a collection of tools that help you automate building and releasing iOS and Android apps。用中文说,就是用来构建打包的工具。可支持iOS和Android操作系统。fastlane是用Ruby语言编写的一套自动化工具集和框架,每一个工具实际都对应一个Ruby脚本,用来执行某一个特定的任务,而fastlance核心框架则允许使用者通过类似配置文件的形式,将不同的工具结合在一起,从而形成一个个完整的自动化流程。
详细内容可看:自动化打包之Fastlane https://blog.csdn.net/kuangdacaikuang/article/details/80443515 。
举例:
desc "Build beta package and upload to xx.com"
#lane表示一个打包流程 例子中,此流程名叫build_for_beta。假设我们的App名叫myApp
lane :build_for_beta do
update_info_plist(
plist_path: "myApp/Info.plist",
display_name: "myApp_test"
) #设置plist中key1值为value1
set_info_plist_value(path: "./myApp/Info.plist",
key: "key1",
value: "value1") version_number = get_version_number(
xcodeproj: "./myApp.xcodeproj"
) # 打完包的产物都会以这个参数命名
myApp_archive_name = "myApp_v#{version_number}_beta"
end
2. info.plist
info.plist是应用app的配置文件,可以在此定义Bundle的版本号CFBundleShortVersionString,应用程序版本号CFBundleVersion,应用名称CFBundleDisplayName,启动图标CFBundleIcons,应用标识号CFBundleIdentifier,是否支持后台运行UIApplicationExitsOnSuspend,需要的权限等。以下info.plist里定义的app名叫:myApp,版本为5.1.0-300
<?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>CFBundleDevelopmentRegion</key>
<string>zh_CN</string>
<key>CFBundleDisplayName</key>
<string>myApp</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundleShortVersionString</key>
<string>5.1.0</string>
<key>CFBundleVersion</key>
<string>300</string>
<key>DEBUG</key>
<integer>1</integer>
<key>NSAppleMusicUsageDescription</key>
<string>是否允许访问媒体资料库?</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>是否允许访问蓝牙?</string>
</dict>
</plist>
3. /usr/libexec/Plistbuddy
plist是Mac种非常普遍的一种文件格式,类似xml,通过键值对的方式来进行一些配置。而PlistBuddy则是Mac自带的专门解析plist的小工具详情可参见:https://www.jianshu.com/p/2167f755c47e
使用plistbuddy输出及修改版本号,命令如下:
buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plist}") buildnum=$(expr $buildnum + 1) /usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}"
4. rvm
rvm是一个命令行工具,可以提供一个便捷的多版本Ruby环境管理和切换。
5. gem
gem是管理ruby程序的程序,类似python下的pip 或 Node.js 里的npm。
gemfile里定义应用依赖的第三方包,bundle根据该配置寻找这些包。
6. brew
homebrew简称brew,是Mac OSX上的软件包管理工具,类似linux里的apt-get / yum等。常用命令有:
brew update #更新homebrew的信息 brew outdated #查看需要升级的软件 brew upgrade xxx #指定升级某软件 brew upgrade #升级所有软件 brew cleanup
7. bundler & bundle
bundler是管理多版本gem的工具。bundle文件可以理解为资源文件包。我们将许多图片、文本文件组织在一起,打包成一个bundle文件,方便在其他项目中引用包内的资源。bundle是静态的,不参加项目编译,不包含可执行文件。
8. agvtool
版本和内部版本号码Key
分别指定市场和应用程序的内部版本。agvtool是一个命令行工具,它允许你这些数字自动递增到下一个最高号码或特定号码。更新及查看版本号命令为:
agvtool new-marketing-version <your_specific_version> agvtool what-marketing-version
// build
agvtool new-version -all 1.0.0
agvtool what-version
9. pod & CocoPods
- pod是用来管理iOS库的工具。
- CocoaPods是一个objc的依赖管理工具,而其本身是利用ruby的依赖管理gem进行构建的。通过CocoaPods我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本。
- podfile是一个规范文件,描述一个或多个项目目标依赖项。
- podfile.lock 文件是记录使用的第三方的版本号(只记录最后一次更新),在执行完pod install / update 后生成
5. 命令 pod install
- 如果 podfile.lock 文件不存在,会根据 podfile 文件安装第三方框架,并生成 podfile.lock 文件
- 如果 podfile.lock 文件存在,会根据 podfile.lock 文件的版本号来安装第三方框架,即便服务器中有最新的版本,通过 pod install 指令也不会安装最新的第三方框架,只会根据 podfile.lock 中记录的版本来安装
- 使用场景:
- 新创建工程,第一次引入pod库时。
- 修改了Podfile文件,添加或删除了所依赖的pod库时。
- 团队中新人拉取工程后获取pod库时。
- 团队中,不同开发者要同步对pod库的依赖时。
- 有人改变了依赖关系,删除或增加pod时。
- 有人执行了pod update,此时他的Podfile.lock文件中的跟踪版本就已经变更,此时,其他人只要pod install就能更新为和Podfile.lock文件中的版本。
- 如果Podfile和Podfile.lock的记录相冲突,Podfile文件中指定了低于Podfile.lock中记录的版本。会以Podfile文件为准,并在获取成功后更新Podfile.lock文件。
6. 命令 pod update
- 根据 podfile 文件安装第三方框架,将所有第三方框架更新到最新版本,并且创建一个 podfile.lock 文件覆盖掉原文件
10. Provisioning Profile
为了使测试版应用可以在真机上安装,我们就需要使用 Provisioning Profiles。
iOS相关的更多相关文章
- iOS 相关职位要求整理版
在拉勾上找了20家,BOSS直聘找了10家感兴趣的在招聘 iOS 程序员的公司,把职位要求整理了一下. 初创公司一般要求1年以上开发经验,成长型或者成熟型公司一般要求最低2年以上开发经验.这里针对的是 ...
- iOS相关教程
Xcode Xcode 7中你一定要知道的炸裂调试神技 Xcode 6和Swift中应用程序的国际化和本地化 iOS新版本 兼容iOS 10 资料整理笔记 整理iOS9适配中出现的坑(图文) Swif ...
- 苹果应用商店AppStore审核中文指南 分类: ios相关 app相关 2015-07-27 15:33 84人阅读 评论(0) 收藏
目录 1. 条款与条件 2. 功能 3. 元数据.评级与排名 4. 位置 5. 推送通知 6. 游戏中心 7. 广告 8. 商标与商业外观 9. 媒体内容 10. 用户界面 11. 购买与货币 12. ...
- APP被苹果APPStore拒绝的各种原因 分类: ios相关 app相关 2015-06-25 17:27 200人阅读 评论(0) 收藏
APP被苹果APPStore拒绝的各种原因 1.程序有重大bug,程序不能启动,或者中途退出. 2.绕过苹果的付费渠道,我们之前游戏里的用兑换码兑换金币. 3.游戏里有实物奖励的话,一定要说清楚,奖励 ...
- iOS开源库--最全的整理 分类: ios相关 2015-04-08 09:20 486人阅读 评论(0) 收藏
youtube下载神器:https://github.com/rg3/youtube-dl 我擦咧 vim插件:https://github.com/Valloric/YouCompleteMe vi ...
- Run Loop简介 分类: ios技术 ios相关 2015-03-11 22:21 73人阅读 评论(0) 收藏
做了一年多的IOS开发,对IOS和Objective-C深层次的了解还十分有限,大多还停留在会用API的级别,这是件挺可悲的事情.想学好一门语言还是需要深层次的了解它,这样才能在使用的时候得心应手,出 ...
- CocoaPods安装和使用教程 分类: ios技术 ios相关 2015-03-11 21:53 48人阅读 评论(0) 收藏
目录 CocoaPods是什么? 如何下载和安装CocoaPods? 如何使用CocoaPods? 场景1:利用CocoaPods,在项目中导入AFNetworking类库 场景2:如何正确编译运行一 ...
- Windows Unity ARKit发布到IOS相关设置及错误解决
Windows 版Unity安装: 考虑到在虚拟机中运行Unity比较卡,所以采用在Windows Unity上将项目发布好然后再复制到Mac虚拟机中通过XCode进行编译的方式. Unity版本为 ...
- iOS相关笔记
#协议[1] [2] @property (nonatomic, assign) id<EveryFrameDelegate> delegate; 表明,这个delegate是一个需要实现 ...
- iOS相关思考题
1.iOS如何应对APP版本升级,数据结构随之变化? 一般程序app升级时,数据库有可能发生改变,如增加表字段,增加表等. 此时有两种操作: 1 就是毫无留情的把本地旧数据库直接删掉,重新建立新的数据 ...
随机推荐
- C++——二维vector初始化大小方法
初始化二维vector,为r*c的vector,所有值为0.1.直接用初始化方法(刚开始没想到) vector<vector<int> > newOne(r, vector&l ...
- POJ3630-Phone List-(字典树)
一直没有学字典树,听起来很唬人,闲来无事找一道入门题做做. 字典树:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以 ...
- Excel-图表制作
柱形图:通常使用柱形图比较数据间的数量关系 折线图:使用折线图来反映数据间的趋势关系 饼图:使用饼图来表示数据间的分配关系 对图表进行刷选 再图表设计下的快速布局可以选择各种样式 迷你图 对某列单 ...
- Codeforces Round #604 (Div. 2) D、E、F题解
Beautiful Sequence Beautiful Mirrors Beautiful Bracket Sequence (easy version) Beautiful Sequence \[ ...
- 团队作业第五次—项目冲刺-Day7
Day7 part1-SCRUM: 项目相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 hunter--冲刺集合 团队名称 hunte ...
- Python安装(64位Win8.1专业版)
本文出处:http://www.cnblogs.com/leonwen/p/4700648.html 嗯,开始学Python. 我安装的是Python 2.7.10版本,安装的时候除了选了路径其他均n ...
- 在 Vue 中使用 装饰器 Decorator
Decorator 的语法还没有通过提案,所以项目中很少用.不过最近刚好有一个需求用到了. 装饰器的语法 http://es6.ruanyifeng.com/#docs/decorator 需求是,有 ...
- ORA-12528: TNS:listener: all appropriate instances are blocking new connections
Oracle问题:ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接 问题原始描述: ORA-12528: TNS:listener: all appropriate insta ...
- git 删除错误提交commit(删除敏感文件)
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch test/docs/456776898979.ap ...
- 【前端知识体系-CSS相关】CSS布局知识强化
1.实现两栏/三栏布局的方法? 表格布局 float + margin布局 inline-block布局 flexbox布局(兼容性的问题) 1.1 基础布局 <style> * { ma ...