zoukankan      html  css  js  c++  java
  • 第四步 使用 adt-eclipse 打包 Cordova (3.0及其以上版本) + sencha touch 项目

    cordova最新中文api

    http://cordova.apache.org/docs/zh/3.1.0/

    1、将Cordova 生成的项目导入到adt-eclipse中,如下:

    项目结构如下:

     

    导入之后可能报以下错误:

    解决方案:
    1.右击项目选择 properties
    2.选择android. 设置API 版本为你机子上安装最新版本,一般我们要下载最新的API,如图:


    3.确定后,菜单栏project,点击clean即可解决错误。

    其中config.xml为配置文件,res文件中放置启动图片,ico图标等

    config.xml:

     1 <?xml version='1.0' encoding='utf-8'?>
     2 <!-- <widget>元素的 id 属性提供了应用程式的反向域识别码和 version 主要/次要/修补程式符号表示其完整版本号码。 -->
     3 <widget xmlns:cdv="http://cordova.apache.org/ns/1.0"
     4     id="com.example.demo"
     5     version="0.0.1"
     6     xmlns="http://www.w3.org/ns/widgets" >
     7 
     8     <!-- <name>元素指定应用程式的正式名称,因为它出现在设备的主画面上和在应用程式商店介面内。 -->
     9     <name>
    10 demo
    11     </name>
    12     <!-- <description>和 <author> 的元素指定的中继资料和联繫资讯,可能会出现在应用程式商店清单内。 -->
    13     <description>
    14            这是一个基于Cordova 3.0 和 sencha touch 2。2.1 的示例项目  
    15     </description>
    16 
    17     <author
    18         email="534502520@qq.com"
    19         href="http://www.cnblogs.com/mlzs/" >
    20             我的联系方式
    21     </author>
    22     <!-- 可选的<content>元素在顶级的网络资产目录中定义应用程式的起始页。预设值是index.html的,其中通常出现在一个专案中的顶级万维网目录。 -->
    23     <content src="index.html" />
    24     <!-- <access>元素定义应用程式能够与进行通信的外部域的集。如上所示的预设值允许它访问任何伺服器。请参阅域白名单指南的详细资讯。 -->
    25     <access origin="*" />
    26     <!-- <preference>标记设置各种选项作为对名称/值属性。每个首选项的名称是不区分大小写。很多优惠是独有的特定平台上,如列于此页的顶部。以下各节详细介绍了适用于多个平台的首选项。 -->
    27     <!-- fullscreen使您可以隐藏在萤幕顶部的状态列。 -->
    28     <preference
    29         name="fullscreen"
    30         value="true" />
    31     <preference
    32         name="webviewbounce"
    33         value="true" />
    34     <!-- 设置为初始萤幕显示的图像。如果您的图像名称为 splash.png ,您需要如此设置。 -->
    35     <preference
    36         name="splashscreen"
    37         value="splash" />
    38     <!-- 设置启动画面显示时间,一旦接收到 app deviceready 事件,将调用 navigator.splashscreen.hide() 方法。 -->
    39     <preference
    40         name="splashScreenDelay"
    41         value="10000" />
    42     <!-- 不如此不能监听事件 -->
    43     <feature name="App" >
    44         <param
    45             name="android-package"
    46             value="org.apache.cordova.App" />
    47     </feature>
    48 
    49 </widget>

    AndroidManifest.xml:

     1 <?xml version='1.0' encoding='utf-8'?>
     2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     3     package="com.example.demo"
     4     android:hardwareAccelerated="true"
     5     android:versionCode="1"
     6     android:versionName="0.0.1"
     7     android:windowSoftInputMode="adjustPan" >
     8 
     9     <supports-screens
    10         android:anyDensity="true"
    11         android:largeScreens="true"
    12         android:normalScreens="true"
    13         android:resizeable="true"
    14         android:smallScreens="true"
    15         android:xlargeScreens="true" />
    16 
    17     <application
    18         android:debuggable="true"
    19         android:hardwareAccelerated="true"
    20         android:icon="@drawable/icon"
    21         android:label="@string/app_name" >
    22 
    23         <!-- <screenOrientation>使程序始终竖向,不相应屏幕旋转以免程序崩溃 -->
    24         <activity
    25             android:name="demo"
    26             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
    27             android:label="@string/app_name"
    28             android:screenOrientation="portrait"
    29             android:theme="@android:style/Theme.Black.NoTitleBar" >
    30             <intent-filter>
    31                 <action android:name="android.intent.action.MAIN" />
    32 
    33                 <category android:name="android.intent.category.LAUNCHER" />
    34             </intent-filter>
    35         </activity>
    36     </application>
    37 
    38     <uses-sdk
    39         android:minSdkVersion="10"
    40         android:targetSdkVersion="17" />
    41     <!-- 配置访问网络权限 -->
    42     <uses-permission android:name="android.permission.INTERNET" />
    43     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    44     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    45 
    46 </manifest>

    2.打开之前通过sencha touch cmd生成的项目进行开发,开发完成后,如下操作

    将之前通过Cordova 3.0生成的项目中的cordova.js引入到我们的sencha touch项目中,并且在app.json中配置

    项目简略结构如下:

    配置如下:

      1 {
      2     /**
      3      * 项目的命名空间
      4      */
      5     "name": "app",
      6     /**
      7      * 项目起始html文件,路径相对于此app.json文件
      8      */
      9     "indexHtmlPath": "index.html",
     10     /**
     11      * 运行此项目的url路径,比如: "http://localhost/myapp/index.html".
     12      *
     13      *当设置此值时,将不能通过文件系统直接访问。
     14      */
     15     "url": null,
     16     /**
     17      * 所需引用js文件
     18      * 单个格式如下
     19      *      {
     20      *          "path": "path/to/script.js" // 文件路径,如果本地文件,路径相对于此app.json文件
     21      *          "remote": true              // (可选值)
     22      *                                      // -默认值为"false"
     23      *                                      // -"true",如果这个文件是一个远程文件不会被复制
     24      *          "update": "delta"           // (可选值)
     25      *                                      // 如果没有指定,这个文件将只加载一次,
     26      *                                        // 缓存到localStorage里面,直到这个值被改变。
     27      *                                      //  - "delta" 增量更新此文件
     28      *                                      //  - "full" 当文件改变时,完全更新此文件
     29      *          "x-bootstrap": true         // (可选值)
     30      *                                      // 表示这是项目依赖文件。
     31      *                                      // 该文件不会被复制到生成目录或引用
     32      *
     33      *      }
     34      */
     35     "js": [{
     36         "path": "touch/sencha-touch.js",
     37         "x-bootstrap": true
     38     },
     39     {
     40         "path": "cordova.js",
     41         "update": "delta"
     42     },
     43     {
     44         "path": "app.js",
     45         /* 表示所有的类生成到这个文件 */
     46         "bundle": true,
     47         "update": "delta"
     48     }],
     49     /**
     50      *所需引用js文件
     51      * 单个格式如下
     52      *      {
     53      *          "path": "path/to/script.js" // 文件路径,如果本地文件,路径相对于此app.json文件
     54      *          "remote": true              // (可选值)
     55      *                                      // -默认值为"false"
     56      *                                      // -"true",如果这个文件是一个远程文件不会被复制
     57      *          "update": "delta"           // (可选值)
     58      *                                      // 如果没有指定,这个文件将只加载一次,
     59      *                                        // 缓存到localStorage里面,直到这个文件被改变。
     60      *                                      //  - "delta" 增量更新此文件
     61      *                                      //  - "full" 当文件改变时,完全更新此文件
     62      *
     63      *      }
     64      */
     65     "css": [{
     66         "path": "resources/css/app.css",
     67         "update": "delta"
     68     },
     69     {
     70         "path": "resources/css/main.css",
     71         "update": "delta"
     72     }],
     73     /**
     74      *项目生成时用于自动生成HTML5应用程序缓存清单(cache.manifest)
     75      */
     76     "appCache": {
     77         /**
     78          * 本地缓存名单
     79          */
     80         "cache": ["index.html"],
     81         /**
     82          * 网络缓存名单
     83          */
     84         "network": ["*"],
     85         /**
     86          * FALLBACK缓存名单
     87          */
     88         "fallback": []
     89     },
     90     /**
     91      * 项目生成时需要复制的资源文件,resources中文件夹不可以删除,否则会出错,里面的文件可以删除
     92      */
     93     "resources": ["resources/images", "resources/json"],
     94     /**
     95      * 项目生成时忽略的文件/目录名称匹配,必须是有效的正则表达式
     96      */
     97     "ignore": [".svn$"],
     98     /**
     99      * 之前生成项目储存目录,用于进行增量更新,不可随意改变此目录下的文件
    100      */
    101     "archivePath": "archive",
    102     /**
    103      * 在cmd创建时需要引用的类
    104      */
    105     "requires": [],
    106     /**
    107      * 唯一ID,作为localStorage前缀。
    108      * 通常情况下,你不应该改变这个值。
    109      */
    110     "id": "d8504e05-a9fc-4692-bdbc-94c3190751f5"
    111 }

    使用cmd生成项目

    将生成后的项目引入到adt项目中

    签名打包

    Eclipse工程中右键工程,弹出选项中选择 android工具-生成签名应用包:

    选择需要打包的android项目工程:

    如果已有私钥文件,选择私钥文件输入密码,如果没有参见第6和7步创建私钥文件:

    4.输入私钥别名和密码:

    5.选择APK存储的位置,并完成设置 开始生成:

    6.没有私钥文件的情况,创建私钥文件:

    7.输入私钥文件所需信息,并创建:

    *SDK的安装目录最后不要有中文和空格,否则会出现不必要的错误。如果你的安装路径包含Program Files(有空格),用ADT打包会报错,Ant方式打包的也会报错,没关系,不用重装,解决方法:配置SDk环境变量和在Eclipse中配置SDK路径的时候把Program Files改为Progra~1即可。(而且改成其他的都不行,只能是Progra~1,不信试试,这是Dos的规格)。

  • 相关阅读:
    RocketMQ读书笔记3——消费者
    RocketMQ读书笔记1——简述
    02_dubbo实例_多版本号
    01_dubbo实例_服务分组
    分布式开放消息系统(RocketMQ)的原理与实践
    关于ajax的那些事
    关于html5之canvas的那些事
    关于js封装框架类库之属性操作
    关于js封装框架类库之样式操作
    关于js封装框架类库之事件模块
  • 原文地址:https://www.cnblogs.com/mlzs/p/3437445.html
Copyright © 2011-2022 走看看