由于最近一直忙着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项目打包成安装程序的默认配置文件

  

  

{
/**
* @cfg applicationName
* @required
* 这个属性是用来配置你的应用程序在移动设备上安装后所显示的应用名称
* 如果是ios程序,这个属性必须匹配你的应用在 Apple Provisioning Portal的名称
*/
"applicationName":"testPackage", /**
* @cfg applicationId
* applicationId这个属性是你项目的命名空间,在android上即你的包名(packagename),根据android官方的要求,这个名称应该
* 以域名倒过来的方式命名,如:com.test.myapp,以保证包名的唯一性,使用sencha cmd打包android项目时这个属性必须这么配置
* 否则打包时会报错
* 在ios设备上,这个属性必须匹配你的应用在Apple Provisioning Portal上的名称
*/
"applicationId":"com.test.myapp", /**
* @cfg bundleSeedId
* ios配置,Apple Provisioning Portal的aplication ID前的10个字符串
*/
"bundleSeedId":"KPXFEPZ6EF", /**
* @cfg versionString
* @required
* 你的应用的版本号.字符展示
*/
"versionString":"1.0", /**
* @cfg versionCode
* @required
* Version code,应用的版本号,这个属性只对android有效,对应android的AndroidManifest.xml中的versionCode,这个值必须是整数
* 通常情况下,我们版本更新的判断都是依据这个值来的,一般新的版本会在原有版本的versionCode的值上进行增加,而VersionString只是用来展示给用户看的版本号
*/
"versionCode":"1", /**
* @cfg icon
* icon 顾名思义,即我们的应用程序的图标位置
* 在ios中,请参考ios的文档进行配置,地址如下
* https://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html
*
* 在android中,请参考android的文档进行配置,地址如下
* http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html
*
* iOS 使用 57,72, 114 和144,android使用 36, 48 和 72, 如果你打包的是android程序,你可以忽略ios的图标
*/
"icon": {
"36":"resources/icons/Icon_Android36.png",
"48":"resources/icons/Icon_Android48.png",
"57":"resources/icons/Icon.png",
"72":"resources/icons/Icon~ipad.png",
"114":"resources/icons/Icon@2x.png",
"144":"resources/icons/Icon~ipad@2x.png"
}, /**
* @cfg inputPath
* @required
* inputPath即输入路径,代表你的sencha touch项目相对于packager.json配置文件所在的路径,默认情况下这里都不需要进行修改
*/
"inputPath":"./", /**
* @cfg outputPath
* @required
* outputPath 即输出路径,如果你不修改,默认会在你的st项目中生成一个build文件夹,存放到build路径下
*/
"outputPath":"../build/", /**
* @cfg configuration
* @required
* 这个属性用来配置你的项目是用来调试的还是用来发布的,
* Debug 即调试模式
* Release 即发布模式
*/
"configuration":"Debug", /**
* @cfg platform
* @required
* platform 用来配置你的项目的打包平台
* - iOSSimulator ios模拟器
* - iOS ios真机
* - Android android真机
* - AndroidEmulator android模拟器
* 这里我们打包android程序,设置成android
*/
"platform":"Android", /**
* @cfg deviceType
* @required
* 设备类型
* 这个属性是针对ios的,如果是android设备就不需要配置
*
* 可选配置:
* - iPhone iphone手机
* - iPad iphone平板
* - Universal 全兼容
*/
"deviceType":"Universal", /**
* @cfg certificatePath
* 证书路径,如果你发布的android版本是Release的,那这个证书路径就必须设置,即keystore的路径,
* keystore可以使用指令生成,也可以使用eclipse来生成,这里我设置的自己的keystore路径,android打包中如果你上面的configration配置的是debug,可以不用设置证书路径
   * android会自动产生一个debugkeystore来进行临时发布,但是发布Release的时候必须设置这个属性
*/
"certificatePath":"D:/webtest/CM/CloudMarket-key.keystore", /**
* @cfg certificateAlias
* 证书的别名
*/
"certificateAlias":"cloudMarket",
/**
* @cfg certificatePassword
* 证书对应的密码
*/
"certificatePassword":"whf871125",
/**
* @cfg provisionProfile
* 从Apple's provisioning portal上下载的provision profile (APP_NAME.mobileprovision)的路径
*/
"provisionProfile":"",
/**
* @cfg notificationConfiguration
* 提示窗口的配置可以设置“debug”,“release”,如果你不使用提示栏就设置为空
*/
"notificationConfiguration":"",
/**
* @cfg sdkPath
* android sdk的路径.
*/
"sdkPath":"D:/android/adt-bundle-windows-x86-20130522/sdk", /**
* @cfg androidAPILevel
* android的apiLevel,对应的android sdk的版本,这里相当于配置android应用最低支持的api版本,关于android的api Level可以到下面的地址去阅读
* http://developer.android.com/guide/appendix/api-levels.html.
* 确认你在android sdk manager里已经安装了对应的sdk api 版本 (android_sdk/tools/android)
* 这里我们设置的是8,即android 2.2版本
*/
"androidAPILevel":"8", /**
* @cfg {Array[String]} permissions
* android的应用权限,关于android的应用权限介绍参考:
* http://developer.android.com/reference/android/Manifest.permission.html#ACCESS_CHECKIN_PROPERTIES
*/
"permissions":[
"INTERNET",
"ACCESS_NETWORK_STATE",
"CAMERA",
"VIBRATE",
"ACCESS_FINE_LOCATION",
"ACCESS_COARSE_LOCATION",
"CALL_PHONE"
], /**
* @cfg {Array[String]} orientations
* @required
* 手机屏幕的旋转配置
*/
"orientations": [
"portrait",//竖直
"landscapeLeft",//左屏幕方向的横屏
"landscapeRight",//右屏幕方向的和平
"portraitUpsideDown"//倒过来的竖屏
]
}

基本的配置我们参照上面的注释来配置就可以了,关于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都会对实现方式进行判断,以照相机为例:

Ext.define('Ext.device.Camera', {
singleton: true, requires: [
'Ext.device.Communicator',
'Ext.device.camera.Cordova',
'Ext.device.camera.Sencha',
'Ext.device.camera.Simulator'
], constructor: function() {
var browserEnv = Ext.browser.is; if (browserEnv.WebView) {
if (browserEnv.Cordova) {
return Ext.create('Ext.device.camera.Cordova');
} else if (browserEnv.Sencha) {
return Ext.create('Ext.device.camera.Sencha');
}
} return Ext.create('Ext.device.camera.Simulator');
}
});

这里对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. NLog 配置与使用

    有段时间没写博客了,过年放假,一直在弄CMS.什么都自己写了一遍,今天写写NLog,之前一用的log4net,感觉配置起来还是有些麻烦. NuGet 添加组件 配置 NLog.config <? ...

  2. rails rake和示例

    一篇看到的讲解得不错的文章 http://blog.csdn.net/clskkk2222/article/details/6735365 这里还有一些例子: Rake Documentation R ...

  3. 几个Tab,滑动门,选项卡,图片切换

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  4. 周末大礼:jQuery技巧总结

    一.简介 1.1.概述 随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名的有Prototype.YUI.jQuery.mootools.Bindows ...

  5. TensorFlow基础笔记(11) conv2D函数

    #链接:http://www.jianshu.com/p/a70c1d931395 import tensorflow as tf import tensorflow.contrib.slim as ...

  6. jquery 中json数组的操作(转)

    在jquery中处理JSON数组的情况中遍历用到的比较多,但是用添加移除这些好像不是太多. 今天试过json[i].remove(),json.remove(i)之后都不行,看网页的DOM对象中好像J ...

  7. 转载:MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解

    转自:http://www.jb51.net/article/39199.htm 本篇文章是对MySQL数据库INSERT.UPDATE.DELETE以及REPLACE语句的用法进行了详细的分析介绍, ...

  8. Spring-处理自动装配的歧义性

    自动装配可以对依赖注入提供很大帮助,因为它会减少装配应用程序组件时所需的显式装配的数量. 不过,仅有一个bean匹配所需的结果时,自动装配才是有效的.如果不仅有一个bean能够匹配的话,这种歧义性会阻 ...

  9. jQuery-处理元素内容、表单元素

    处理元素内容 1.text方法 使用说明: 1)不传参数 得到jQuery对象内所有元素及其后代元素的文本内容 2)传入用于设置匹配元素的文本内容 3)传入function 使用函数来设置jQuery ...

  10. LR通用的性能分析流程

    Step1:从分析Summary的事务执行情况入手Summary主要是判定事务的响应时间与执行情况是否合理.如果发现问题,则需要做进一步分析.通常情况下,如果事务执行情况失败或响应时间过长等,都需要做 ...