【Cordova+Android+PhoneGAP-2.9】webAPP环境搭建

使用的是PhoneGAP2.9.0版本,此版本以后更名为cordova

 

 

Android开发环境必须有JAVA环境+Android SDK

 

SDK :software development kit 软件开发工具包,它是指用来辅助开发某一类软件的相关文档,范例和工具的集合

拿vc来说 sdk开发就是用c+API来编写的windows应用程序

Android SDK就是指Android专属的软件开发工具包

 

有必要谈谈Cordova和PhoneGAP之间的关系,PhoneGAP是Cordova的前身,首先Cordova是一个移动开发框架,基于它可以用HTML/CSS/JS/JQ等网页代码制作一个APP,PhoneGAP Builder是一个在线打包工具,它可以把写好的Android项目打包在线生成APP。

换句话来说,你只用Cordova写出的APP是无法展示的,倘若借助Eclipse可以在网页上看到APP的雏形,而借助PhoneGAP Build可以在电脑上生成一部“安卓手机”,可以通过鼠标实际操作的。

 

 

前期准备:xp系统

1.jdk(1.6.0_23)

2.Eclipse(4.2.0)

3.Android SDK(15-4.0.3)

5.phonegap(2.9.0)-Cordova(2.9.0)

6.Android SDK Manager (23.0.2)

 

 

 

搭建步骤:

1.安装jdk,在cmd中进入jdk的bin目录,输入javac -version  检测版本是否成功

 

 

2.安装Ecipse,过程简单就不在这里详细介绍了

 

 

3.配置环境,或者直接将jdk的jre文件拷贝到eclipse中

 

 

4.将jdk配置到eclipse中

打开eclipse -> window -> preferences -> 左侧 -> java -> Installed JREs -> 右侧 add -> Standard VM -> Directory...->选择 刚才的jdk目录 ->ok -> 钩中 jdk -> ok.

 

 

5.安装Android SDK Manager,与eclipse放在同一父目录下,Android SDK Manager是用来安装Android SDK的

在里面选择安卓的版本,这里由于安装选择教复杂,所以直接将Android SDK中的platforms与system-images 复制到

Android SDK Manager中sdk下做覆盖。

 

 

6.打开Eclipse,新建虚拟机window -> Android Virtual Device Manager 

 

 

然后点ok确认,检测能成功启动模拟器

 

 

此时会出现一个安卓手机的模拟机,等待一段时间,就会出现手机界面,检测成功

 

 

 

7.新建一个Android Application project 

 

此时可能会出现错误,不用管

【java build path】添加 phonegap-2.9.0\lib\android\cordova-2.9.0.jar

将phonegap-2.9.0\lib\android\cordova-2.9.0.jar 到工作空间的libs中,如 hello\libs。

 

 

8.在项目中找到assets文件夹,创建一个项目空间,比如test

将phonegap-2.9.0\lib\android\cordova.js拷贝到刚创建的test文件夹内

以后html,css,js代码全部都是放在这个文件夹下面的,这和用其他编译器如Sublime TEXT是一样的

整个项目如下:

 

 

 

9.在res文件夹中,新建一个xml文件夹,新建一个xml文件,将以下内容拷贝到xml文件中

 

<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<widget
    id="io.cordova.helloCordova"
    version="2.0.0"
    xmlns="http://www.w3.org/ns/widgets" >

    <name>
Hello Cordova
    </name>

    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>

    <author
        email="dev@cordova.apache.org"
        href="http://cordova.io" >
        Apache Cordova Team
    </author>

    <access origin="*" />

    <!-- <content src="http://mysite.com/myapp.html" /> for external pages -->
    <content src="index.html" />

    <preference
        name="loglevel"
        value="DEBUG" />
    <!--
      <preference name="splashscreen" value="resourceName" />
      <preference name="backgroundColor" value="0xFFF" />
      <preference name="loadUrlTimeoutValue" value="20000" />
      <preference name="InAppBrowserStorageEnabled" value="true" />
      <preference name="disallowOverscroll" value="true" />
    -->

    <feature name="App" >
        <param
            name="android-package"
            value="org.apache.cordova.App" />
    </feature>
    <feature name="Geolocation" >
        <param
            name="android-package"
            value="org.apache.cordova.GeoBroker" />
    </feature>
    <feature name="Device" >
        <param
            name="android-package"
            value="org.apache.cordova.Device" />
    </feature>
    <feature name="Accelerometer" >
        <param
            name="android-package"
            value="org.apache.cordova.AccelListener" />
    </feature>
    <feature name="Compass" >
        <param
            name="android-package"
            value="org.apache.cordova.CompassListener" />
    </feature>
    <feature name="Media" >
        <param
            name="android-package"
            value="org.apache.cordova.AudioHandler" />
    </feature>
    <feature name="Camera" >
        <param
            name="android-package"
            value="org.apache.cordova.CameraLauncher" />
    </feature>
    <feature name="Contacts" >
        <param
            name="android-package"
            value="org.apache.cordova.ContactManager" />
    </feature>
    <feature name="File" >
        <param
            name="android-package"
            value="org.apache.cordova.FileUtils" />
    </feature>
    <feature name="NetworkStatus" >
        <param
            name="android-package"
            value="org.apache.cordova.NetworkManager" />
    </feature>
    <feature name="Notification" >
        <param
            name="android-package"
            value="org.apache.cordova.Notification" />
    </feature>
    <feature name="Storage" >
        <param
            name="android-package"
            value="org.apache.cordova.Storage" />
    </feature>
    <feature name="FileTransfer" >
        <param
            name="android-package"
            value="org.apache.cordova.FileTransfer" />
    </feature>
    <feature name="Capture" >
        <param
            name="android-package"
            value="org.apache.cordova.Capture" />
    </feature>
    <feature name="Battery" >
        <param
            name="android-package"
            value="org.apache.cordova.BatteryListener" />
    </feature>
    <feature name="SplashScreen" >
        <param
            name="android-package"
            value="org.apache.cordova.SplashScreen" />
    </feature>
    <feature name="Echo" >
        <param
            name="android-package"
            value="org.apache.cordova.Echo" />
    </feature>
    <feature name="Globalization" >
        <param
            name="android-package"
            value="org.apache.cordova.Globalization" />
    </feature>
    <feature name="InAppBrowser" >
        <param
            name="android-package"
            value="org.apache.cordova.InAppBrowser" />
    </feature>
    <!-- Deprecated plugins element. Remove in 3.0 -->
    <plugins>
        <plugin
            name="Geolocation"
            value="org.apache.cordova.GeoBroker" />
        <plugin
            name="Contacts"
            value="org.apache.cordova.ContactManager" />
    </plugins>

</widget>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10.修改AndroidManifest.xml文件为以下内容

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.infosys.demo"
    android:versionCode="1"
    android:versionName="1.0" >

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true" />

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="15" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11.修改AndroidManifest.xml的package

改为与当前项目相同包名,由于每个人的项目名不同,所以这里包名也不同

比如这里改为 com.example.hello

 

 

12.修改src下的MainActivity.java文件为下面的内容

 

import org.apache.cordova.DroidGap;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends DroidGap { //extends Activity

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.loadUrl("file:///android_asset/www/index.html");
		//setContentView(R.layout.activity_main);
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13.启动模拟器

 启动后  右键点击hello(左侧项目树中的项目)-> Run As -> Android Application.

然后就可以在模拟器中看到APP了

 

 

 

控制台输出如下:

 

 

 

 

 

参考资料:

Android中ADT和SDK关系:(转)http://blog.sina.com.cn/s/blog_7e3fa7ec01018ckh.html

 

 ADT:Android Development Tools

目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升

级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。adt只是一个eclipse的插件,里面可以设置sdk路径

 SDK(Software Development Kit): 一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统

等建立应用软件的开发工具的集合。

在Android中,他为开发者提供了库文件以及其他开发所用到的工具。简单理解为开发工具包集合,是整体开发中所用

到的工具包,如果你不用Eclipse作为你的开发工具,你就不需要下载ADT,只下载SDK即可开发。SDK可以自己编

译,在linux环境下通过make命令进行,耗时比较长,需要有耐心哦亲。。。然后我们可以把自己编译的SDK通过

ADT导入eclipse。在此基础上可以对源码包进行修改,比如修改android system/app/phone.apk中的源码,然后再次

调用make命令,就可以产生新的system.image文件,此文件是镜像文件。

手机ROM中包含两个基本的image,一个是boot.image,这个image中主要是kernel和文件系统/目录下的一些东西

kernel我就不说了,/目录下主要是init和相关的配置文件 system.image是android系统的userpace的核心,包

括/system/bin,system/lib,system/app下的一些东西

 

 

Android平台与SDK Tools版本、ADT版本的对应关系

 

 

Android平台          SDK Tools的版本               ADT版本
Android 2.2               R7                      ADT-0.9.9
Android 2.3               R8                      ADT-8.0.1
Android 3.0 预览版        R9                      ADT-9.0.0
Android 3.0               R10                     ADT-10.0.0
Android 3.1               R11                     ADT-11.0.0
Android 3.2               R12                     ADT-12.0.0
Android 4.0               R14                     ADT-14.0.0

 

 

 

 

Android平台                  API 级别
Android 2.0.11                 API6
Android 2.1-update1            API7
Android 2.2                    API8
Android 2.3                    API9
Android 2.3.3                  API10 
Android 3.0                    API11
Android 3.1                    API12
Android 3.2                    API13
Android 4.0                    API14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Android中SDK和NDK:(转自百度回答)

android sdk (Android Software Development Kit, 即Android软件开发工具包)

可以说只要你使用java去开发Android这个东西就必须用到。他包含了SDK Manager 和 AVD Manage,对于android系

统的一些开发版本的管理以及模拟器管理。

 

ndk (Native Development Kit)跟sdk差不多的是他也是一个开发工具包

用他开发c/c++是很方便的。他有一个强大的编译集合。

说说android他为什么会有一个ndk吧

很早以前android是只有sdk的。并没有ndk。这就意味着一旦android的开发者要使用c/c++的三方库或者需要用到

c/c++就必须使用非官方的法子。用java的jni去调用c/c++。耍小聪明走后门一样。而ndk的出现就意味着jni调用的这

种方法转正了变成官方了以后你不需要再走后面大路正面随你走

可是这样还是没有说到为什么要有ndk啊。是的我只想说的就是如果你要操作底层直接操作内存。操作地址那你不得

不去使用c/c++因为java这块想做这些。那恐怕有点困难。所以ndk是必须需要出现的,

而这个sdk和ndk并不是完全不相溶的2门语言。对于android来说是同种语言的2种不同时期的必须品。

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值