【手把手】ios苹果打包——遇见项目实战|超详细的教程分享

news/2024/5/19 0:08:19/文章来源:https://blog.csdn.net/qq_37215621/article/details/126682494

六年代码两茫茫,不思量,自难忘
6年资深前端主管一枚,只分享技术干货,项目实战经验
关注博主不迷路~

文章目录

  • 前言
  • weex介绍
  • eeui介绍
    • 一、安装CocoaPods
      • 1.CocoaPods介绍
      • 2.CocoaPods的安装
    • 二、登录开发者中心
    • 四、添加测试手机设备
    • 五、打包
  • 总结


前言

本教程手把手教你用weex+eeui框架打测试包ipa安装到手机(打正式包也有介绍)。

eeui项目创建可看我的另一篇文章一文带你吃透eeui安卓开发

weex介绍

在这里插入图片描述

Weex是一个构建移动端跨平台UI框架。Weex使开发人员能够使用类似Web的语法通过单一代码库构建iOS、Android和Web应用。 Vue.js和Rax(提供类React语法前端框架)这两个前端框架被广泛应用于Weex页面开发,同时Weex也对这两个前端框架提供了最完善的支持。

eeui介绍

使用 Vue.js 跨平台开发高质量原生(Android/iOS)应用。
eeui 支持实时同步预览,即修改完代码可以立即查看效果
eeui

一、安装CocoaPods

1.CocoaPods介绍

CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本,可以简单理解为ios的maven库。
CocoaPods有两个明显的优势:
1、在引入第三方库时它可以自动为我们完成各种各样的配置,包括配置编译阶段、连接器选项、甚至是ARC环境下的-fno-objc-arc配置等。
2、使用CocoaPods可以很方便地查找新的第三方库,这些类库是比较“标准的”,而不是网上随便找到的,这样可以让我们找到真正好用的类库。在使用CocoaPods之后,我只需要将用到的第三方开源库放到一个名为Podfile的文件中,然后执行pod install。CocoaPods就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数。

2.CocoaPods的安装

打开终端:>_
1、查看当前Ruby版本

ruby -v

2、升级Ruby环境,首先需要安装rvm(第一步要下载一些东西等两分钟左右)

curl -L get.rvm.io | bash -s stable 
source ~/.bashrc
source ~/.bash_profile

3、查看rvm版本

rvm -v 

显示如下(或者是其他版本)

rvm 1.29.3 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]

4、列出ruby可安装的版本信息

rvm list known

显示如下

# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.7]
[ruby-]2.4[.4]
[ruby-]2.5[.1]  // 重点在这里 重点在这里 重点在这里
[ruby-]2.6[.0-preview2]   // 测试版
ruby-head
.....

5、安装一个ruby版本(这里我选择的是2.5.1版本,当然你也可以选择其他的)

rvm install 2.5.1

注意:安装过程中需要两次按下 Enter 键, 第二次按下后需要输入电脑访问密码(不可见,只管输入就行)
如果你电脑没有安装Xcode和Command Line Tools for Xcode以及Homebrew 会自动下载安装,建议提前安装这三者

这里很多小伙伴会遇到错误,大部分是因为没有安装Homebrew造成,所以所以所以要提前安装比较好

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

6、设置为默认版本

rvm use 2.5.1 --default

7、更换源

sudo gem update --system
gem sources --remove https://rubygems.org/
gem sources --add https://gems.ruby-china.com/

8、为了验证你的Ruby镜像是并且仅是ruby-china,执行以下命令查看

gem sources -l

如果是以下结果说明正确,如果有其他的请自行百度解决

*** CURRENT SOURCES ***

常见问题
9、这时候才正式开始安装CocoaPods

sudo gem install -n /usr/local/bin cocoapods

10、如果安装了多个Xcode使用下面的命令选择(一般需要选择最近的Xcode版本)

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

11、安装本地库

pod setup

12、执行以上命令后

Setting up CocoaPods master repo$ /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progressCloning into 'master'...remote: Counting objects: 1879515, done.        remote: Compressing objects: 100% (321/321), done.        Receiving objects:  21% (404525/1879515), 73.70 MiB | 22.00 KiB/

然后就是漫长的等待,当然,网络好的情况下会更快…
如果一直安装不成功请参考这里
13、下载安装完成之后可执行下列命令检查是否可用(第一次使用可能要等一会)

pod search AFNetworking

14、CocoaPods的具体使用
新建一个Xcode工程,使用终端cd到工程目录下
创建Podfile文件:

pod init

之后就可以在项目目录里看到一个Podfile文件
打开Podfile文件:

open Podfile

添加:

pod 'AFNetworking'

保存后退出
开始下载:

pod install

CocoaPods版本

pod --version

二、登录开发者中心

  1. 打开链接developer
    在这里插入图片描述

点击Account

2.输入帐号密码,点击Sign In 按钮登录
在这里插入图片描述

3.登录后,点击Certificates,Ldentifiers & Prlfiles,进入页面,所有证书相关的都在这里进行
在这里插入图片描述

二、申请appid
1.点击App IDs,进入页面
在这里插入图片描述

  1. 点击右上角的 + 号 来添加一个 APP ID,对于要发布到Appstore上的程序, 都有一个唯一的AppId

  2. 填写说明:
      Name:可以用APP的名称拼音,不能使用特殊字符。
      Bundle ID:建议使用 com.yourcompany.yourappname的格式;
    PS: Bundle ID 需要和XCode中 Bundle identifier一致
    在这里插入图片描述

如果想要支持推送服务和iCould等也可以在这儿配置:
在这里插入图片描述
出现以下页面,说明申请appid成功!
在这里插入图片描述

三、申请发布证书(Mac系统)
1.获取证书请求文件
钥匙串访问 —> 证书助理 —> 从证书颁发机构请求证书
在下图所示的界面,
用户电子邮件地址:填你申请idp的电子邮件地址;
常用名称:默认;
CA空;
选择存贮到磁盘;
在这里插入图片描述
点击"继续"
在这里插入图片描述

点击“存储:,你就可以看到你的桌面多了一个CertificateSigningRequest.certSigningRequest的证书请求文件。
在这里插入图片描述

  1. 获取p12文件
    进入Certificates,Ldentifiers & Prlfiles页面,点击左边 Certificates 中的 Production
    在这里插入图片描述
    点击 + 号
    在这里插入图片描述
    直接勾选 App Store and Ad Hoc
    在这里插入图片描述
    点击Continue

出现以下页面,点击 Choose file
在这里插入图片描述
选择我们前面生成在桌面的证书请求文件,点击continue
在这里插入图片描述

点击"download"下载你生成的证书
在这里插入图片描述

双击文件安装,
钥匙串:登录
点击添加
在这里插入图片描述

查看你的钥匙串,应该有下面这一行Iphone Distribution的证书,,这个证书有一个小三角可以点击,展开后有一个对应的密钥。
在这里插入图片描述

现在发布证书已经安装了,我们选择这个证书,右击,选择导出"iphone Distribution:…",如下:
给你要导出的证书起个名字,如“证书”,选择一个存的位置,注意,保存成P12的信息交换文件
在这里插入图片描述

输入将来保护输出项目的密码,后面在打开证书文件时需要这个密码登录
在这里插入图片描述

现在你就有了发布程序需要的p12文件。
3.生成provisioning文件
在下图左边选择 Provisioning Profiles 选项下的 Distribution,来生成一个发布的准备文件:
在这里插入图片描述

点击 + 号
在这里插入图片描述

选择 App Store,其它不用管,点击下面的 Continue 按钮
在这里插入图片描述

然后如下图中,选择我们前面创建的App ID ,点击下面的 Continue 如下图:
在这里插入图片描述

然后出现以下这个页面,选择最新的
在这里插入图片描述

在新的页面中填写 Profile name,文件名称,下面的App ID,检查确认是我们之前创建的 appid,这个必须一致。确认后提交:
在这里插入图片描述

点击download,下载provisioning
在这里插入图片描述
在这里插入图片描述

四、添加测试手机设备

点击加号添加测试手机
需要使用iphone的uuid码
可使用iTunes获取手机UUID码(具体自行百度)
在这里插入图片描述

添加设备后在profile选择要测试的设备后生效(否则不能安装到手机)
在这里插入图片描述

五、打包

在xcode打开ios项目
打开的路径是:项目目录下\platforms\ios\eeuiApp
选择模拟器为ios Device
在这里插入图片描述

选择证书文件,prefile文件
在这里插入图片描述

选择为发布包
在这里插入图片描述
在这里插入图片描述

打包
在这里插入图片描述

导出
在这里插入图片描述

这里我们选择打一个测试包(打正式包则选择app store)
在这里插入图片描述
导出到桌面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

成功打包出ipa包
在这里插入图片描述

六、安装到手机
因为苹果ipa无法直接安装ipa,我们找一个第三方安装助手即可
这里我们用爱思助手
下载爱思助手下载
连接手机到电脑
在这里插入图片描述
安装
在这里插入图片描述

安装成功即可

完成!

总结

每个新手都被各种配置、证书、打包和发布等事情折腾,以及后面iOS包审核。众所周知,苹果App Store规定非常严格,不过过程虽然复杂,但是在过程中我们确实能学习到很多,也能磨砺耐心。

✨原 创 不 易 , 还 希 望 各 位 支 持
👍 点 赞 , 你 的 认 可 是 我 创 作 的 动 力 !
⭐️ 收 藏 , 你 的 青 睐 是 我 努 力 的 方 向 !
✏️ 评 论 , 你 的 意 见 是 我 进 步 的 财 富 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_5743.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2022最新iOS证书(.p12)、描述文件(.mobileprovision)申请和HBuider打包及注意注意事项

制作p12证书1、在钥匙串界面中,选中安装好的开发者证书,【右键】选择导出在弹出的界面中3、在接下来的弹窗中填写p12文件的安装密码(后面他人安装该p12文件时需要输入这个密码,重要)4、继续上面的步骤,这里需要输入电脑的开机密码,p12开发者证书到这里即制作完成。以上就…

【芯片前端】根据数据有效选择输出的握手型FIFO结构探究

前言 之前要做一个一读多写的fifo,也就是master写入数据到fifo中,多个slave读取数据,结构如下图所示: 由于slave需要的数据一致,fifo内只需要例化一个ram以节约空间。这个fifo的具体结构下次博客中再来讨论。在这个fi…

Git 之 revert

转自: Git 之 revertrevert 可以撤销指定的提交内容,撤销后会生成一个新的commit。 1、两种commit: 当讨论 revert 时,需要分两种情况,因为 commit 分为两种:一种是常规的 commit,也就是使用 git commit 提交的 commit; 另一种是 merge commit,在使用 git merge 合并两…

mysql 主从备份原理

mysql 主从备份原理 1.1 用途及条件 mysql主从复制用途实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务主从部署必要条件:主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器能连通主库2.1 主从原理在备库 B 上通过 change master 命令,…

服务端挂了,客户端的 TCP 连接还在吗?

作者:小林coding 计算机八股文网站:https://xiaolincoding.com大家好,我是小林。 如果「服务端挂掉」指的是「服务端进程崩溃」,服务端的进程在发生崩溃的时候,内核会发送 FIN 报文,与客户端进行四次挥手。 但是,如果「服务端挂掉」指的是「服务端主机宕机」,那么是不会…

[第二章 web进阶]XSS闯关-1

定义:跨站脚本(Cross_Site Scripting,简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户浏览网页时就会受到影响。恶意用户利用XSS代码攻击成功后,可能得到包括但不限于更高的权限、会…

K8s简介之什么是K8s

1.概述 欢迎来到K8s入门课程。Kubernetes,也被称为K8s或Kube,是谷歌推出的业界最受欢迎的容器编排器。本K8s教程由一系列关于K8s的文章组成。在第一部分,我们将讨论什么是K8s和K8s的基本概念。 本课程是专为初学者开设的,你可以零基础学习这项技术。我们将带你了解全部K8s的…

第2章 第一个Spring Boot项目

开发工具选择 工欲善其事必先利其器,我们进行Java项目开发,选择一个好的集成开发工具(IDE)对提高我们的开发调试效率有非常大的帮助。这里我们选择大名鼎鼎的IDEA ,它全称 IntelliJ IDEA。 ​IntelliJ IDEA公认最好的J…

【云原生 | Kubernetes 系列】K8s 实战 如何给应用注入数据 II 将pod数据传递给容器

将pod数据传递给容器前言一、通过环境变量将 Pod 信息传递给容器1.1、用 Container 字段作为环境变量的值二、通过文件将 Pod 信息呈现给容器2.1、存储容器字段总结前言 在上一篇文章中,我们学习了针对容器设置启动时要执行的命令和参数、定义相互依赖的环境变量、为…

关于订单过期的监听和处理

订单过期监听和处理 业务需求 有些时候 用户发起订单 但是没有付款 这个时候一般来说 会设置一个订单过期时间 如果订单过期 则需要重新下单 问题来了 如果每过一段很小的时间就去盘一次数据库 那压力也太大了 demo 搭建 用到的 mysql mybatis plus redis rabbit mq 目录结…

【毕业设计】单片机远程wifi红外无接触体温测量系统 - 物联网 stm32

文章目录0 前言1 简介2 主要器件3 实现效果4 设计原理4.1 **MLX90614红外测温传感器**4.2 TOF10120激光测距传感器4.3 DS18B20传感器**DS18B20单总线协议**5 部分核心代码5 最后0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设…

精妙绝伦

精妙绝伦啊,精妙绝伦啊,大妙! 今天讨论到一个二级联动省和市在一个表中的情况, 这么一组数据,需要达成一个sql语句便能把省和市同时显示出来,愚绞尽脑汁思虑良久,未得有用之策,经同事提点,顿醍醐灌顶! 先来解释一下这串代码:Select * from TBSpace inner join TBPla…

three.js绘制地图(平面、曲面)

加载中国地图json数据 let loader = new THREE.FileLoader(); loader.load(model/chinaJson.json, function (data) {let jsonData = JSON.parse(data);initMap(jsonData); // 解析并绘制地图 });绘制曲面地图function initMap( chinaJson ) {//创建一个空对象存放对象map = ne…

Vue指令

Vue指令分为内置指令和自定义指令 内置指令 v-bind 单向绑定解析表达式&#xff0c; 简写&#xff1a; &#xff1a;xxx <div id"root">单项数据绑定&#xff1a;<input type"text" v-bind:value"name"><br></div> v…

2023秋招——快手数据研发一、二面面经

&#x1f33c;今天来总结一下快手数据研发的一、二面&#xff0c;在面试中进步&#xff0c;在总结中成长&#xff01;对往期内容感兴趣的小伙伴可以参考下面&#x1f447;&#xff1a; 链接: 2022暑期实习字节跳动数据研发面试经历-基础数仓.链接: 2022百度大数据开发工程师实…

three.js实现鼠标拾取例子

基本思路 <script> var renderer,scene,camera; var light; var raycaster,//相机->鼠标的射线mouse,//鼠标所在位置actionObject;//选中的物体 init(); animation();function init(){//渲染器//场景//相机//方向光//创建2000个立方体//创建射线//创建鼠标二维向量(圆…

epoll实现异步请求数据---以UDP为例

文章目录同步UDP请求数据的问题异步请求的模型具体的代码同步UDP请求数据的问题 不管是请求DNS资源还是其他资源。如果以串行的方式请求数据&#xff0c;也就是send以后recv阻塞等待获取数据&#xff0c;这样做的效率非常低效&#xff0c;网络延迟、服务器处理请求、再加上rec…

【C# 学习笔记 ②】C#基本语法(数组、判断和循环、字符串、枚举、结构体)

由于在自己的工作和学习过程中&#xff0c;只查看某个大佬的教程或文章无法满足自己的学习需求和解决遇到的问题&#xff0c;所以自己在追赶大佬们步伐的基础上&#xff0c;又自己总结、整理、汇总了一些资料&#xff0c;方便自己理解和后续回顾&#xff0c;同时也希望给大家带…

【我不熟悉的css】07. css命名,bem规范,跟着组件库element-ui学习组件命名

在去年&#xff0c;我总结了一篇文章&#xff0c;跟着element-ui学习css命名 【系统学习css】跟着element-ui学习css的命名_我有一棵树的博客-CSDN博客每日鸡汤&#xff0c;每一个你想要学习的念头都是未来的你向自己求救写css 最烦人的就是给class起名字了&#xff0c;这里不…

这一次,我们把AI自治数据库带到了世界人工智能大会上

9月3日,2022世界人工智能大会(WAIC)在上海圆满落幕。WAIC2022 秉持“智联世界”理念,通过线上线下联动的会展形式,汇聚顶级科学家、企业家、政府官员、专家学者、国际组织、投资人、创新团队一同探讨科技前沿话题,推动全球“共创、共建、共融、共治、共享、共赢”。WAIC …