首先你得安装一个adt-eclipse

参考资料

http://www.crifan.com/android_eclipse_offline_install_adt/

然后就可以运行adt-eclipse来进行打包

1.新建Android一个项目

打开Eclipse,单击菜单栏的“File”->把鼠标光标移动到“New”->在弹出的列表框中,如果直接能看到“Android Applicaion Project”选项项,则直接单击此选项,否则选择最下面的“Other...”,在弹出的窗口中,展开“Android”项,选择“Android Applicaion Project”,然后“Next”;

其实还有一个方法就是直接点Eclipse工具栏的如下图所指示的图标:

在新弹出的窗口中按下图提s示填写相关信息,一路“Next”,直到点击“Finish”,这样第一个Android程序就创建好了,这是你会发现Eclipse左边多了一个你新创建的Android项目。

2.将sencha touch项目导入

因为需要加入cordova,所以我们需要从http://cordova.apache.org/下载一个cordova的包

http://archive.apache.org/dist/cordova/cordova-2.6.0-src.zip我现在用的是2.6版本的

在安卓项目中结构目录如下:

如图我们需要将cordova的jar包引入,然后需要在res/xml目录下加入cordova的配置文件config.xml

代码如下:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <!--
 3        Licensed to the Apache Software Foundation (ASF) under one
 4        or more contributor license agreements.  See the NOTICE file
 5        distributed with this work for additional information
 6        regarding copyright ownership.  The ASF licenses this file
 7        to you under the Apache License, Version 2.0 (the
 8        "License"); you may not use this file except in compliance
 9        with the License.  You may obtain a copy of the License at
10
11          http://www.apache.org/licenses/LICENSE-2.0
12
13        Unless required by applicable law or agreed to in writing,
14        software distributed under the License is distributed on an
15        "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16        KIND, either express or implied.  See the License for the
17        specific language governing permissions and limitations
18        under the License.
19 -->
20 <cordova>
21     <!--
22     access elements control the Android whitelist.
23     Domains are assumed blocked unless set otherwise
24      -->
25
26     <access origin="http://127.0.0.1*"/> <!-- allow local pages -->
27
28     <!-- <access origin="https://example.com" /> allow any secure requests to example.com -->
29     <!-- <access origin="https://example.com" subdomains="true" /> such as above, but including subdomains, such as www -->
30     <access origin=".*"/>
31
32     <!-- <content src="http://mysite.com/myapp.html" /> for external pages -->
33     <content src="index.html" />
34
35     <log level="DEBUG"/>
36     <preference name="useBrowserHistory" value="true" />
37     <preference name="exit-on-suspend" value="false" />
38 <plugins>
39     <plugin name="App" value="org.apache.cordova.App"/>
40     <plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/>
41     <plugin name="Device" value="org.apache.cordova.Device"/>
42     <plugin name="Accelerometer" value="org.apache.cordova.AccelListener"/>
43     <plugin name="Compass" value="org.apache.cordova.CompassListener"/>
44     <plugin name="Media" value="org.apache.cordova.AudioHandler"/>
45     <plugin name="Camera" value="org.apache.cordova.CameraLauncher"/>
46     <plugin name="Contacts" value="org.apache.cordova.ContactManager"/>
47     <plugin name="File" value="org.apache.cordova.FileUtils"/>
48     <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>
49     <plugin name="Notification" value="org.apache.cordova.Notification"/>
50     <plugin name="Storage" value="org.apache.cordova.Storage"/>
51     <plugin name="FileTransfer" value="org.apache.cordova.FileTransfer"/>
52     <plugin name="Capture" value="org.apache.cordova.Capture"/>
53     <plugin name="Battery" value="org.apache.cordova.BatteryListener"/>
54     <plugin name="SplashScreen" value="org.apache.cordova.SplashScreen"/>
55     <plugin name="Echo" value="org.apache.cordova.Echo" />
56     <plugin name="Globalization" value="org.apache.cordova.Globalization"/>
57     <plugin name="InAppBrowser" value="org.apache.cordova.InAppBrowser"/>
58 </plugins>
59 </cordova>

然后需要修改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.jy110"
 4     android:hardwareAccelerated="true"
 5     android:versionCode="1"
 6     android:versionName="1.0"
 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     <uses-sdk
18         android:minSdkVersion="8"
19         android:targetSdkVersion="16" />
20
21     <uses-permission android:name="android.permission.CAMERA" />
22     <uses-permission android:name="android.permission.VIBRATE" />
23     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
24     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
25     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
26     <uses-permission android:name="android.permission.INTERNET" />
27     <uses-permission android:name="android.permission.RECEIVE_SMS" />
28     <uses-permission android:name="android.permission.RECORD_AUDIO" />
29     <uses-permission android:name="android.permission.RECORD_VIDEO" />
30     <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
31     <uses-permission android:name="android.permission.READ_CONTACTS" />
32     <uses-permission android:name="android.permission.WRITE_CONTACTS" />
33     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
34     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
35     <uses-permission android:name="android.permission.GET_ACCOUNTS" />
36     <uses-permission android:name="android.permission.BROADCAST_STICKY" />
37
38     <application
39         android:allowBackup="true"
40         android:icon="@drawable/ic_launcher"
41         android:label="@string/app_name"
42         android:theme="@style/AppTheme" >
43         <activity
44             android:name="com.example.jy110.Jy110Activity"
45             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
46             android:label="@string/app_name"
47             android:theme="@android:style/Theme.Black.NoTitleBar" >
48             <intent-filter>
49                 <action android:name="android.intent.action.MAIN" />
50
51                 <category android:name="android.intent.category.LAUNCHER" />
52             </intent-filter>
53         </activity>
54     </application>
55
56 </manifest>

现在环境基本配置完成了,接下来就把我们的html5项目引入进去

我们将做好的项目放进一个www的文件,如下图:

然后将整个www文件放入安卓项目的assets目录下

然后修改src之中的项目启动文件,我这里是Jy110Activity文件,代码如下

 1 package com.example.jy110;
 2
 3 import org.apache.cordova.DroidGap;
 4
 5 import android.annotation.TargetApi;
 6 import android.os.Bundle;
 7
 8
 9 public class Jy110Activity extends DroidGap {
10     private int retryCount = 0;
11     @Override
12     public void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         //设置启动图片
15         super.setIntegerProperty("splashscreen", R.drawable.splash);
16         super.init();
17         //解决4.1以上安卓白屏问题
18         if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
19             fixJellyBeanIssues();
20         }
21         //运行html5项目
22         super.loadUrl("file:///android_asset/www/index.html",5000);
23     }
24
25     @TargetApi(16)
26     protected void fixJellyBeanIssues() {
27         System.out.println(super.appView.toString());
28         try {
29             super.appView.getSettings().setAllowUniversalAccessFromFileURLs(true);
30         } catch(NullPointerException e) {
31             System.out.println(e.toString());
32         }
33     }
34
35     @Override
36     public void onReceivedError( int errorCode, String description, String failingUrl)
37     {
38         if(retryCount < 3) {
39             retryCount++;
40             super.loadUrl("file:///android_asset/www/index.html");
41         } else {
42             super.loadUrl("file:///android_asset/www/fail.html");
43         }
44         return;
45     }
46
47 }

在st项目中引入cordova.js文件,在app.js中加入以下代码

Ext.Loader.setConfig({enabled: true
});
/*
*请自行添加模拟数据
*这里涉及到了
*路由:controller.Main
*List:view.img.List
*历史记录支持、自动销毁、自定义消息提示:view.img.util.CardPanel
*登录、注册:controller.User和view.user
*Carousel:view.img.List和controller(除开user)
*如有问题请联系qq:534502520 q群:224711028 213119459@魔狼再世 欢迎交流
*此版本已在安卓中打包测试
*/
Ext.application({name: 'app',appFolder: 'app',controllers: ['Main', 'User','Img'],views: ['util.CardPanel'],//请求地址postUrl: 'http://localhost:40231/PictureManager/mynetpic/',//过期时间sessionTimeout: 1000 * 60 * 60 * 24 * 30,launch: function () {Ext.Viewport.add({xclass: 'app.view.util.CardPanel'});// 等待加载PhoneGapdocument.addEventListener("deviceready", onDeviceReady, false);// PhoneGap加载完毕后执行,这样就可以在项目中使用PhoneGap调用手机硬件function onDeviceReady() {}}
});

这样就算完成了,之后就是打包项目了。

3.签名打包

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的规格)。

附上项目实例一份,在adt-eclipse工具中,file-Import

选择导入即可

http://download.csdn.net/detail/jy02534655/5635403

第二步 (仅供参考) sencha touch + PhoneGap(cordova 2.9 及其以下版本) 使用 adt eclipse进行打包...相关推荐

  1. sencha touch + PhoneGap(cordova) 使用 adt eclipse进行打包

    先你得安装一个adt-eclipse 参考资料 http://www.crifan.com/android_eclipse_offline_install_adt/ 然后就可以运行adt-eclips ...

  2. 网络面经总结-仅供参考

    网络面经总结-仅供参考 1 服务器如何判断客户端连接不上了 1.1 recv 1.2 服务器一段时间内没接收到客户端心跳包反馈 1.3 struct tcp_info info 1.4[保活参数](h ...

  3. 大数据练习题答案(仅供参考)

    上一篇练习题的答案,题目里带括号的都是批注,如果看的不清楚,可以去我的资源下载(资源里批注清楚,都是红色批出来的) 一.选择题 Hadoop作者 ( C ) A.Martin Fowler B.Ken ...

  4. EndNote: CQUPT 2023年硕士毕业论文的参考文献插入方法 仅供参考,其实很繁琐

    目录 1. 方式一:交叉引用 基本步骤 第一步 第二步 第三步 2. 方式二:EndNote(建议使用) 基本步骤 第一步 第二步 第三步 第四步 CQUPT格式修改 存在的问题 题注和公式可参看这里 ...

  5. 如何有效防止DEDE织梦系统被挂木马安全设置(仅供参考)

    尊敬的客户,您好! 感谢广大客户对我司工作的信任和支持! 我司在最近的一个多月内陆续发现多起因 DedeCMS 安全漏洞造成网站被上传恶意脚本的事件,入侵者可利用恶意脚本对外发送大量数据包,严重占用C ...

  6. 操作系统P,V(wait,signal原语)操作讲解,以及两个例题(答案仅供参考)

    操作系统的pv操作是很核心的概念. 临界区 : 我们把并发进程中与共享变量有关的程序段称为临界区. 信号量 : 信号量的值与相应资源的使用情况有关.当它的值大于0时,表示当前可用资源的数量:当它的值小 ...

  7. 【java】 ssm+ssh原生态框架(仅供参考)

    以前刚学框架的时候自己搭建的两个框架,一个是Struts2+Spring+Hibernate-(SSH),还有一个就是Spirng+SpringMVC+Mybatise-(SSM), 其中SSH项目中 ...

  8. 短信接口与短信平台收费标准----速码云仅供参考

    文章来源:http://www.4006026717.com 就目前来说短信接口 价格参考 行业收费也基本上没有个固定的标准的价格,都是看各个公司自己的通道套餐跑的量和公司的运营成本结合预算后最终才来 ...

  9. 链表知识体会总结(仅供参考)

    仅供参考: 链表分单向,双向,循环三种. 链表的基本操作包括:顺序建表,逆建,结点插入,删除,链表的合并,拆分等. 顺建:需要定义三个结构体指针***head, t, p.申请头结点head----h ...

最新文章

  1. 简单比较Python的数据持久化操作
  2. 自定义ProgressBar
  3. ORACLE TO_CHAR的一个问题
  4. UVA12325Zombie's Treasure Chest 宝箱
  5. java学习避免死锁
  6. C语言之字符串探究(十):递归逆置字符串
  7. 在CentOS 7上利用systemctl添加自定义系统服务 /usr/lib/systemd/
  8. android gridview隐藏滚动条,如何禁用GridView中的ScrollViewer的滚动
  9. 在Chrome中禁用同一来源政策
  10. Word设置标题以及自动编号——保姆级教程
  11. python中f‘{}‘用法
  12. EXCEL 快捷键集合
  13. 除了AI,你不该忽视Python在这4大领域的应用!
  14. 当docker pull mysql时,一直Waiting,很多等待,报:error pulling image configuration
  15. Python制作吃鸡各数据资料查询助手,带你做理论王者~
  16. C语言三个数相乘怎么写,编程怎么写乘法
  17. 接外包有哪些渠道呢?
  18. WWN,WWNN,WWPN区别
  19. 网约车新政陆续出台,共享经济遇阻为哪般?
  20. 连接远程计算机输入网络密码错误,电脑远程无法连接常见问题及解决大全

热门文章

  1. linux系统的初化始配置
  2. 创建交互式shell脚本对话框
  3. django开发Blog(1)
  4. 错误类型:“系统找不到 Microsoft.Office.Interop.Word(转)
  5. 【Bugly干货分享】iOS内存管理:从MRC到ARC实践
  6. 使用GLSL实现雾化的效果
  7. 机器学习算法学习---处理分类问题常用算法(一)
  8. 湖北宜昌:老太不慎落入江中 小伙奋勇救人
  9. jQuery 选择器和筛选器
  10. 纳米技术系列:物联网的下一个大事件竟来自极小之处