转载自http://mobile.51cto.com/android-229213_1.htm
通过PhoneGap生成基于Android的原型程序
1 进入PhoneGap-Android目录,并进入MS-DOS方式,在命令行下,按如下格式执行该命令:
上述参数说明如下:
其中android_sdk_path指定了android sdk的安装位置,比如:
d:/androidsdk,注意这里不要写成“\”,应该是“/”作为分隔符。
Name:要生成的android应用的名字。
Package_name:生成的android应用中源代码中的包名,注意必须至少有一层的包关系,即com.XXXX的形式。
WWW:这里指应用中存放HTML,Javascipt,CSS的位置目录名称。
PATH:这里指通过PhoneGap生成的项目原型工程的目录位置,注意的是,该目录位置不能指定为eclipse的workspace工作空间内。
下面是一个例子:
运行上述命令后,会发现在D盘会生成一个HelloWolrdGap的工程目录,phonegap已经为我们生成了项目的框架了。
将工程导入到Eclipse中
如果安装了Android for eclipse的插件ADT后,我们可以将PhoneGap生成的工程导入到Eclipse中去。首先我们打开Eclipse,新建一个Android Project,如下图
其中输入Project name的名称为HelloGapAndroid,其中在Create project from existing source中选择上文中用PhoneGap生成的项目的目录。之后在Eclipse中则会看到如下结构的
可以看到其中assets下的www目录存放了工程中需要用到的HTML、Javascript和CSS文件。此外,还要确认工程的lib目录下面,存在phonegap.jar文件。
接下来我们试着运行下这个工程,会在模拟器中看到如下效果:
运行的结果是显示了PhoneGap中默认显示的index.html页面,其中演示了其中的一些功能,大家可以尝试去试验一下。
package com.diangxing; public class TestArithmetic { public static void main(String[] args) { // TODO Auto-generated method stub // getString("abcdef"); // getForString(); // int [] agars = {5,90,10,40,20,70,50}; // int numble = compute(agars); // System.out.println(numble); // printString(); long n = recurrence(10); System.out.println(n); } /** * 1、写一个方法,要求:输入一个字符串ABCDEFG,要求倒序输出GFEDCBA: */ private static void getString(String str){ if(str != null && !str.isEmpty()){ for(int i = str.length() - 1; i >= 0; i-- ){ System.out.print(str.charAt(i)); } } } /** 有一个三位数,个位是c,十位是b,百位是a, abc + cba ---------------- 1333 如上运算,求满足这种的三位数有几种情况? */ private static void getForString(){ int b = 1; for(int a=0 ; a<=9 ; a++){ for(int c=0; c<=9 ; c ++){ if(a+c == 13){ System.out.print("a="+a+" "); System.out.print("b="+b+" "); System.out.print("c="+c+" ;"); System.out.println(); } } } } /** * 有一组数,求这组数的最大数和最小数的绝对值是多少? * *数组的排序 */ private static int compute(int[] in){ int temp = 0; for(int i = 0; i < in.length ; i ++){ for(int j = 0 ; j < in.length ; j ++){ if(in[i] > in[j]){ temp = in[i]; in[i] = in[j]; in[j] = temp; } } } for(int k = 0 ; k < in.length ; k ++){ System.out.print(in[k] + ","); } System.out.println(); return Math.abs(in[0] - in[in.length - 1]); } /** * 4、打印九九乘方表: */ private static void printString(){ System.out.println("九九乘方表:"); for(int i = 1; i <= 9 ; i ++){ for(int j = 1 ; j <= i; j ++){ System.out.print(j+"*"+i+"="+i*j+" "); } System.out.println(); } } /** * 利用递归求一个数的阶乘? */ private static long recurrence(int n){ if(n == 1){ return 1; }else{ return n * recurrence(n -1); } } }
多维数组和对象数组一样处理,例如二维数组里的每个元素还是一个数组 用jArray表示,直到数组变为一维的,且里面元素为基本类型,去获得一维数组指针。给大家提供个例子。已经测试通过。
Java_cn_wzl_FiveChessView_checkWin( JNIEnv* env,jobject thiz,jobjectArray qizidata) { jint i,j; int size = (*env)->GetArrayLength(env, qizidata);//获得行数 jarray myarray = ((*env)->GetObjectArrayElement(env, qizidata, 0)); int col =(*env)->GetArrayLength(env, myarray); //获得列数 jint qizi[size][col]; for (i = 0; i < size; i++){ myarray = ((*env)->GetObjectArrayElement(env, qizidata, i)); jint *coldata = (*env)->GetIntArrayElements(env, (jintArray)myarray, 0 ); for (j=0; j<col; j++) { qizi [i] [j] = coldata[j]; } } }