iOS开发知识体系之《脚本自动化打包--xcodebuild》
iOS脚本自动化打包方案--xcodebuild
成都创新互联欢迎联系:13518219792,为您提供成都网站建设网页设计及定制高端网站建设服务,成都创新互联网页制作领域10多年,包括石雕等多个领域拥有多年的网站营销经验,选择成都创新互联,为网站保驾护航。
本文主要xcodebuild脚本自动化打包并上传到蒲公英或者AppStore,废话不多说,直接上干货!
先了解一下xcodebuild打包需要的一些指令
-workspace XXX.xcworkspace
XXX.xcworkspace需要编译工程的工作空间名称,如果工程不是.xcworkspace的,可以不需要-workspace XXX.xcworkspace这段话
-scheme XXX
XXX是工程名称,-scheme XXX是指定构建工程的名称
-configuration Release
填入打包的方式是Debug或Release,就跟在Xcode中编译前需要在Edit scheme的Build configuration中选择打出来的包是Debug还是Release包一样,-configuration就是配置编译的Build configuration
-archivePath ./myArchivePath
配置生成.xcarchive的路径, ./表示生成在当前目录下,myArchivePath是生成的.Archive文件名称
ODE_SIGN_IDENTITY=证书
配置打包的指定证书,如果该工程的Xcode已经配置好了证书,那么不加入这段话也可以,打包出来的证书就是Xcode中配置好的。
PROVISIONING_PROFILE=描述文件UUID
配置打包的描述文件,同上,Xcode已经配置好了就不用在填入这段话了
CONFIGURATION_BUILD_DIR
配置编译文件的输出路径,如果需要用到.xcarchive文件内部的dSYM等文件,可以使用改字段指定输出路径。
如果工程是勾选了Automatically manage signing,那么就不用在配置ODE_SIGN_IDENTITY和PROVISIONING_PROFILE,今天这里讲到的Automatically manage signing自动配置证书,手动配置的就不多说了,有兴趣的话可以自己研究。
xcode工程配置自动获取证书,如下图:
打包所需要文件
配置打包的ExportOptions.plist文件,可以在任意一个Xcode工程中新建一个ExportOptions.plist文件。dev和adHoc和AppStore的配置文件内容不一样,可以先手动打包后看下plist文件的样式,这里提供一个样例:
这里method对应的value为打包对应的环境,有development、ad-hoc、app-store、enterprise根据打包环境来配置不同的值
编译脚本命令
xcodebuild archive -workspace XXX.xcworkspace -scheme XXX -configuration Release -archivePath ./myArchivePath CONFIGURATION_BUILD_DIR ./dir ODE_SIGN_IDENTITY=证书 PROVISIONING_PROFILE=描述文件UUID
导出ipa包命令
xcodebuild -exportArchive -archivePath ./myArchivePath.xcarchive -exportOptionsPlist ./ExportOptions.plist -exportPath ./out
-archivePath ./myArchivePath.xcarchive指定需要打包的.xcarchive路径,./myArchivePath.xcarchive表示在当前终端路径下的myArchivePath.xcarchive文件
-exportOptionsPlist ./ExportOptions.plist指定打包需要的ExportOptions.plist配置文件路径
-exportPath ./out指定打包输出的路径, ./out表示打包结果输出在终端的当前路径下的out文件家中。如果没有out文件夹会自动创建一个
脚本操作
首先:cd到需要自动打包的工程下
然后:在终端中输入touch xcodebuild.sh创建xcodebuild.sh脚本文件
然后:双击打开脚本写入下面 脚本内容(请确保所有版本的plist配置文件都写好了)
最后:在终端中输入./xcodebuild.sh运行脚本,按照步骤完成打包选择(如果运行的时候出现Permission denied,请先在终端中执行chmod a+x *.文件的后缀名后,在运行,相当于提高脚本文件的权限)
脚本内容
此脚本包含了自动上传蒲公英的选择操作,根据输入指令来执行具体操作
脚本实现
具体详细脚本见GitHub地址: 如果好用记得给star,谢谢!
如脚本打包执行遇到问题可留言沟通!
iOS开发中加载图片的内存问题以及优化方案
图片的加载方式 iOS 目前有2种:
1.Resource 它是指inageWithContentsFile:创建图片的图片管理方式;
2.ImageAssets 它是指使用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 = self.imageBuff[imageName];
if(image){
return image;
}
NSString *path = @"image Path";
image = [UIImage imageNamed: ];
if(image){
self.imageBuff[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对象,减少沙盒的读取操作。
企业iOS APP开发方案需要怎样设计
开发企业iOS APP需要怎样做?
首先企业在设计方案时首先需要想到制作出来的应用是提供个哪些人群使用的,根据他们的使用习惯的角度规划APP开发方案,对于客户来讲选择使用企业的手机应用当然是可以从中获得帮助、体现价值这也是企业APP吸引用户的地方。同时企业的iOS APP开发在合理的布局下还需要做到美观,同时各个功能社会需要简单通俗用户一看就明白怎样使用。这观点是从注重用户体验提出来的,企业开发手机应用也是想要吸引更多的用户,所以这一点是值得企业重视的。
其次企业在设计应用软件方案时还需要考虑用户体验以外的对企业自身营销相关的内容。企业开发应用软件的终目标还是提升企业的营业额,以小的宣传达到大的营销效果。所有在APP开发方案中需要根据企业的实际情况出发做好规划与推广,要让企业达到增加营业额的同时还可以让需要他的用户通过各种渠道知道该应用软件的存在。
总的来说开发iOS APP应用的方案规划除了需要有开发应用的详细内容与具体步骤以外,还需要包含企业的营销推广的内容,这样是企业为什么要开发手机应用软件的关键。
综上,企业APP方案的规划除了要有APP开发的详细内容和具体步骤之外,还需要包含APP营销推广的内容。因为一个应用软件开发出来之后,重要的还是要进行大量的推广来让更多的人认识并使用这款APP客户端,有了一定量的用户基础之后,企业才可以利用APP客户端来达到大化营销的目的。
[IOS开发]指纹登录(TouchID)集成方案——逻辑设计和实现
官方文档
API比较简单,在IOS 8 以上的app 包中,添加Libraries:LocalAuthentication Framework,有以下两个方法
*在设备(用户)绑定之后,并且当前正处于登录状态,也可以将本设备取消绑定,流程基本与绑定流程雷同,不再重复。
TouchID API 非常简单,仅仅对本设备的TouchID进行验证,但如果需要在app集成相应的 “设备登录/验证”功能或其他TouchID 的应用,则需自行设计关联和绑定流程(例如在本app中使用的关联:设备Token、生成设备账号/密码、app包名/版本),绑定之后,才能使用TouchID 进行验证和应用。
iOS开发:各种APP软件开发的方式有哪些
APP软件开发的方法有哪些?归纳起来可以分为以下几类:
一、自力开发。整个APP项目都是你自己一个人完成包括设计、研究以及制作。
二、合作开发:你与一个团队一起共同开发这个项目中,而你自己是这个APP开发团队的其中一个成员。
三、外包开发:花钱请人外包整个项目,给有能力专业的移动APP个人开发者或是团队去进行APP的开发、研究和制作。
四、免费在线制作:利用第三方平台的功能模块拼接进行在线制作APP软件。虽说傻瓜式的APP开发工具,但是对于不懂技术的人来说是福音。通过这种途径去完成的APP制作,你只能开发出工具中已有的功能模块,制作出来的APP软件跟自己预期的功能不完全对应,它对于一些个性化定制开发的移动APP开发来说是没有太大的可取之处的。
因此,客户可以根据自己的实际情况来选择适合自己的开发方式,不要为了省钱就去采用第三方的傻瓜工具来制作自己的APP软件。如果是企业商家要想拥有独立的手机客户端的话,好是选择自主开发或者合作开发,也可以选择寻找专业的APP软件制作公司进行开发,这样比较方便日后的维护和升级。福建蜂鸟云商电子科技为您解答!
APP开发常用的技术方案有哪些
APP开发是一项高技术含量的工作,通常开发一款成功的APP都是一项庞大的工程,还需要掌握一套完善的技术及编程语言。
首先呢,APP开发一般从技术架构上都会包括后台的管理端,在PC端操作,也就是管理我们整体系统后台。包括用户、权限、订单,还有一些管理的功能。另外就是APP的前端包括iOS和Android,这是一个APP的整体系统架构。
APP开发商的系统一般通用的技术方案,都是前后台分离的。前端用iOS开发语言和Android的开发语言来进行开发,和后端应用层之间是通过接口的方式进行调用,后台负责后台管理端的开发。
技术架构上常用的技术方案无非现在比较流行的是PHP、JAVA,当然还有.NET技术。
新闻名称:ios开发方案,ios开发者计划
分享网址:http://scgulin.cn/article/phpoip.html