Qt在IOS平台编译配置以及打包发布

在此期间,有幸接触到IOS,所以对Qt 在 IOS上的开发部署有了一些了解,今天拿出笔记记录下简单的过程。

Xcode安装

MAC上面安装软件很方便也很烦,需要打开App Store进行搜索安装.

xcode

安装好之后会看到如下欢迎界面:

xcode home

表示安装成功,接下来可以安装Qt了(这里貌似要先安装xcode在安装Qt!)

Qt的安装

比如下载Qt5.7版本,地址http://download.qt.io/archive/qt/5.7/5.7.0/,为了以后方便尽量下载比较全的安装包:qt-opensource-mac-x64-android-ios-5.7.0.dmg,直接包含了三个构建套件(MAC,IOS,Android)

download

下载完成直接按照默认安装提示安装(傻瓜式安装).

安装好后就可以看到比较熟悉的界面了,主要有看三个套件:

  • Desktop Qt 5.7.1 clang 64bit
  • iphoneos-clang Qt 5.7.1 for iOS
  • iphonesimulartor-clang Qt 5.7.1 for iOS

测试

创建一个helloworld工程,这里套件要选择 iphoneos-clang Qt 5.7.1 for iOS,因为是在真机跑,如果选择模拟器,那么要选择iphonesimulartor套件.

编译后会生成xcode工程文件,若要在真机运行,需要使用xcode进行编译打包调试.

工程文件: xxx.xcodeproj

iOS证书和签名

证书

singal

证书分为:开发证书和发布证书.

  • 开发证书
    安装在电脑上提供权限,开发人员通过设备进行真机测试。
  • 发布证书
    开发人员可以制作测试版和发布版的程序,不可生成副本,仅有配置该证书的电脑才能使用

证书生成

开发者在申请iOS开发证书时,需要通过keychain生成一个CSR文件(Certificate Signing Request),提交给苹果的 Apple Worldwide Developer Relations Certification Authority(WWDR)证书认证中心进行签名,最后从苹果官网下载并安装使用。这个过程中还会产生一个私钥。

  • 证书本身
    包含用户的公钥、用户个人信息、证书颁发机构信息、证书有效期等信息

  • 证书签名
    WWRD将上述证书本身内容使用哈希算法得到一个固定长度的信息摘要,然后使用自己的公钥对该信息摘要进行加密生成数字签名。

签名

Xcode在打包生成ipa文件的过程中,利用当前证书的私钥进行代码、资源文件的数字签名,并且将其放在ipa文件夹的_CodeSignature文件夹下。
当APP安装到iOS系统上时,系统首先通过描述文件找到数字证书,通过证书里面的苹果数字签名,验证证书的有效性,如果证书有效,则取出证书中的开发者公钥,解密APP的数字签名,如果发现摘要一致。则验证通过,APP成功安装到手机上。如果其中某一个验证环节出现问题,验证工作就会失败。

证书有效期

iOS打包时需要一个证书和该证书对应的描述文件。描述文件过期后,续费后需要重新生成描述文件,然后重新对ipa进行签名打包才可以,过期后的app是无法使用的,会提示无法信任的企业级应用.

导出P12证书

导出P12证书是为了给其他MAC电脑开发用的,因为一个证书只能最多只能在2台电脑上开发。通过导出.p12证书文件可以供给所以的mac设备使用,使设备不需要在苹果开发者网站重新申请和发布证书就能使用。
导出的.p12证书必须和对应的描述文件一起使用才可以。
将导出的.p12文件拷贝到其他mac设备上,直接双击进行安装即可,这样直接就可以安装到钥匙串中了。以后在xcode调试或者重新签名打包时选择刚才安装的证书和对应的描述文件即可。
描述文件是为了让xcode知道我们开发的合法性。

APP多语言名称设置

参考文章地址http://www.jianshu.com/p/88c1b65e3ddb.

使用xcode打开项目工程,在项目名称上面单击鼠标右键,在弹出的对话框中选择"New File..

app language

在弹出的对话框中选择Strings File,如下图所示:

app language

接着选择路径以及文件名称,文件名称这里为”InfoPlist.strings”,路径选择默认即可.

创建完成后鼠标点击该文件,添加如下内容:
CFBundleDisplayName =”应用程序”;
在xcode右边属性栏中选择Locakuze…

app language

完成后在工程的信息属性栏中,选择Localizations,点击下面的+号,添加中文简体名称,如下图所示:

app language

在弹出的对话框中选择上面新建的文件“InfoPlist.strings”。添加完毕后可以看看到”InfoPlist.strings”文件旁边多了一个小三角,点击后可以看到展成2部分,就是刚才添加的中文还有一个默认的英文,点击对应文件进行修改对应名称。

app language

APP名称修改

app name

APP图标设置

通过项目images.xcassets文件实现

在工程属性“General”选项中找到“App Icons and Launch Images”项

app icon
app icon

击该文件,可以看到有2项,第一个是App图标设置,第二个是启动图标

点击后会出现好几种尺寸的icon选择,这里需要提前准备好对应尺寸的icon图标,然后按照尺寸拖到对应位置上即可。
图标的命名:
注意区分倍图@2x 和@3x 的后缀,如AppIcon57x57.png 和AppIcon57x57@2x.png
AppIcon57x57.png代表图标尺寸为:5757
AppIcon57x57@2x.png代表图标尺寸为:114
114

上述图标大小需要提前准备好,然后手动拖到匹配位置即可.

启动图标的设置

启动图标和APP图标类似,分为横屏和竖屏.

app launch
  • Portrait 代表竖屏
  • Landscape代表竖屏

关于iphone上下边黑屏问题

参考文章https://www.jianshu.com/p/5090fc45c271

添加http访问权限

在iOS 9之后,苹果默认要求App访问的url必须为https的安全链接,http链接确实是不安全的,如果在开发过程中请求失败,控制台显示http不安全要用https之类的信息的话,那就是由于这个原因了。但是由于并非所有开发者都会去申请HTTPS证书来支持HTTPS访问,所以还是可以进行设置来正常访问HTTP的,方法如下:

  • 在Xcode工程中找到Info.plist文件,做iOS开发的应该都了解这是一个做一些应用配置的文件;
  • 在Info.plist文件中添加Dictionary类型的NSAppTransportSecurity字段;
  • 在NSAppTransportSecurity字段下添加Boolean类型的NSAllowsArbitraryLoads字段,并将其值设为YES
app language

Archive打包

app language

接着会进行编译,如果没有错误,则会弹出一个对话框—Archive Information:

app language

选择Export进行导出,这个时候会弹出对话框,让你选择方式:

app language
  • 保存到本地 准备上传App Store 或者在越狱的iOS设备上使用,利用的是Distribution描述文件,关联production证书
  • 保存到本地 准备在账号添加的可使用设备上使用(具体为在开发者账户下添加可用设备的UDID),利用的是Distribution描述文件,关联production证书;
  • (企业级APP打包ipa)这种主要针对企业级账户下准备本地服务器分发的app。利用的是Distribution描述文件,关联production证书;开发者测试包;
  • 发者模式打包ipa,通过development描述文件关联development证书,打包ipa,给注册的UDID机子安装;

注明:真机连接Xcode进行调试,需要使用development描述文件及code sign用Developer证书,如果使用production描述文件及code sign用Distribution证书,不能改运行调试,报:process launch failed: failed to get the task for process 10487(数字)错误提示!

企业发布的话一般选择第三个:Save for Enterprise Deployment.

接着会让你选择自己的Team:

app language

接着一路next

app language

最后会让你选择一个存放路径,最后会生成一个对应的xxx.ipa文件了.

app language

xxx.ipa文件其实就是一个压缩文件,我们可以将其重新命名为xxx.zip,解压后可以看到里面的一些基本内容.

IPA文件组成

iOS程序最终都会以.ipa文件导出,先来了解一下ipa文件的结构:

app language
  • 资源文件,例如图片、html、等等。
  • _CodeSignature/CodeResources。这是一个plist文件,可用文本查看,其中的内容就是是程序包中(不包括Frameworks)所有文件的签名。注意这里是所有文件。意味着你的程序一旦签名,就不能更改其中任何的东西,包括资源文件和可执行文件本身。iOS系统会检查这些签名。
  • 可执行文件。此文件跟资源文件一样需要签名。
  • 一个mobileprovision文件.打包的时候使用的,从MC上生成的。
  • Frameworks。程序引用的非系统自带的Frameworks,每个Frameworks其实就是一个app,其中的结构应该和app差不多,也包含签名信息CodeResources文件

支持文件共享(读取app的log日志)

info.plist里设置UIFileSharingEnabled = YES;

然后打开iTunes ,找到app,即可看到日志文件

IOS App在后台运行不退出

因为IOS系统机制吧,锁屏后app的网络会断开连接,所以如果你的app需要一直保持数据通信,则很麻烦,不过短暂的方法可以这样设置:

程序打包时在Info.plist添加如下两个字段即可:

app language

参考文章地址https://www.jianshu.com/p/174fd2673897

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容