找回密码
 立即注册
收起左侧

Qt安卓教程(5):部署到安卓

4
回复
8192
查看
[复制链接]

尚未签到

来源: 2014-4-8 15:45:46 显示全部楼层 |阅读模式
该文章原创于Qter开源社区(www.qter.org),作者Joey_Chan,转载请注明出处!


本系列教程主要讲述与安卓移植版Qt的相关内容,如平台特性、功能限制、特定用户体验和内容发布等,其余与Qt自身非平台相关的内容不会作详细讲述,笔者默认童鞋们已经有一定的Qt功底。
另:请自备安卓机子一台,不推荐用模拟器。此篇教程使用Qt5.2,童鞋们请使用大于等于此版本的Qt。

前几篇教程可以在这里找到:http://www.qter.org/forum.php?mod=viewthread&tid=483


本篇教程翻译自Qt Android作者BogDan Vatra的文章 Qt on Android Episode 4   传送门:http://www.kdab.com/qt-android-episode-4/


第五篇:部署到安卓

本篇文章讲述如何使用IDE自带的几种部署方式和其中的一些原理,以及如何正确的签名发布开发者自己的程序

1. 选择最合适的部署方式

  Qt Creator当前支持三种部署方式:
  Use Ministro service to install Qt (使用Ministro服务来安装Qt)
  Bundle Qt libs in APK (连同Qt库一起打包)
  Deploy local Qt libs to temporary directory (部署到系统缓存目录)


  
  1.1 Use Ministro service to install Qt (使用Ministro服务来安装Qt)
  
    回到2009年(译者注:以下基本是作者原话,译者自己的意见感想会专门标出),当我开始这个项目的时候,那时只有几款安卓设备,它们都只有少的可怜的存储空间(少于100MB)。所以Qt一开始就没有考虑将库文件一起打包进apk,而且那时的Google Play有apk大小的限制。这时Ministro应运而生。
   
    Ministro工作原理?
      开发者的apk将只有少数几个.so文件和一些资源文件,并不包括Qt库和其它额外需要的库文件;
      当程序启动,程序会尝试连接Ministro服务,如果连接失败则说明Ministro尚未安装,然后自动打开Google Play来让用户下载Ministro。当Ministro连接成功,程序将发送一个依赖库的列表给Ministro;
      Ministro会检查这个依赖列表里面是不是都已经本地存在,如没有,则会下载所需的库文件。下载完毕后会回传一个信息给Qt程序以保证Qt程序在启动前能加载所需的库文件;
      程序会从Ministro提供的路径中加载所需的库文件,然后继续自己的启动过程;
      
    好处?
      * 使用Ministro,用户只需下载一次Qt库文件,所有的Qt程序将共享使用这一套库文件
      * Ministro会自动检测当前cpu类型,并自动下载匹配的Qt库,如armv5,armv7,x86
      * Ministro会自动升级Qt库,无需用户干预;
      * Ministro还支持自定义库服务器,如开发者自己的第三方库,Ministro会将这个第三方库与Qt库同等对待;
      
    坏处?
      * 有些人不喜欢Ministro因为需要另外安装这个服务;
      * 太多的Qt库升级可能会导致混乱。Qt本身每个大版本之间的库并不能通用,如5.1 5.2 5.3 ,因此Ministro可能会下载许多不同版本的库文件;
      
    总的来说Ministro是值得一用的
   
  1.2 Bundle Qt libs in APK (连同Qt库一起打包)
  
    这个功能最近才加入到Qt Creator,它会把所需的一切都打包装进apk里面。
   
    好处?
      apk文件里面已经包含了所有运行需要的东西
   
    坏处?
      * apk文件会很大,因为包含了Qt库文件,大部分情况会超过40MB;
      * Qt库文件会解压到程序自己的目录,这里会占用超过50MB的空间;
      * 现在还有一部分低端机负担不起这些空间消耗;
      * 因为庞大的库文件,apk将无法同时支持多种不同的硬件平台,如armv5和armv7需要分别打包发布
      * 不能使用armv5的VFP和armv7的NEON
      * Qt库不能在程序之间分享
      * Qt库将无法自己升级(译者注,只能自己随apk包升级)
      
   (译者注:开发者可以同时发布带库和不带库的apk供用户选择,这样可以避免掉一些各自固有的问题)
   
  1.3 Deploy local Qt libs to temporary directory (部署到系统缓存目录)
  
    仅供测试用,强烈不推荐用来发布程序
   

2. apk签名

  这个是程序发布前的一个重要步骤。在签名前请开发者准备一个 keystore 和自签名**。
  
  如果开发者不清楚以上两者是什么,Qt Creator能帮助开发者生成自己的签名**,详情请参考下图:
  
  
  
  这个签名将能保证apk能通过应用商店来升级,也请备份好 keystore 文件
  
  下一步将说明如何设置打包步骤
  
3. apk打包

  接下来请将项目切换到release模式并选中“Sign Package”,详情可参考下图:
  
  
  
  点击“运行”按钮后,Qt Creator会自动打开apk所在目录,请注意正确的apk文件是“(QtApp-release.apk)”,如下图
  
  
  
下一篇文章将讲述如何使用JNI来扩展Qt程序的功能(译者注:我本来想写的,现在看来还是等作者写,绝对权威,然后我翻译好了)


译者对本篇文章的观后感:
  虽然原作者说的内容很少,但是细节方面是做的相当好,而且有足够的深度,推荐英文好的童鞋去看原文。
  对于此次的内容,可能对Ministro会有一些争议,有些人说它好,有些人说多安装一个东西会有点烦。这里我建议开发者同时发布带Ministro版和带库版,只需要在下载页面说清楚就好了,同时照顾小白和玩机达人。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

终于更新了,呵呵,期待下一篇,这样大家就可以系统学习了。  发表于 2014-4-8 19:01
回复

使用道具 举报

累计签到:6 天
连续签到:1 天
2014-4-10 22:51:19 显示全部楼层
等到新的教程了,又学到东西了
回复 支持 反对

使用道具 举报

尚未签到

2014-6-23 11:43:24 显示全部楼层
很期待怎么用手机上的那个mini USB和其他设备通信,楼主有这样的教程么
回复 支持 反对

使用道具 举报

尚未签到

2014-6-23 21:35:40 显示全部楼层
任意贴 发表于 2014-6-23 11:43
很期待怎么用手机上的那个mini USB和其他设备通信,楼主有这样的教程么

真没试过哦
回复 支持 反对

使用道具 举报

累计签到:4 天
连续签到:1 天
2016-7-22 11:38:49 显示全部楼层
看了这个真长见识了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册