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

  1. pod是用来管理iOS库的工具。
  2. CocoaPods是一个objc的依赖管理工具,而其本身是利用ruby的依赖管理gem进行构建的。通过CocoaPods我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本。 
  3. podfile是一个规范文件,描述一个或多个项目目标依赖项。
  4. 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。



 

posted @ 2019-08-07 14:08  myLittleGarden  阅读(361)  评论(0编辑  收藏  举报