作了几回开发配置了,但时间一长就忘了,特记录一下。html
1、环境变量配置::右击“个人电脑”-->"高级"-->"环境变量"java
一、在系统变量里新建JAVA_HOME变量,变量值为:C:\Program Files\Java\jdk1.7.0_79(根据本身的安装路径填写)node
二、 新建classpath 变量,变量值为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jarandroid
三、 在path 变量(已存在不用新建)尾部添加变量值:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意变量值之间用“;”隔开)apache
四、“开始”-->“运行”-->输入“javac”-->"Enter",若是能正常打印用法说明配置成功!npm
五、下载Android Development Tools 已经包括了Android sdk、esclipe,解压便可使用:http://www.cnblogs.com/kuangliu/p/4607406.htmlwindows
六、在path 变量(已存在不用新建)尾部添加变量值:app
D:\phonegap\adt-bundle-windows-x86_64-20140702\sdk\tools(根据本身的存放路径填写)eclipse
D:\phonegap\adt-bundle-windows-x86_64-20140702\sdk\platform-toolside
D:\phonegap\adt-bundle-windows-x86_64-20140702\eclipse\plugins\org.apache.ant_1.8.3.v201301120609\bin
七、更新本身的android sdk到最新(否则build不成功)
八、ANT目录不能是中文 否则编译不成功
九、输入java javac ant 看是否配置环境成功
注:JAVA_HOME: jdk 的安装路径
classpath: java 加载类路径,只有类在classpath 中java 命令才能识别,在路径前加了个"."表示当前路径
path: 系统在任何路径下均可以识别java,javac 命令
2、安装 node node .js
下载地址:http://nodejs.org/
下载完成安装 node
3、安装phonegap
npm install -g cordova
4、建立项目
cordova create hello com.example.hello "HelloWorld"
cd hello
cordova platform add android
cordova build
cordova run android 运行模拟器
5、安装、删除插件
cordova plugin add org.apache.cordova.console //添加
cordova plugin ls //查看
cordova plugin rm org.apache.cordova.console //删除
6、配置全局文件
http://docs.phonegap.com/zh/edge/config_ref_index.md.html#Config.xml%20%E6%96%87%E4%BB%B6
若是用eclipse建立项目的话要修改几个文件
一、把cordova-2.9.0.jar文件拷贝到libs文件夹里
二、example里的xml文件夹拷贝到项目目录下的res文件夹里
三、在/assets/www下创建index.html文件,并引入cordova.js文件
四、对src文件夹下的XXX.java文件做以下修改:
4.1 注掉import android.app.Activity;加上import org.apache.cordova.*;
4.2 修改类的继承 将Activity 修改成 DroidGap
4.3 onCreate类改为 public
4.4 把setContentView()这行替换为super.loadUrl("file:///android_asset/www/index.html");
改完以下:
package com.example.weapp; //import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; //import android.view.MenuItem; import org.apache.cordova.*; public class MainActivity extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); super.loadUrl("file:///android_asset/www/index.html"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } /*@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }*/ }
五、修改项目根目录下的AndroidManifest.xml文件
改完以下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.weapp" android:versionCode="1" android:versionName="1.0" > <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="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.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.RECORD_VIDEO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <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-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:configChanges="orientation|keyboardHidden" 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>
其中<application>标签咱们能够看作是咱们当前的应用,而<activity>表明咱们应用内的一个界面,<intent-filter>标签里咱们给当前页面设置了一个权限
android.intent.action.MAIN表示是最早启动的的界面;
android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里;
android:configChanges="orientation|keyboardHidden
这是为了保证机器在横竖屏切换的时候不会从新执行Activity的onCreate方法;
参考:http://www.cnblogs.com/shawn-xie/archive/2012/08/15/2638480.html