android开发环境搭建
Android开发环境搭建分为五个步骤来完成Android开发环境的部署。
第一步:安装JDK
要下载Oracle公司的JDK可以百度“JDK”进入Oracle公司的JDK下载页面(当前下载页面地址为http://wwworaclecom/technetwork/java/javase/downloads/indexhtml),选择自己电脑系统的对应版本即可。
第二步:配置Windows上JDK的变量环境
知道了一个应用程序的安装目录位置,我们也可以通过命令行工具打开,如QQ的位置为:C:\Program Files (x86)\Tencent\QQ\QQProtect\Bin,QQ的应用程序名为为QQProtectexe,那么我们打开命令行工具,然后进入到“C:\Program Files (x86)\Tencent\QQ\QQProtect\Bin”目录,再输入“QQProtect”,即可运行qq。
JAVA_HOME
先设置这个系统变量名称,变量值为JDK在你电脑上的安装路径:C:\Program Files\Java\jdk180_20。创建好后则可以利用%JAVA_HOME%作为JDK安装目录的统一引用路径。
Path
PATH属性已存在,可直接编辑,在原来变量后追加:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 。
CLASSPATH
设置系统变量名为:CLASSPATH 变量值为:;%JAVA_HOME%\lib\dtjar;%JAVA_HOME%\lib\toolsjar 。
注意变量值字符串前面有一个""表示当前目录,设置CLASSPATH 的目的,在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包。
第三步: 下载安装Eclipse
Eclipse为Java应用程序及Android开发的IDE(集成开发环境)。Eclipse不需要安装,下载后把解压包解压后,剪切eclipse文件夹到你想安装的地方,打开时设置你的工作目录即可。
Eclipse的版本有多个,这里选择下载Eclipse IDE for Java EE Developers这个版本。
第四步:下载安装Android SDK
Android SDK提供了开发Android应用程序所需的API库和构建、测试和调试Android应用程序所需的开发工具。
打开http://developerandroidcom/sdk/indexhtml,我们发现google提供了集成了Eclipse的Android Developer Tools,因为我们这次是已经下载了Eclipse,所以我们选择单独下载Android SDK
下载后双击安装,指定Android SDK的安装目录,为了方便使用Android SDK包含的开发工具,我们在系统环境变量中的Path设置Android SDK的安装目录下的tools目录。
第五步:为Eclipse安装ADT插件
下面是在线安装ADT的方法:
启动Eclipse,点击 Help菜单 -> Install New Software… ,点击弹出对话框中的Add… 按钮。
然后在弹出的对话框中的Location中输入:http://dl-sslgooglecom/android/eclipse/,Name可以输入ADT,点击“OK”按钮。
在弹出的对话框选择要安装的工具,然后下一步就可以了。
Eclipse+Axis2构建WebService实战总结
什么是webservice
企业提供特定的服务service,其他用户通过internet即web访问这些服务。换句话说,WebService是两个计算机之间通讯(交谈)的技术,网络中一台计算机想要调用另一台计算机的方法时,此时可以需要WebService。很火的SOA、云计算在技术层面上都是WebService
用程序员的观点就是:企业提供实现某功能的函数,其他用过通过在线访问这些函数。
webservice两个重要文件:aar:服务包文件,提供服务,wsdl:web服务接口定义语言文件,供客户端使用。
webservice关键技术
1、XML:可扩展的标记语言(XML)是Web service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。
2、SOAP:SOAP是web service的标准通信协议,SOAP为simple object access protocoll的缩写,简单对象访问协议它是一种标准化的传输消息的XML消息格式。即XML文件的消息格式,由这个协议来决定。SOAP简单的理解,就是这样的一个开放协议SOAP=RPC+HTTP+XML:采用HTTP作为底层通讯协议;RPC作为一致性的调用途径,xml作为数据传送的格式。
3、Axis2:Axis2是实现Web Service的一种技术框架,是新一代的SOAP引擎,即通过这个架构很方便地实现webservice即在服务端通过这个技术支持,很方便地发布webservice服务,使开发只关注具体的商业实现,而由这个框架直接发布,节省了开发者的时间。在客户端同样只关注调用。为了使用这个框架,在3个地方需要部署Axis2的库:web服务器tomcat上、eclipse服务端开发axis2库、eclipse客户端开发ksoap2库。
4、WSDL:WSDL的全称是web service Description Language,是一种基于XML格式的关于web服务的描述语言。其主要目的在于web service的提供者将自己的web服务的所有相关内容,如所提供的服务的传输方式,服务方法接口,接口参数,服务路径等,生成相应的完全文档,发布给使用者。使用者可以通过这个WSDL文档,创建相应的SOAP请求消息,通过HTTP传递给webservice提供者;web服务在完成服务请求后,将SOAP返回消息传回请求者,服务请求者再根据WSDL文档将SOAP返回消息解析成自己能够理解的内容。
5、UDDI:UDDI 是一种目录服务,企业可以使用它对 Web services 进行注册和搜索。UDDI,英文为 "Universal Description, Discovery and Integration",可译为“通用描述、发现与集成服务”。UDDI是一种创建注册表服务的规范,以便大家将自己的web service进行注册发布供使用者查找然而当服务提供者想将自己的web service向全世界公布,以便外部找到其服务时,那么服务提供者可以将自己的web service注册到相应的UDDI商用注册网站,目前全球有IBM等4家UDDI商用注册网站。因为WSDL文件中已经给定了web service的地址URI,外部可以直接通过WSDL提供的URI进行相应的web service调用。所以UDDI并不是一个必需的web service组件,服务方完全可以不进行UDDI的注册。
webservice服务端的实现
1、tomcat服务器部署:部署Axis2到tomcat:将Axis2war解压到tomcat的webapps目录下即可,如果有数据库连接,需把数据库连接jar包添加到tomcat的lib目录下,如:oracle的ojdbc14jar,和mysql的 mysql-connector-java-3111-binjar。部署成功后,启动tomcat,可通过http://localhost:8080/axis2/访问,查看是否部署成功。webservice的axis服务存档aar发布文件就发布到tomcat\webapps\axis2\WEB-INF\services这个目录下
2、安装axis2插件到eclipse:解压插件,直接拷贝到eclipse的插件目录plugins,两个插件为:orgapacheaxis2eclipsecodegenplugin_160jar、orgapacheaxis2eclipseserviceplugin_160jar。打开Eclipse,选择File/New/Other菜单项,看到如下界面表明安装成功:
安装这两个插件的目的是:方便生成Axis2的服务包(aar文件)和生成Axis2客户端
3、打包生成axis2服务包:
选择服务程序类文件所在的目录,不包括包,选中Include,表示在生成的服务包中只包括类文件,不包括其他文件。
选择跳过WSDL文件,WSDL文件会在部署这个服务到Tomcat后,有Axis2自动生成,通过http://localhost:8080/axis2/services/newWswsdl可以查看文件内容。
注意:WSDL是web服务定义语言,通过XML的方式对该服务类进行描述,客户端访问服务时要用到这个文件,可以生成这个文件给客户端,也可以上面的在线获取这个文件。
点击“next”,进入添加服务需要的库文件界面:
需要的库文件直接部署到tomcat中,此处不需要添加,进入下一界面:
选择自动生成servicexml文件。点击进入下一界面:
输入服务名和类名,点击load即可找出该服务程序的全部方法。
输入发布路径,和文件名。生成newWsaar服务包文件。
部署完成后,输入http://localhost:8080/axis2/services/listServices,即可看到已部署的全部服务。
eclipse中webservice不能发布的原因:
1、界面问题,把发布界面最大化或拖拽,是界面刷新,就可以看到输入界面了。
2、发布界面最后一步,load时,没有任何反映,是这个类的代码有问题,例如有加载动态库的代码,动态库找不到,则会没有反映。
3、代码没改变的情况下好像只能生成一次,想在生成的话,需要改代码,或需要重启eclipse
webservie服务端:java调用C++动态库的实现
1、在eclipse中编写一个java类文件,应用中的其他类可以调用这个类中的函数:
[cpp] view plaincopyprint
01package util;
02
03public class InvokeDll
04{
05 //测试函数
06 public native int testFunc(int a, int b);
07
08 //获取最近一次错误代码
09 public native int lastErr();
10}
package util;
public class InvokeDll
{
//测试函数
public native int testFunc(int a, int b);
//获取最近一次错误代码
public native int lastErr();
}
注意:函数要用native修饰符
2、用javah命令生成C++可调用的h文件
a、上述java类编译生成类文件InvokeDllclass
b、set classpath="D:\teatInvokeDll\bin",类文件生成在D:\testInvokeDll\bin\util\InvokeDllclass
c、命令行进入D:\teatInvokeDll\bin
d、javah utilInvokeDll
你会发现当前目录下多了一个util_InvokeDllh文件,文件内容如下:
[cpp] view plaincopyprint
01/ DO NOT EDIT THIS FILE - it is machine generated /
02#include <jnih>
03/ Header for class util_InvokeDll /
04
05#ifndef _Included_util_InvokeDll
06#define _Included_util_InvokeDll
07#ifdef __cplusplus
08extern "C" {
09#endif
10/
11 Class: util_InvokeDll
12 Method: testFunc
13 Signature: (II)I
14 /
15JNIEXPORT jint JNICALL Java_util_InvokeDll_testFunc
16 (JNIEnv , jobject, jint, jint);
17
18/
19 Class: util_InvokeDll
20 Method: lastErr
21 Signature: ()I
22 /
23JNIEXPORT jint JNICALL Java_util_InvokeDll_lastErr
24 (JNIEnv , jobject);
25
26#ifdef __cplusplus
27}
28#endif
29#endif
/ DO NOT EDIT THIS FILE - it is machine generated /
#include <jnih>
/ Header for class util_InvokeDll /
#ifndef _Included_util_InvokeDll
#define _Included_util_InvokeDll
#ifdef __cplusplus
extern "C" {
#endif
/
Class: util_InvokeDll
Method: testFunc
Signature: (II)I
/
JNIEXPORT jint JNICALL Java_util_InvokeDll_testFunc
(JNIEnv , jobject, jint, jint);
/
Class: util_InvokeDll
Method: lastErr
Signature: ()I
/
JNIEXPORT jint JNICALL Java_util_InvokeDll_lastErr
(JNIEnv , jobject);
#ifdef __cplusplus
}
#endif
#endif
3、在VC中生成dll如java2dlldll
a、新建一个空的dll工程,名叫java2dll。
b、把util_InvokeDllh头文件复制到工程目录下,并添加到header files文件夹里。
c、在source files文件目录中添加一个java2dllcpp,文件内容是头文件里的方法的实现:
[cpp] view plaincopyprint
01#include <stdioh>
02#include "util_InvokeDllh"
03
04JNIEXPORT jint JNICALL Java_util_InvokeDll_testFunc(JNIEnv , jobject, jint a, jint b)
05{
06 int i=0;
07 /HMODULE hModule = ::LoadLibrary("testdll");
08
09 PFUN newfun = (PFUN)::GetProcAddress(hModule,"testFn");
10 i = newfun(a,b);
11 ::FreeLibrary(hModule);
12 /
13 i=a+b;
14 return i;
15}
16
17JNIEXPORT jint JNICALL Java_util_InvokeDll_lastErr(JNIEnv , jobject)
18{
19 int i=0;
20 return i;
21}
#include <stdioh>
#include "util_InvokeDllh"
JNIEXPORT jint JNICALL Java_util_InvokeDll_testFunc(JNIEnv , jobject, jint a, jint b)
{
int i=0;
/HMODULE hModule = ::LoadLibrary("testdll");
PFUN newfun = (PFUN)::GetProcAddress(hModule,"testFn");
i = newfun(a,b);
::FreeLibrary(hModule);
/
i=a+b;
return i;
}
JNIEXPORT jint JNICALL Java_util_InvokeDll_lastErr(JNIEnv , jobject)
{
int i=0;
return i;
}d、点击“运行”->“编译”,这时你会看到很多数据类型没被声明的错误,那是因为util_InvokeDllh使用了很多JAVA_HOME/include/jnih文件自定义的数据类型,而jnih又引
用了JAVA_HOME/include/win32/jni_mdh,这时你需要把jnih和jni_mdh引入到工程里面来,左击工程名“工程属性”->“文件/目录”->“包含文件目录”把JAVA_HOME/include和JAVA_HOME/include/win32文件夹添加,确定后,再次编译一切正常,这时在工程的目录下就找到java2dlldll文件,这样dll文件就生成了
4、调用其他标准的C++动态库,如testdll
例如testdll,是其他人编写的标准的C++动态库,可以在上述注释掉的部分调用,testFn是它里面的函数。
5、在webservice端的java调用
加载库Java2dll,并调用接口函数:
[cpp] view plaincopyprint
01static
02{
03 //动态库dll文件要放到系统目录或用绝对路径凋用Systemload("绝对路径")
04 SystemloadLibrary("Java2dll");
05}
06
07/实例化调用类
08InvokeDll dll = new InvokeDll();
09
10//调用函数
11String strRet = dlltestFunc(a, b)
static
{
//动态库dll文件要放到系统目录或用绝对路径凋用Systemload("绝对路径")
SystemloadLibrary("Java2dll");
}
//实例化调用类
InvokeDll dll = new InvokeDll();
//调用函数
String strRet = dlltestFunc(a, b)
总结:调用过程:java普通类-->java native类-->jni C++ 动态库-->标准C++动态库,最终实现java普通类对标准C++动态库的调用。
1 socket,自己用socket来实现服务器,自己指定交互规则,达到和客户端交互。
2 网站web,然后提供一个访问接口,安卓客户端可以通过这个接口与服务器交互,获取数据,传递数据等。具体来说服务器就是一个web工程,所以你需要搭建服务器(tomcat等),把你的web应用发布到服务器上。至于交互一般可以用servlet来和安卓客户端交互,进而可以用action,这其实是j2e方面的知识了,所以你可以去了解下这方面的知识。
总体来说的话个人感觉第二种方法较好,因为交互层是别人写好的,你自己写的话有时候问题比较多。
我来简单的说下,让你容易理解:
1系统物理架构
android客户端------无线路由-------(web服务器,数据库)
2技术选型
(android客户端)--->Web服务器(tomcat)--->数据库(mysql等)
客户端请求数据成功后,返回数据(可以通过Web Service、HTTP等方式进行网络通信)
(android客户端)<---Web服务器(tomcat)<-->数据库(mysql等)
3创建客户端项目WirelessClient(到时安装在手机端)和服务器项目WirelessServer(安装在web服务器端PC机)。之后分别开发这两端的项目,手机端用android的API,服务器端用Java开发
这样可以帮助你简单的理解了吗?
服务器端写个servlet,然后在doPost()方法里处理客户端上传的文件,大概代码:
DiskFileItemFactory factory = new DiskFileItemFactory();
factorysetSizeThreshold(1024 1024); // 设置最多只允许在内存中存储的数据, 单位:字节
factorysetRepository(cachepath); // 设置一旦文件大小超过设定值时数据存放的目录
ServletFileUpload srvFileUpload = new ServletFileUpload(factory);
srvFileUploadsetSizeMax(1024 1024 1024); // 设置允许用户上传文件大小, 单位:字节
// 开始读取上传信息
List fileItems = null;
try {
fileItems = srvFileUploadparseRequest(request);
} catch (Exception e) {
Systemoutprintln("获取上传信息。。。。。。失败");
}
// 依次处理每个上传的文件
Iterator iter = fileItemsiterator();
while (iterhasNext()) {
FileItem item = (FileItem) iternext(); // 忽略其他不是文件域的所有表单信息
if (!itemisFormField()) {
// 取出文件域的所有表单信息
} else {
// 取出不是文件域的所有表单信息
}
}
一、安装JDK和Tomcat
1,安装JDK:直接运行jdk-7-windows-i586exe可执行程序,默认安装即可。
备注:路径可以其他盘符,不建议路径包含中文名及特殊符号。
2、安装Tomcat:直接解压缩下载文件“apache-tomcat-7033-windows-x86zip”到C盘下。安装路径建议修改为:c:\tomcat。
备注:如下载的是可执行文件,双击运行,默认安装即可。
二、配置JDK环境变量(在步骤查看如何配置环境变量)
1,新建变量名:JAVA_HOME,变量值:C:\Program Files\Java\jdk170
2,打开PATH,添加变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
3,新建变量名:CLASSPATH,变量值:;%JAVA_HOME%\lib\dtjar;%JAVA_HOME%\lib\toolsjar
备注:
1,表示当前路径,%JAVA_HOME%就是引用前面指定的JAVA_HOME;
2,JAVA_HOME指明JDK安装路径,此路径下包括lib,bin,jre等文件夹,tomcat,eclipse等的运行都需要依靠此变量。
3,PATH使得系统可以在任何路径下识别java命令。
4,CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。
三、测试JDK
在CMD命令下输入javac,java,javadoc命令:出现图示界面,表示安装成功。
四、配置Tomcat环境变量
1,新建变量名:CATALINA_BASE,变量值:C:\tomcat
2,新建变量名:CATALINA_HOME,变量值:C:\tomcat
3,打开PATH,添加变量值:%CATALINA_HOME%\lib;%CATALINA_HOME%\bin
五、启动Tomcat服务
方法三种:
1,方法一:直接进入tomcat的bin目录中点击startupbat启动服务,出现如下对话框,表明服务启动成功,stutdownbat为关闭服务。
2,方法二:在CMD命令下输入命令:startup,出现如下对话框,表明服务启动成功。
3,方法三:右键点击桌面上的“我的电脑”->“管理”->“服务和应用程序”->“服务”,找到“Apache Tomcat”服务,右键点击该服务,选择“属性”,将“启动类型”由“手动”改成“自动”。
六、测试Tomcat
打开浏览器,在地址栏中输入http://localhost:8080回车,如果看到Tomcat自带的一个JSP页面,说明你的JDK和Tomcat已搭建成功。
注意事项
1,JAVA_HOME中的路径不能用分号结尾,如C:\Program Files\Java\jdk170。
2,CATALINA_BASE,CATALINA_HOME,TOMCAT_HOME中的路径不能以“\”结尾。
3,JAVA_HOME的路径一定不要写成了JRE的路径。
4,在环境变量中修改添加变量时,一定要注意分号、空格,是否有多余的字母。作者就是因为path路径中多了一个字母,怎么都配置不成功。如果配置不成功,一定要反复检查。
以上错误,非常容易出现错误:CATALINA_HOME或是JAVA_HOME没有配置好。如错误提示“The CATALINA_HOME environment variable is not defined correctly”
项目部署方式
一、静态部署
1、直接将web项目文件件拷贝到webapps 目录中
Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。所以可以将JSP程序打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个web程序的所有内容进行压缩得到。具体如何打包,可以使用许多开发工具的IDE环境,如Eclipse等。也可以用 cmd 命令:jar -cvf mywarwar myweb
webapps这个默认的应用目录也是可以改变。打开Tomcat的conf目录下的serverxml文件,找到下面内容:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
将appBase修改即可。
2、在serverxml中指定
在Tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在serverxml中新建Context里部署一个JSP应用程序。打开serverxml文件,在Host标签内建一个Context,内容如下。
在tomcat中的conf目录中,在serverxml中的,<host/>节点中添加:
<Context path="/hello" docBase="D:\ workspace\hello\WebRoot" debug="0" privileged="true">
< /Context>
或者
<Context path="/myapp" reloadable="true" docBase="D:\myapp" workDir="D:\myapp\work"/>
或者
<Context path="/sms4" docBase="D:\workspace\sms4\WebRoot"/>
说明:
path是虚拟路径;
docBase 是应用程序的物理路径;
workDir 是这个应用的工作目录,存放运行时生成的与这个应用相关的文件;
debug 则是设定debug level, 0表示提供最少的信息,9表示提供最多的信息
privileged设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet
reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重起tomcat的情况下改变应用程序,实现热部署
antiResourceLocking和antiJARLocking 热部署是需要配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把相应的源文件和jar文件复制到一个临时目录里。
3、创建一个Context文件
在conf目录中,新建 Catalina\localhost目录,在该目录中新建一个xml文件,名字不可以随意取,要和path后的那个名字一致,按照下边这个path的配置,xml的名字应该就应该是hello(helloxml),该xml文件的内容为:
<Context path="/hello" docBase="E:\workspace\hello\WebRoot" debug="0" privileged="true"></Context>
tomcat自带例子如下:
<Context docBase="${catalinahome}/server/webapps/host-manager"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
</Context>
这个例子是tomcat自带的,编辑的内容实际上和第二种方式是一样的,其中这xml文件名字就是访问路径,这样可以隐藏应用的真实名字。
4、注意:
删除一个Web应用同时也要删除webapps下相应的文件夹和serverxml中相应的Context,还要将Tomcat的conf\catalina\localhost目录下相应的xml文件删除,否则Tomcat仍会去配置并加载。。。
二 动态部署
登陆tomcat管理控制台:http://localhost:8080/,输入用户名和密码后便可管理应用并动态发布。
在Context Path(option):中输入/yourwebname ,这代表你的应用的访问地址。
XML Configration file URL中要指定一个xml文件,比如我们在F:\下建立一个hmcxxml文件,内容如下: <Context reloadable="false" />其中docBase不用写了,因为在下一个文本框中填入。或者更简单点,这个文本框什么都不填,在WAR or Directory URL:中键入F:\hmcx即可,然后点击Deploy按钮,上面就可以看到了web应用程序,名字就Context Path(option):中的名字。
如果部署war文件还有更加简单的方式,下面还有个Select WAR file uploae点击浏览选择war文件,然后点击Deploy也可以。
0条评论