由于最近一直忙着android原生的开发,很久没有更新博客了,官方的sencha cmd工具功能非常强大,创建项目,压缩项目,打包安装程序都能轻松实现,这讲我们就给大家介绍下如何使用sencha cmd来打包我们的sencha touch项目,

  为了更好地向大家演示如何打包一个sencha touch的项目,我们用sencha cmd创建一个演示项目,如果你的sencha cmd环境还没有配置,请参照sencha touch 入门系列 (二)sencha touch 开发准备进行配置。

  首先在开始-》运行中输入cmd,回车,打开命令行工具,cd指令进入到我们的sencha touch的sdk目录中,执行项目创建的指令:

  

  此时在webtest路径中便创建了一个testPackage的项目,我们打开项目中创建生成的packager.json文件,这个就是我们将sencha touch项目打包成安装程序的默认配置文件

  

  

  1. {
  2. /**
  3. * @cfg applicationName
  4. * @required
  5. * 这个属性是用来配置你的应用程序在移动设备上安装后所显示的应用名称
  6. * 如果是ios程序,这个属性必须匹配你的应用在 Apple Provisioning Portal的名称
  7. */
  8. "applicationName":"testPackage",
  9.  
  10. /**
  11. * @cfg applicationId
  12. * applicationId这个属性是你项目的命名空间,在android上即你的包名(packagename),根据android官方的要求,这个名称应该
  13. * 以域名倒过来的方式命名,如:com.test.myapp,以保证包名的唯一性,使用sencha cmd打包android项目时这个属性必须这么配置
  14. * 否则打包时会报错
  15. * 在ios设备上,这个属性必须匹配你的应用在Apple Provisioning Portal上的名称
  16. */
  17. "applicationId":"com.test.myapp",
  18.  
  19. /**
  20. * @cfg bundleSeedId
  21. * ios配置,Apple Provisioning Portal的aplication ID前的10个字符串
  22. */
  23. "bundleSeedId":"KPXFEPZ6EF",
  24.  
  25. /**
  26. * @cfg versionString
  27. * @required
  28. * 你的应用的版本号.字符展示
  29. */
  30. "versionString":"1.0",
  31.  
  32. /**
  33. * @cfg versionCode
  34. * @required
  35. * Version code,应用的版本号,这个属性只对android有效,对应android的AndroidManifest.xml中的versionCode,这个值必须是整数
  36. * 通常情况下,我们版本更新的判断都是依据这个值来的,一般新的版本会在原有版本的versionCode的值上进行增加,而VersionString只是用来展示给用户看的版本号
  37. */
  38. "versionCode":"1",
  39.  
  40. /**
  41. * @cfg icon
  42. * icon 顾名思义,即我们的应用程序的图标位置
  43. * 在ios中,请参考ios的文档进行配置,地址如下
  44. * https://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html
  45. *
  46. * 在android中,请参考android的文档进行配置,地址如下
  47. * http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html
  48. *
  49. * iOS 使用 57,72, 114 和144,android使用 36, 48 和 72, 如果你打包的是android程序,你可以忽略ios的图标
  50. */
  51. "icon": {
  52. "36":"resources/icons/Icon_Android36.png",
  53. "48":"resources/icons/Icon_Android48.png",
  54. "57":"resources/icons/Icon.png",
  55. "72":"resources/icons/Icon~ipad.png",
  56. "114":"resources/icons/Icon@2x.png",
  57. "144":"resources/icons/Icon~ipad@2x.png"
  58. },
  59.  
  60. /**
  61. * @cfg inputPath
  62. * @required
  63. * inputPath即输入路径,代表你的sencha touch项目相对于packager.json配置文件所在的路径,默认情况下这里都不需要进行修改
  64. */
  65. "inputPath":"./",
  66.  
  67. /**
  68. * @cfg outputPath
  69. * @required
  70. * outputPath 即输出路径,如果你不修改,默认会在你的st项目中生成一个build文件夹,存放到build路径下
  71. */
  72. "outputPath":"../build/",
  73.  
  74. /**
  75. * @cfg configuration
  76. * @required
  77. * 这个属性用来配置你的项目是用来调试的还是用来发布的,
  78. * Debug 即调试模式
  79. * Release 即发布模式
  80. */
  81. "configuration":"Debug",
  82.  
  83. /**
  84. * @cfg platform
  85. * @required
  86. * platform 用来配置你的项目的打包平台
  87. * - iOSSimulator ios模拟器
  88. * - iOS ios真机
  89. * - Android android真机
  90. * - AndroidEmulator android模拟器
  91. * 这里我们打包android程序,设置成android
  92. */
  93. "platform":"Android",
  94.  
  95. /**
  96. * @cfg deviceType
  97. * @required
  98. * 设备类型
  99. * 这个属性是针对ios的,如果是android设备就不需要配置
  100. *
  101. * 可选配置:
  102. * - iPhone iphone手机
  103. * - iPad iphone平板
  104. * - Universal 全兼容
  105. */
  106. "deviceType":"Universal",
  107.  
  108. /**
  109. * @cfg certificatePath
  110. * 证书路径,如果你发布的android版本是Release的,那这个证书路径就必须设置,即keystore的路径,
  111. * keystore可以使用指令生成,也可以使用eclipse来生成,这里我设置的自己的keystore路径,android打包中如果你上面的configration配置的是debug,可以不用设置证书路径
       * android会自动产生一个debugkeystore来进行临时发布,但是发布Release的时候必须设置这个属性
  112. */
  113. "certificatePath":"D:/webtest/CM/CloudMarket-key.keystore",
  114.  
  115. /**
  116. * @cfg certificateAlias
  117. * 证书的别名
  118. */
  119. "certificateAlias":"cloudMarket",
  120. /**
  121. * @cfg certificatePassword
  122. * 证书对应的密码
  123. */
  124. "certificatePassword":"whf871125",
  125. /**
  126. * @cfg provisionProfile
  127. * 从Apple's provisioning portal上下载的provision profile (APP_NAME.mobileprovision)的路径
  128. */
  129. "provisionProfile":"",
  130. /**
  131. * @cfg notificationConfiguration
  132. * 提示窗口的配置可以设置“debug”,“release”,如果你不使用提示栏就设置为空
  133. */
  134. "notificationConfiguration":"",
  135. /**
  136. * @cfg sdkPath
  137. * android sdk的路径.
  138. */
  139. "sdkPath":"D:/android/adt-bundle-windows-x86-20130522/sdk",
  140.  
  141. /**
  142. * @cfg androidAPILevel
  143. * android的apiLevel,对应的android sdk的版本,这里相当于配置android应用最低支持的api版本,关于android的api Level可以到下面的地址去阅读
  144. * http://developer.android.com/guide/appendix/api-levels.html.
  145. * 确认你在android sdk manager里已经安装了对应的sdk api 版本 (android_sdk/tools/android)
  146. * 这里我们设置的是8,即android 2.2版本
  147. */
  148. "androidAPILevel":"8",
  149.  
  150. /**
  151. * @cfg {Array[String]} permissions
  152. * android的应用权限,关于android的应用权限介绍参考:
  153. * http://developer.android.com/reference/android/Manifest.permission.html#ACCESS_CHECKIN_PROPERTIES
  154. */
  155. "permissions":[
  156. "INTERNET",
  157. "ACCESS_NETWORK_STATE",
  158. "CAMERA",
  159. "VIBRATE",
  160. "ACCESS_FINE_LOCATION",
  161. "ACCESS_COARSE_LOCATION",
  162. "CALL_PHONE"
  163. ],
  164.  
  165. /**
  166. * @cfg {Array[String]} orientations
  167. * @required
  168. * 手机屏幕的旋转配置
  169. */
  170. "orientations": [
  171. "portrait",//竖直
  172. "landscapeLeft",//左屏幕方向的横屏
  173. "landscapeRight",//右屏幕方向的和平
  174. "portraitUpsideDown"//倒过来的竖屏
  175. ]
  176. }

基本的配置我们参照上面的注释来配置就可以了,关于keystore的生成,可以参考这篇教程:

http://www.cppblog.com/fwxjj/archive/2014/03/13/116208.html

配置好上面的packager.json后,我们用cmd工具进入到项目路径下,执行sencha app build native

如图:

只要配置没有问题就会在项目路径下生成build文件夹,文件夹里的内容如图

native文件夹中即压缩的st项目,

native-packager-mobile中即会生成我们所需的安装程序

这样我们的打包就完成了

注:sencha touch 目前自带了一些native api 即用来调用相机,gps这类的原生api,官方文档中如果注明支持sencha packager的,那么sencha cmd打包安装程序的时候会自动实现该功能,如果sencha packager不支持的,那只有通过phonegap的方式实现了,在sencha touch中,所有的native api都会对实现方式进行判断,以照相机为例:

  1. Ext.define('Ext.device.Camera', {
  2. singleton: true,
  3.  
  4. requires: [
  5. 'Ext.device.Communicator',
  6. 'Ext.device.camera.Cordova',
  7. 'Ext.device.camera.Sencha',
  8. 'Ext.device.camera.Simulator'
  9. ],
  10.  
  11. constructor: function() {
  12. var browserEnv = Ext.browser.is;
  13.  
  14. if (browserEnv.WebView) {
  15. if (browserEnv.Cordova) {
  16. return Ext.create('Ext.device.camera.Cordova');
  17. } else if (browserEnv.Sencha) {
  18. return Ext.create('Ext.device.camera.Sencha');
  19. }
  20. }
  21.  
  22. return Ext.create('Ext.device.camera.Simulator');
  23. }
  24. });

这里对native api的实现进行了判断,从而选择使用哪种方式,由于sencha touch的native api通过sencha packager实现的比较有限,且复杂的功能无法自定义,然而phonegap不光自带的api较多,且拥有强大的插件机制可以让开发者自定义api插件,所以实际开发中可能使用phonegap打包的情况更多,

下一讲我们将讲解如何使用phonegap来进行项目打包

 

sencha touch 扩展篇之将sencha touch打包成安装程序(上)- 使用sencha cmd打包安装程序的更多相关文章

  1. sencha touch 扩展篇之将sencha touch打包成安装程序(下)- 使用phonegap打包安装程序

        这讲我们来讲解下如何使用phonegapa创建项目环境并通过她们将sencha touch打包成app,这里我们只讲解打包android的apk,打包ios的过程有点类似,但是需要在mac环境 ...

  2. sencha touch 扩展篇之使用sass自定义主题样式 (上)使用官方的api修改主题样式

    大家知道,sencha touch是通过我们写的js代码来动态渲染单页面生成一个个div+css的html页面来模拟app应用,那么既然是div+css结构的,我们就可以通过修改css样式来自定义我们 ...

  3. sencha touch 扩展篇之使用sass自定义主题样式 (下)通过css修改官方组件样式以及自定义图标

    上一讲我们讲解了如何使用官方的api来修改主题样式,这讲我们继续讲解sass的样式修改, 编译官方自带的主题包  在生成的项目以及官方sdk的目录下,自带了一些主题sass包,我们也可以通过修改sas ...

  4. sencha touch 入门系列 扩展篇之sencha touch 项目打包压缩

    经常有新手同学抱怨说sencha touch的项目加载速度为什么这么慢,经常要10秒左右的时间甚至更多, 大家都知道,sencha touch开发的项目中引用了大量的js文件,当我们打开项目时,st的 ...

  5. sencha touch打包成安装程序

    为了更好地向大家演示如何打包一个sencha touch的项目,我们用sencha cmd创建一个演示项目,如果你的sencha cmd环境还没有配置,请参照 sencha touch 入门系列 (二 ...

  6. zTouch-移动端触屏开发利器(zepto touch扩展)

    * Zepto.js v1.0.1 touch extend (Zepto.js v1.0.1 的swipe touch扩展)js-处理手机移动端web触屏手势动作. Zepto.js v1.0.1版 ...

  7. WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[扩展篇]

    原文:WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[扩展篇] 通过<实现篇>对WSDL元素和终结点三要素的之间的匹配关系的介绍,我们知道了WSDL的Binding ...

  8. Android项目刮刮奖详解扩展篇——开源刮刮奖View的制作

    Android项目刮刮奖详解(四) 前言 我们已经成功实现了刮刮奖的功能了,本期是扩展篇,我们把这个View直接定义成开源控件,发布到JitPack上,以后有需要也可以直接使用,关于自定义控件的知识, ...

  9. Java 兔子问题(斐波那契数列)扩展篇

    Java兔子问题(斐波那契数列)扩展篇 斐波那契数列指的是这样一个数列 0, 1, 1, 2,3, 5, 8, 13, 21, 34, 55, 89, 144, ...对于这个数列仅仅能说将兔子生产周 ...

随机推荐

  1. Iconfont在移动端遇到问题的探讨

    Iconfont越来越得到前端的关注,特别是阿里那个iconfont库的推出和不断完善,再加上连IE6都能兼容,的确是个好东西. 既然那么火,我们公司移动项目也计划加入这个iconfont,于是我就针 ...

  2. 重点:怎样正确的使用QThread类(注:包括推荐使用QThread线程的新方法QObject::moveToThread)

    背景描述: 以前,继承 QThread 重新实现 run() 函数是使用 QThread唯一推荐的使用方法.这是相当直观和易于使用的.但是在工作线程中使用槽机制和Qt事件循环时,一些用户使用错了.Qt ...

  3. am335x gpio分析

    /************************************************************************ * am335x_gpio * 本文主要记录am33 ...

  4. pip -i 和 -U 参数

    例子: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U funcat -i: 指定库的安装源 -U:升级 原来已经安装的包,不带U ...

  5. 一种是CI(Constructor Injection)构造方法注入,另一种是SI(Set Injection) set 注入

    一:这里先说一下DI(Dependency Injection)依赖注入有种表现形式:一种是CI(Constructor Injection)构造方法注入,另一种是SI(Set Injection) ...

  6. 一些 Linux 常用命令说明

    目前由于自己接触到的是 Windows 的操作系统,所以会经常使用 git bash 来提交代码到 github上. git bash 是 Windows 下模拟 Linux 的命令行工具. 在此总结 ...

  7. openal 基础知识4

    二函数 1. buffer函数 void alGenBuffers(ALsizei n /* buffer数*/, ALuint * buffers /* buffer ID数组*/); void a ...

  8. js 动态设置 option 的selected 选项

    思路:通过for循环判断每个选项,一旦满足条件则设置其selected属性为true即可,关键代码: var obj = document.getElementById(select_id); for ...

  9. 查询_修改SQL Server 2005中数据库文件存放路径

    1.查看当前的存放路径: select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.maste ...

  10. C# 基础小知识之yield 关键字

    对于yield关键字我们首先看一下msdn的解释: 如果你在语句中使用 yield 关键字,则意味着它在其中出现的方法.运算符或 get 访问器是迭代器. 通过使用 yield 定义迭代器,可在实现自 ...