欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一、PhoneGap-Android开发环境搭建

程序员文章站 2022-05-31 17:34:39
...

一. 安装

在安装PhoneGap开发环境之前,需要按顺序安装一下工具: 1 java SDK

java sdk,不安装的话不能正常安装Android SDK。

安装成功检测:启动DOS窗口start-->run-->cmd,在DOS窗口中键入:java -version,如果能显示版本信息说明安装正常。

2 Eclipse

3 Android SDK

下载下来安装之后是一个Android SDK Manager,下载相应版本组件,可能需要较长时间。

4 ADt Plugin

这是一个Eclipse插件,作用是关联Android SDK,使Eclipse能够新建Android工程,安装方法如下: 打开Eclipse中的菜单项“Helpe“ -> "InstallNewSoftware"进入软件安装界面,点击Add"按钮,在Add Site这个弹出的对话框中的Name处输入一个名字例如Android,在Location处输入:https://dl-ssl.google.com/android/eclipse/

5 PhoneGap

下载PhoneGap,解压缩即可,打开里面的libs->android文件夹,我们会用到其中的三个文件,分别为xml,cordova-2.0.0.jar及cordova-2.0.0.js

二 新建一个PhoneGap项目

1 在eclipse中新建Android Project

2 在项目的目录下建两个文件夹: /libs

/assets/www

3 进入将刚刚下载并解压的PhoneGap包里Android目录,我们需要的资源都在这个目录下。 将cordova-2.0.0.js这个js文件(具体名称视当时下载的版本而定)copy到/assets/www目录下, 把cordova-2.0.0.jar文件copy到/libs目录下。 在把xml目录(xml整个文件夹)copy到android项目的res目录下

4 在/assets/www下建立index.html文件,内容看起来像这样:

<!-- lang: html -->
<!DOCTYPE HTML>
<!-- lang: html -->
<html>
<!-- lang: html -->
    <head>
<!-- lang: html -->
        <title>PhoneGap</title>
<!-- lang: html -->
         <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<!-- lang: html -->
    </head>
<!-- lang: html -->
    <body>
<!-- lang: html -->
        <h1>Hello World</h1>
<!-- lang: html -->
    </body>
<!-- lang: html -->
</html>

5 将以下权限配置的xml内容copy到AndroidManifest.xml文件中:

<!-- lang: xml -->
<supports-screens
<!-- lang: xml -->
android:largeScreens="true"
<!-- lang: xml -->
android:normalScreens="true"
<!-- lang: xml -->
android:smallScreens="true"
<!-- lang: xml -->
android:resizeable="true"
<!-- lang: xml -->
android:anyDensity="true"
<!-- lang: xml -->
/>
<!-- lang: xml -->
<uses-permission  android:name="android.permission.CAMERA" />
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.VIBRATE" />
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name=" android.permission.RECEIVE_SMS" />
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name=" android.permission.RECORD_AUDIO"/>
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.WRITE_EXTERNAM_STORAGE"/>
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- lang: xml -->

<!-- lang: xml -->
<uses-permission android:name="android.permission.GET_ACCOUNTIS"/>

6 将以下内容添加到AndroidManifest.xml文件的activity标签中

android:configChanges="orientation|keyboardHidden"

这是为了保证机器在横竖屏切换的时候不会重新执行Activity的onCreate方法;

7 AndroidManifest.xml最后看起来会像这样:

<!-- lang: xml -->
<?xml version="1.0" encoding="utf-8"?>
<!-- lang: xml -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<!-- lang: xml -->
    package="com.example.shawn"
<!-- lang: xml -->
    android:versionCode="1"
<!-- lang: xml -->
    android:versionName="1.0">
<!-- lang: xml -->
    <supports-screens
<!-- lang: xml -->
        android:anyDensity="true"
<!-- lang: xml -->
        android:largeScreens="true"
<!-- lang: xml -->
        android:normalScreens="true"
<!-- lang: xml -->
        android:resizeable="true"
<!-- lang: xml -->
        android:smallScreens="true"
<!-- lang: xml -->
        android:xlargeScreens="true" />
<!-- lang: xml -->

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

<!-- lang: xml -->
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
<!-- lang: xml -->

<!-- lang: xml -->
    <application android:label="@string/app_name"
<!-- lang: xml -->
        android:icon="@drawable/ic_launcher"
<!-- lang: xml -->
        android:theme="@style/AppTheme">
<!-- lang: xml -->
        <activity
<!-- lang: xml -->
            android:name="outer"
<!-- lang: xml -->
            android:configChanges="orientation|keyboardHidden"
<!-- lang: xml -->
            android:label="@string/app_name" >
<!-- lang: xml -->
            <intent-filter>
<!-- lang: xml -->
                <action android:name="android.intent.action.MAIN" />
<!-- lang: xml -->
                <category android:name="android.intent.category.LAUNCHER" />
<!-- lang: xml -->
            </intent-filter>
<!-- lang: xml -->
        </activity>
<!-- lang: xml -->
    </application>
<!-- lang: xml -->
</manifest>

其中<application>标签我们可以看做是我们当前的应用,而,<activity>代表我们应用内的一个界面,<intent-filter>标签里我们给当前页面设置了一个权限,android.intent.action.MAIN表示是最先启动的界面;android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里

另外需要注意的是:

<!-- lang: xml -->
<activity
<!-- lang: xml -->
    android:name="outer"
<!-- lang: xml -->
    android:configChanges="orientation|keyboardHidden"
<!-- lang: xml -->
    android:label="@string/app_name">

我们的<activity>标签中有这样一个类名为outer,我们可以自己定义它

8 在刚刚新建的Android Project中找到libs目录并在cordova-2.0.0.jar上点击右键,选择Build Path->Add to Build Path

9 最后再修改下src下的java主文件(如果没有就自己创建一个),我们要做一下几件事:

1)添加 import com.phonegap.*;

2)删掉import android.app.Activity;

3)还记得刚才的outer类么?这里将outer继承为DroidGap;

4)把setContentView()这行替换为super.loadUrl("file:///android_asset/www/index.html");

5)最后看起来就像这样:

<!-- lang: java -->
package com.example.shawn;
<!-- lang: java -->

<!-- lang: java -->
import android.os.Bundle;
<!-- lang: java -->
import org.apache.cordova.*;
<!-- lang: java -->

<!-- lang: java -->
public class outer extends DroidGap{
<!-- lang: java -->
    @Override
<!-- lang: java -->
    public void onCreate(Bundle savedInstanceState){
<!-- lang: java -->
        super.onCreate(savedInstanceState);
<!-- lang: java -->
        super.loadUrl("file:///android_asset/www/index.html");
<!-- lang: java -->
    }
<!-- lang: java -->
}

到此为止环境搭建完毕

转载于:https://my.oschina.net/syc2013/blog/138947