命令行工具打包

前言:

  iOS程序包分为“.app格式的二进制文件包”和“.ipa格式的渠道包”两种。xcodebuild 是一款用来打包 Xcode projects 或者 workspaces 的命令行工具。用xcodebuild把工程打成 app格式后,再用xcrun来签名和打成ipa格式的包。本篇文章简单讲解一下自己使用的app打包命令。

正文:

一、通过xcodebuild命令和xcrun命令打包

  xcodebuild命令和xcrun两个命令必需在xxx.xcodeproj或者xxx.xcworkspace所在的目录执行。

(1) xcodebuild

  shell编译工具,用xcodebuild把工程打成 app 格式,比如我们有个叫做hello的项目,xcodebuild命令如下:

xcodebuild -workspace hello.xcworkspace
           -scheme hello
           -derivedDataPath "./"
           -sdk iphoneos
           -configuration Release
           clean build

参数解释

  -workspace workspacename :指定 workspace 的名称。

  -scheme schemename:指定 scheme 的名称,编译 workspace 时是必须的。

  -derivedDataPath path:覆盖编译 workspace 的 scheme 时的结果数据存放的路径。

  -sdk [<sdkfullpath> | <sdkname>]:指定编译时所用的 SDK。参数可以是 SDK 的绝对路径,也可以是 SDK 的名称。

                     可以使用如下命令查看所支持的SDK : xcodebuild -showsdks .

  -configuration configurationname:当编译每个 target 时使用 configurationname 指定的配置。默认是Release的。

  CODE_SIGN_IDENTITY:选择签名的证书。

              可以用系统自带的工具“钥匙访问串”来查看名字,如果不带侧参数,那么在工程配置中一定要配置好证书以及授权文件!

  clean built:每次生成app之前都会清除掉旧的记录。

编译过程

  比如有个ios工程叫hello,它由两个project组成,一个是业务代码hello,一个是引入的第三方库Pods。project hello里

    project hello, 对应target hello

    project Pods, 对应 target XX1、XX2、XX3...

  那么,上面的xcodebuild命令会做如下的事情:

    (1)先clean掉project Pods对应的各个target XX1、XX2、XX3...

    (2)然后build project Pods对应的各个target XX1、XX2、XX3..., 生成xxx.a文件。

    (3)接下来build project Pods对应的target Pods-hello,生成libPods-hello.a文件。

    (4)最后build project hello对应的target hello(此时会检查钥匙串中对应的证书)

  === CLEAN TARGET XXX OF PROJECT Pods WITH CONFIGURATION Distribution ===

  === BUILD TARGET XXX OF PROJECT Pods WITH CONFIGURATION Distribution ===

  === BUILD TARGET Pods-hello OF PROJECT Pods WITH CONFIGURATION Distribution ===

  === BUILD TARGET hello OF PROJECT hello WITH CONFIGURATION Distribution ===

  xcodebuild会根据你的Xcode中的证书配置去钥匙串里,找你的工程里配置的签名证书。所以,一定要把证书安装在mac的钥匙串里(打包服务器一样),并且,Xcode的build setting中指定的Code Sign Identity与安装的证书一致。否则会报错:“No certificate matching ‘iPhone Distribution: XXXX‘: Select a different signing certificate for CODE_SIGN_IDENTITY, a team that matches your selected certificate, or switch to automatic provisioning.”。

  xcodebuild 执行成功之后,会在工程的根目录下产生一个build文件夹,在build/Distribution-iphoneos目录下就能找到生成的app文件。

(2) xcrun

  xcrun是ipa打包工具,用xcrun来对.app格式的包签名和打成ipa格式的包。下面用xcrun把第一步xcodebuild产生的.app文件生成.ipa文件:

xcrun -sdk iphoneos PackageApplication
      -v Build/Products/Distribution-iphoneos/hello.app
      -o `pwd`/Build/Products/hello.ipa 

参数解释

  -v 对应的是app文件的绝对相对路径

  –o 对应ipa文件的路径跟文件名,`pwd` 是当前路径的意思

二、对ipa包重签名

要先准备好配置文件EIMMyApp.mobileprovison,以及签名的plist格式的Entitilements文件。另外,要把对应的证书安装到钥匙串中。然后按照下面的5步运行就可以对.ipa包进行重签名了:

(1).ipa包解压成.app包:

   unzip eimqq.ipa ,生成Payload/myAppName.app

(2)移除老的 code signatures:

rm -r Payload/myAppName.app/_CodeSignature

(3)拷贝EIMMyApp.mobileprovison来覆盖原来的embedded.mobileprovision :

   cp EIMMyApp.mobileprovision Payload/myAppName.app/embedded.mobileprovision

(4)重签名:

codesign -f -v -s "iPhone Distribution: XXXX" --entitlements entitlements.plist Payload/myAppName.app

   (我们知道现在的签名都是根据plist格式的Entitlements文件来指定的)

(5)将.app包打包成.ipa包:

   zip -yr eimQQ.resigned.ipa Payload

时间: 2024-11-14 02:58:13

命令行工具打包的相关文章

java命令行工具打包

https://introcs.cs.princeton.edu/java/85application/jar/jar.html 自己写的manifest.mf注意: https://blog.csdn.net/neareast/article/details/8875342 (1)后缀名必须为.mf (2)文件内容的最后一行必须为空行(\n) java -jar -Dfile.encoding=utf-8 xx.jar D:\java_oj\ReadFileFromClassPath\targ

Vue命令行工具vue-cli

前面的话 Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用.该工具提供开箱即用的构建工具配置,带来现代化的前端开发流程.只需几分钟即可创建并启动一个带热重载.保存时静态检查以及可用于生产环境的构建配置的项目 .本文将详细介绍Vue命令行工具vue-cli 概述 Vue-cli是Vue官方提供的用于初始化Vue项目的脚手架工具.使用Vue-cli有以下几大优势 1.Vue-cli是一套成熟的vue项目架构设计,会跟着Vue版本的更迭而更新 2.Vue-cli提供了一套本地的热加载的

react.js 之 create-react-app 命令行工具系统讲解

react.js 教程之 create-react-app 命令行工具系统讲解 快速开始 npm install -g create-react-app create-react-app my-app cd my-app/ npm start 通过http://localhost:3000/查看你的app 使用 npm run build 编译打包程序 npm test 文件修改后测试,这部分内容后面讲 更新到最新版本 创建react app的主要分为两个包,一个包是create-react-a

GO实现简单(命令行)工具:sftp,文檔压解,RDS备份,RDS备份下载

GO实现简单(命令行)工具:sftp,文檔压解,RDS备份,RDS备份下载 轉載請註明出處:https://www.cnblogs.com/funnyzpc/p/11721978.html 内容提要: 1.远程连接linux执行sftp文件下载 2.window下文件解压缩(tar.gz.zip) 3.window下文件解压缩及带密码解压(zip) 4.window下调用阿里雲RDS api查询备份并下载 5.GO语言命令行工具技巧 首先,写这篇博文的一个出发点是:我无法在window的cmd命

MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具

这里向大家介绍一个新的生成T-SQL脚本的SQL Server命令行工具:mssql-scripter.它支持在SQL Server.Azure SQL DB以及Azure SQL DW中为数据库生成CREATE和INSERT T-SQL脚本. Mssql-scripter是一个跨平台的命令行工具,功能等同于SQL Server Management Studio中的Generate and Publish Scripts Wizard. 咱们能够在Linux.macOS和Windows上使用它

windows下的命令行工具babun

什么是babun babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令,他几乎可以取代windows的shell.用官方的题目说就是A Windows shell you will love! babun的几个特点 使用babun无需管理员权限先进的安装包管理器(类似于linux上面的apt-get或yum)预先配置了Cygwin和很多插件拥有256色的兼容控制台HTTP(S)的代理支持面向插件的体系结构可以使用它来配置你的gi

显示器 Linux 性能 18 (一个命令行工具传递)

对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因.我们已编写了最常使用的18个命令行工具列表,这些工具将有助于每一个Linux/Unix 系统管理员的工作.这些命令行工具能够在各种Linux系统下使用.能够用于监控和查找产生性能问题的解决办法.这个命令行工具列表提供了足够的工具.您能够挑选适用于您的监控场景的工具. 1.Top-Linux进程监控

附录一 6. 使用命令行工具

附录一 6. 使用命令行工具 在 Windows 的 Server Core 模式,由于没有图形界面,必须通过命令行配置 Windows 防火墙. 6.1 启用一个程序 netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:\MyApp\MyApp.exe" enable=yes netsh advfirewall firewall add r

C#的命令行工具

?在最开始学java的时候我们一般用 记事本 + 命令行,在命令行里边进行编译和运行, C#也有类似的东西(csc工具),在学习C#语言的时候可以用 文本编辑器来编写代码,然后用C#的命令行工具来编译和运行 这个命令行工具的位置在: 开始-->所有程序-->Microsoft Visual Studio 2012 -->-->Visual Studio Tools --> VS2012开发人员命令提示 执行 csc  源代码.cs 这样就会在源代码的相同目录生成可执行文件