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 就是毫无留情的把本地旧数据库直接删掉,重新建立新的数据 ...
随机推荐
- python 之Entry
# Tkinter教程之Entry篇 # Entry用来输入单行文本 from tkinter import * root = Tk() # 创建entry Entry(root, text='inp ...
- React的一些原则
做React的一些原则, ① 我的交互,总是改变的是数据,而不是视图,视图是React来负责更新的,数据驱动开发,我永远都在改数据而不是控制视图 这个图的做法是先获取list数据,再等用户点击 查看详 ...
- MyEclipse10破解 运行run.bat闪退 亲自试验
找到MyEclipse安装的自带的jdk(方法是打开MyEclipse,依次window->Preferences->Java->Installed JRES找到默认路径,我的是:自 ...
- 日常笔记5C/C++快速入门一些基础细节
一.变量数据类型 int大致范围:-210^9~210^9 long long大致范围:-910^18~910^18,对于长整型来说,如果赋值大于2^31-1的初值,就需要在初值后面加上LL,否则会编 ...
- Linux性能优化实战学习笔记:第五十五讲
一.上节回顾 上一节,我们一起学习了,应用程序监控的基本思路,先简单回顾一下.应用程序的监控,可以分为指标监控和日志监控两大块. 指标监控,主要是对一定时间段内的性能指标进行测量,然后再通过时间序列的 ...
- Redis数据结构及常用命令(草稿)
通用命令 数据类型 string 字符 list 列表 set 集合 zset 有序集合 hash 散列(字典中的字典) bitmap 位图 hyperloglog
- springboot kafka生产者
pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...
- HUSKY CLOCK1.0上线啦!
有人需要HUSKY CLOCK1.0下载资源的请联系1335415335@qq.com! 感谢支持,您的认可是我们前进的动力!
- POJ 3132 DP+素数筛
Sum of Different Primes Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3684 Accepted ...
- Deep Learning专栏--强化学习之MDP、Bellman方程(1)
本文主要介绍强化学习的一些基本概念:包括MDP.Bellman方程等, 并且讲述了如何从 MDP 过渡到 Reinforcement Learning. 1. 强化学习基本概念 这里还是放上David ...