场景 :使用XCode 124进行打包的IPA,在系统为iOS 15以上的iPhone上不能进行安装。(到现在了,老板暂时还是不想适配iOS 15)
此IPA包在iOS 15以上的iPhone上不能进行安装:
需求介绍 :要实现“Xcode低版本打包IPA,供高版本iOS系统使用”
1将IPA文件改成zip格式,再进行解压。
执行成功后的打印:
其中“ Warning: default usage of --preserve-metadata implies "resource-rules" (deprecated in Mac OS X >= 1010)! ”警告可忽略!
新生成的IPA包:
重新生成的IPA,就可以供 高版本 iOS 系统 使用了!
的加载方式 iOS 目前有2种:
1Resource 它是指inageWithContentsFile:创建的管理方式;
2ImageAssets 它是指使用imageNamed:创建的的管理方式;
UIImage内存处理:
真是的App开发中,常用的无非是1和2两种方式
1的优缺点:
1的使用方式:NSString path =[[NSBundle mainBundle]pathForResource:@"image@2x" type:@"png"];
UIImage image = [UIImage imageWithContentsOfFile:path];
1的内部实现方式:+ (instancetype)imageWithContentsOfFile:(NSString )fileName {
NSUInteger scale = 0;
{
scale = 2;//这一部分是提取fileName中@号后面的那个数字,如果存在则为1
}
return [[self alloc] initWithData:[NSData dataWithContentsOfFile:fileName scale:scale]];
}
这种方式使用的时候会有个局限性,这个必须是在ipa的根目录或者沙盒中。根目录就是把文件拖到工程中,沙盒中的是写入进去或者存进去的;
1的特性:在1的管理方式中,所有的创建都是通过读取文件数据得到的,读取一次文件数据就会产生一次NSData以及产生一个UIImage,当创建好后会销毁对应的NSData,当UIImage的引用计数变为0的时候自动销毁UIImage,这样的话就可以保证不会长期存在内存中。
1的使用场景:由于这种方法的特性,所以1得方法一般用在数据很大,一般不需要多次使用的情况,比如引导页面的背景(全屏),有时候运行APP才显示,有时候根本就用不到。
1的优点:的生命周期可以得到管理,当需要的时候就创建一个,当不需要的时候就让他销毁,不会长期的保存在内存中,因此不会有内存浪费,在减少大图的内存占用中,1方式优先。
2的方式:2的设计初衷主要是为了解决自动适配Retian屏和非Retian屏,也就是说为了解决iPhone4和iPhone3GS以及以前的机型的屏幕适配,虽然没有3GS了,但是plus出来了,需要3x
2的使用方式:UIImage image = [UIImage imageName:@"image"];
2的特性:与1相似,2也是从文件中读取数据转化成UIImage,只不过这些都打包在2中,最大的区别就是有缓存。相当于与一个字典,key是名,value是对象。调用imageNamed:方法的时候先从这个字典中去取,如果取到就直接返回,如果娶不到再去文件中创建,然后保存在这个字典中。由于字典的key和value都是强引用,所以一旦创建后的永不销毁。
2的内部实现方式:+(instancetype)imageName:(NSString)imageName {
if(!imageName)
return nil;
}
UIImage image = selfimageBuff[imageName];
if(image){
return image;
}
NSString path = @"image Path";
image = [UIImage imageNamed: ];
if(image){
selfimageBuff[imageName] = image;
}
return image;
}
+ (NSMutableDictionary)imageBuff {
static NSMutableDictionary _imageBuff;
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{
_imageBuff = [[NSMutableDictionary alloc]init];
});
return _imageBuff;
}
2的使用场景:最主要的使用场景就是icon类的,一般的icon类的大小在3kb到20kb不等,都是一些小文件
2的优点:当一个icon在多个地方需要被显示的时候,其对应的UIImage对象只会被创建1次,而且多个地方的icon都将会共用一个UIImage对象,减少沙盒的读取操作。
1上传
1开发商
2应用上传流程
如果App想要成功出现在商店中,开发者还需要经过上传操作和苹果公司的严格审核。同时,在App上架App Store时,如有违规,将受到苹果公司的处罚。此外,优质app也会得到苹果的推荐,通过优质曝光和苹果官方背书获得更多用户增长。
在本章中,我们将解释上传、审核、推荐和惩罚这四种苹果机制。本文主要讲上传和上传过程。
31上传
为IPA包编译、打包、设置元数据,经苹果公司验证后上传到App Store供用户下载的过程,称为App上传。
IPA包:iPhoneApplication安装包的缩写,指的是苹果应用文件,也作为其文件后缀。
App的上传一般由技术和研发直接操作;d人员,但元数据作为ASO前期优化的重要一环,绝大多数情况下会由渠道、推广、运营人员提供。元数据的具体引入和优化将在《流量探“涨”:ASO 进阶篇》中详细讲解。
eight: normal;”>
另外,App的上传,需要在开发者后台(一般也称为 iTC 后台)上操作,同时需要提前注册开发者账号。故在本节中,我们会先就开发者、开发者后台、开发者账号等相关概念为大家进行介绍。
1、开发者
在移动增长领域,开发者是一个最为常见的名词。在不同使用场景下,“开发者具有不同的含义。
狭义:以个人为主体,指技术、研发人员。
广义:以产品为主体,不局限于个人开发或者公司开发,不局限于岗位,可以是高管、运营、推广人员等。行业内一般所说的“开发者”,多为此种。
开发者网站、开发者后台中的“开发者”一词,也多是广义含义。
1)App Store中的开发者
在App Store中,开发者作为产品的元数据之一,特指所开发产品的苹果账号名称。
开发者信息是未上传过产品的新开发者账号在首次上传App时设置的,不限于中英文,可自行设置,包括产品名(如WeChat)、品牌名(美团)、公司简称/全称。
App Store中的开发者信息可以输入340个字符,且输入的文字可以作为关键词覆盖被App Store抓取。
2018年7月,一款金融类App“车蚁金服”以70000多覆盖数居于关键词覆盖榜首。该产品利用了“开发者”字段进行了覆盖优化。
但通过优化“开发者”字段增加关键词数的产品被苹果公司发现后,其下架的概率较大,建议开发者不要轻易尝试。
注意:不完全借助该方式达到如此高的关键词覆盖数。
2)开发者后台
开发者后台指App Store Connect后台:(appstore connectapplecom)
在2018 年6月前,称为 iTunes Connect(iTC,网址为http://itunesconnectapplecom)后台。
App Store Connect 后台提供 App 上传、管理、数据监控和与苹果官方联系的功能。除在 PC 端操作外,还可通过 App Store载。App 版的后台虽然不支持上传 App,但可用于管理 App、监控数据及回复评论。
3)开发者账号
App 的上传需要通过 App Store Connect 后台实现,且需要先注册开发者账号才可登录。
2、App 上传流程
App 上传至 App Store 大致需要以下8 个步骤。
A/创建 App
B/上传ipa包
C/设置元数据
D/签署付费协议
E/设置内购项与价格
F/提交审核
G/处理审核结果
H/发布到App Store
上传app包文件到app store后台。
方法1借助辅助工具appuploader,首先按照流程注册登录后,即可直接创建证书,通过hbuilder上传
创建ios(p12)证书
1点击苹果证书
2新增苹果证书
3输入证书密码:这个密码不是账号密码,而是一个保护证书的密码,是p12文件的密码,此密码设置后没有其他地方可以找到,忘记了只能删除证书重新制作,所以请务必记住密码。还有为了安全起见,密码不要太简单。
证书名称是你为了在证书列表里面便于区别的一个字符,自己好辨识就可以,尽量是是字母和数字之类
4选择证书类型: 带distribution的是发布类型,带development的是开发类型。apple类型=ios+mac,所以开发时选择ios app development和apple development 类型都是可以的
5 选择bundle ID:只有部分类型的证书需要选择bundle id,例如推送证书。因为大部分证书是不和app关联的。而是通过描述文件profile文件关联app。
6 使用appuploader服务同步:如果期望制作好证书后在其他电脑上同样可以下载到这个证书,或者和你同事同步此证书,则需要勾选使用appuploader服务同步。否则您需要手动管理p12文件在不同电脑之间的传输,并且一但创建下载后,无法在其他电脑下载,只能手动复制文件过去。一般情况下,推荐使用appuploader服务同步。
7 证书类型说明:IOS开发选择apple development或者ios app development 类型
ios 发布选择 apple distribution或者 ios distribution (app store and ad hoc)
开发推送证书选择 apple push notification service ssl (sandbox)
发布推送证书选择 apple push notification service ssl (sandbox & production)
其他证书不是很常用,可以自行百度各种证书说明。
8官遇到问题,首先登录文章开通的苹果开发官网。检查是否有权限/是否被停用/是否过期/是否有协议需要同意。在右上角切换账号检查所关联的账号是否功能正常。Apple邮箱会接收到许多通知消息,如IPA上传,账号发生变化,被停用,都会有消息提示。
9上架版本需要使用正式的证书(apple distribution),开发测试用开发证书(apple development)
10一般都要创建两个证书一个用于开发,一个用于上架,如果有支付内容,还必需要 Apple Pay 的证书。证书无需创建太多,apple对证书有数量限制,一般3个开发证书就不让创建更多同类型的证书了。
11点击p12下载到电脑。
添加测试设备UDID
1点击udid
2新增udid
创建描述文件
1点击描述文件
2点击新增描述文件,在弹出框里面选择要安装测试到的设备,如果是发布类型无需选择设备。选择使用的证书,如果忘记是哪个 了可以选择全部证书。
3描述文件类型说明:带app store类型的是发布类型,带development的是开发类型,push没有描述文件,所以不要问推送选择哪种描述文件类型,os开发选择ios app development类型,发布app的时候选择app store类型。(ps:除了APP Store类型的描述文件外,其他的描述文件都需要选择测试设备)
4点击下载按钮下载桌面
测试安装App
1以HBuilder打包Vue项目为例,打开详细设置进行设置完成后,点击保存。
2官菜单项点击‘发行-> 云打包-打原生包’,出现如下图所示弹框,取消广告勾选,没有错误提示,选择刚才制作的p12和mobileprovision文件,输入刚才设置的证书密码。点击打包,等待打包未完成(仅以ios为例)
在这里插入描述
3官打包完成后点击确定“OK”按钮查看打包状态信息,打包完成后,保存安装包到目标文件,发送到手机端安装即可运行。
4测试设备:如果选择的类型是ios app development 类型,则全部测试设备旁边必须有测试设备并且勾选上,如果没有显示测试设备,点击框框下面的添加测试,然后把测试设备的udid输入,把ios设备连接到当前pc,会自动获得设备的udid。 如果app编译后无法安装到设备,可能是因为设备的udid没有添加进入描述文件,则需要添加描述文件后重新编译。
方法2Xcode上传,这里简单讲下步骤:
构建打包ipa文件
打包成功后,选择具体包版本,点击Distribute App。
选择App Store Connect。(Ad Hoc选项代表出包给测试人员测试)
点击next,后面几个步骤都点击Next按钮,选项配置不用管都按默认的走。
最后点击Upload,就开始上传了,耐心等待。我大概6分钟就上传成功了(包文件如果大或者网速慢时间相对会比较长)。这是我上传成功的截图:
上传成功后,登录App Store Connect,进入app详情页面,点击顶部TestFlight,在构建版本中就可以看到你刚上传的版本,状态一般会显示正在处理。
如果等了很久(10分钟左右吧)刷新页面还是没看到上传的构建版本,那么就是ipa包被拒绝了,这时候一般会收到拒绝原因的邮件。我就是这种情况
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)