版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android 开发环境搭建一、 软件下载1 下载JDK6/javase/downloads/点那个“Java SE Development Kit (JDK)”的链接,下载后解压缩。2 下载开发用IDE个人建议下载Eclipse的J2EE集成版本,省事。当前Eclipse最新版本为3.4.1/downloads/点那个“Eclipse IDE for Java EE Developers”的链接,下载后解压缩。3 下载谷歌的Android SDK/sdk/ind
2、ex.html找到相应平台的SDK下载。二、 设置开发环境双击Eclipse解压缩后目录中的eclipse.exe启动,然后1 增加Android开发插件选择Eclipse菜单Help - Software Updates - 选择选项卡上的Available Software,点击右侧按钮“Add Site.”,输入/android/eclipse/左侧会增加该项,点名称前的“+”,可以看到包括Developer Tools。点中该项的对勾,然后点右侧的“install”按钮,然后按提示安装。如图:(如果不能下载将连接修改为: https:/dl
3、-/android/eclipse/ 尝试)稍等片刻,Eclipse会下载并设置好Android插件,然后提示需要重启Eclipse,请点同意。2 设置Android属性中的Android SDK目录选择Eclipse菜单Window - Preferences - 选择左侧的Android项,在右侧SDK Location项中输入你的Android SDK解压缩后的目录,点“Apply”,如图:3 设置Java属性中的编译属性还是选择Eclipse菜单Window - Preferences - 选择左侧的Java项 - 选择Compiler子项,确认当前选择的是
4、1.6版本。如图:至此,Android开发环境大功告成,下面就来看下如何在模拟器中运行程序。三、 测试Android程序在模拟器中的运行1 新建项目选择Eclipse菜单File - New - Android Project,填写工程基本信息后确认。2 查看运行效果选择Eclipse菜单Run - Run,选择以Android方式运行。Android手机模拟器启动后,稍等片刻后显示Android Logo,然后进入锁定键盘的待机状态,点“Menu”按钮解锁后就会显示你的测试程序。由于模拟器启动时间较长,因此开发期间模拟器窗口最好不要关闭。此外模拟器可更换皮肤,并可按Ctrl+F12来切换显示
5、模式,下面是我更换G1手机皮肤后的例子:四、 NDK使用 1. 配置NDK 本处讨论在Windows下使用cygwin处理NDK的Windows版本。Linux下的使用方法基本一致。根据unix系系统的规范,所有讨论中涉及名称的字符串均大小写敏感。这里仅NDK的配置和C代码编译须用cygwin,此后的ANDROID调试等均可使用普通的命令行操作。参考链接:/sdk/ndk/1.5_r1/index.htmlR1 R3配置方法:收到NDK后首先在NDK的主目录(其中包含apps, build, docs, 文件夹)下,输入命令:build/h
6、ost-setup.sh 用来配置NDK工具(例如编译器的使用,目标平台等),最终生成out/host/config-host。由于out必须在主目录中,因此上述命令须在主目录中输入。 R4配置方法:Cygwin安装时,选择一个镜像下载点,接着install Devel下的Gcc和make两个文件就可以了。 现在说一下,怎样编译项目的问题: 准备:在Cygwin安装目录下,找到home/username的目录下的.bash_profile文件,打开文件在最后加上NDK=/cygdrive/d/android-ndk-r4-windows/android-ndk-r4 export NDK HO
7、ST_AWK=/usr/bin/gawkexport HOST_AWK其中d/android-ndk-r4-windows/android-ndk-r4是NDK的根目录。在R4下,NDK提供了2种编译方式: 1.在Cygwin下,输入cd $NDK/ndk-build 2.在Cygwin下,$NDK/ndk-build -C 2. 编译本地源码 本地源码(主要如C文件)均放在sources下。NDK提供了两个示例,放在sources/sample目录下。 编译只需要在主目录中输入命令: make APP= 对于上述示例,分别为hello-jni和two-libs。 1. sources文件夹配
8、置 由于NDK已将MAKE生成系统建立妥善,所以只需要在sources中建立包含源文件的文件夹。 由于NDK的配置是以sources目录作为源文件工程的根节点,因此如果要将源文件工程放在更深的目录,例如sourcespackage1proj1,那么就需要在中间的目录中加入一个Android.mk文件,用以转到更深的目录其内容示例可见sourcessamplesAndroid.mk。 上述文件夹proj1名称建议以源文件模块的名称命名。 在源文件工程文件夹中需要有至少一个Android.mk文件用以定义源文件编译信息。可以参照sourcessamples中的两个工程中的示例。其中LOCAL_MO
9、DULE变量必须定义成指定源文件工程(模块)的名称。2. C源程序JNI入口 C源程序的入口遵照JNI规范: Java_其中包名称和Android的JAVA类所属包需要保持一致,只是“.”用“_”替换;JAVA类即是包含这个(实例)方法的类;FuncName则是呈现在JAVA中使用的方法名称。3. apps文件夹配置 在apps文件夹中创建一个ADNROID工程文件夹,名称为APP工程(JAVA)名称,在其中新建一个Application.mk的配置文件,参照两个示例工程设置。主要设置两个变量:APP_PROJECT_PATH,这个是ANDROID工程路径和相应指定库生成目录(复制而来,名称为
10、“lib源文件模块名”),一般设置成$(call my-dir)/project,即当前目录下project中,而库生成目录就是project/libs。 APP_MODULES则是这个ANDROID将包含的上述源文件工程,填入涉及的一个或多个源文件工程名称。 最后在主目录中用make APP= 3. 创建工程 NDK两个例程已经含有完整的ANDROID例程,可以在Eclipse中直接导入打开。 如果新建一个工程,只需要仿照ANDROID工程的一般过程开始,由于本地库so处于工程目录下,Eclipse会自动将其包含在工程中,并最终一并链入apk。 4. 关于JAVA本地(Native)接口JN
11、I 一些参考文档: 1. /docs/books/jni/ 2. /j2se/1.5.0/docs/guide/jni/spec/functions.html 3.http:/journals.ecs.soton.ac.uk/java/tutorial/native1.1/implementing/method.html 有几个注意点: 1. 不能在本地代码中跨线程使用JNI量,而目前又暂没找到联入正确JNI环境量和对象或者JVM的方法,因此只能在调用线程中使用回调,意味着设计需要让回调发生在JAVA调用者线程中。 2.
12、CallXXXMethodX(env, obj, methodid, va_arg)中,va_arg必须输入指针(对象的指针如jstring *,原子的指针如int *)。 3. 对于跨线程的UI操作侧需要用runOnUiThread。 5. ANDROID工具使用 1. 虚拟设备创建(AVD) 使用android命令 创建: android create avd n -t 在通常情况下接受默认选项(不建立hardware profile) 删除: android delete avd n 列印: android list 2. 在命令行)运行虚拟机 命令: emulator avd 3. A
13、DB常用命令 参考:/blog/142373 安装程序:adb install 运行命令SHELL: adb shell ,进入SHELL,可以操作访问设备文件系统 adb shell ,直接执行命令(SHELL中可以执行logcat) 复制文件: adb push ,复制入文件 adb pull ,复制出文件 adb devices ,查看运行的模拟器/设备状态 6. 【示例程序】 一个简单的在屏幕上间歇打印的程序。1. 本地C代码 (仅用于示例,不保证正确性和安全性)#include #include #include #include #inc
14、lude #include typedefstruct JNIEnv*env; jobjectthiz; jclasscls; UpdateTextContext; staticintgRunnerRunning=0; staticintupdate_text(UpdateTextContext*context,char*buf) JNIEnv*env=context-env; jobjectthiz=context-thiz; jclasscls=context-cls; jmethodIDmid=(*env)-GetMethodID(env,cls,appendText,(Ljava/la
15、ng/String;)V); if(mid=NULL) return-1; jstrings=(*env)-NewStringUTF(env,buf); (*env)-CallVoidMethodV(env,thiz,mid,&s); return0; voidJava_com_eden_sample_Sample_initTextGenerator(JNIEnv*env,jobjectthiz) gRunnerRunning=0; voidJava_com_eden_sample_Sample_runTextGenerator(JNIEnv*env,jobjectthiz) charbuf6
16、4; intcounter=0; UpdateTextContextcontext; context.env=env; context.thiz=thiz; context.cls=(*env)-GetObjectClass(env,thiz); gRunnerRunning=1; while(gRunnerRunning) sprintf(buf,samplecounting:%dn,counter); intr=update_text(&context,buf); if(r!=0) break; counter+; sleep(1);/*sleepforonesecond*/ gRunne
17、rRunning=0; voidJava_com_eden_sample_Sample_stopTextGenerator(JNIEnv*env,jobjectthiz) gRunnerRunning=0; 2. JAVA程序 Package com.vendor.sample; /* package that must keep in accordance with the native code */import android.app.Activity;import android.os.Bundle;import android.widget.TextView;import java.
18、util.*;public class Sample extends Activity enum UpdateType Modify, Append private class UpdateTextRunner implements Runnable public UpdateTextRunner(String s, UpdateType type) mS = s; mType = type; public void run() if (mType = UpdateType.Modify) mLines.clear(); mLines.add(mS); mTV.setText(mS); els
19、e mLines.add(mS); /* intended to display no more than mMaxLineCount * lines and scroll, however this is not * always the case, consider if mS is broken * into several lines */ while (mLines.size() mMaxLineCount) mLines.remove(0); StringBuilder sb = new StringBuilder(); for (int i = 0; i mLines.size(
20、); i+) sb.append(mLines.get(i); mTV.setText(sb.toString(); private String mS; private UpdateType mType; /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); mTV = new TextView(this); mTV.setText( initial text );
21、 setContentView(mTV); initTextGenerator(); /* The following thread object simply contains * an overriden run method which invokes * runTextGenerator on this Sample object */ mThread = new TextUpdatorThread(this); mThread.start(); Override public void onDestroy() stopTextGenerator(); try mThread.join
22、(); catch (InterruptedException e) e.printStackTrace(); super.onDestroy(); public void modifyText(String s) this.runOnUiThread(new UpdateTextRunner(s, UpdateType.Modify); public void appendText(String s) this.runOnUiThread(new UpdateTextRunner(s, UpdateType.Append); public native void initTextGenera
23、tor(); public native void stopTextGenerator(); public native void runTextGenerator(); private TextView mTV; private ArrayList mLines = new ArrayList(); private int mMaxLineCount = 20; private TextUpdatorThread mThread; static System.loadLibrary(sample); / the corresponding C library is libsample.so
24、五、 Window下cygwin配合Eclipse配置1. 安装 Sequoyah Android Native Code Support/sequoyah/updates/1.1/2. 配置 方法一、1. 在Main 页面里Location 栏 选择 你安装Cygewin时配置的root目录下的 bash.exe 所在路径, F:androidNDKCygewinbinbash.exe 在Working Directory 里配置路径为 root下的bin目录的路径 F:androidNDKCygewinrootbin 最重要的是在Arguments的配置,(注意! NDK r4版本编译C,C+程序的方式做了变化) -login -c cd /cygdrive/f/android/workspace/HelloNDK/jni & $NDK/ndk-build 以上参数表示 首先 登陆 Cygwin , 然后 进入 HelloNDK 这个工程 下的jni 目录(该目录下存放 c或c+的文件和 Andr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省安庆二中、天成中学2026届下学期第三次考试物理试题(辅导班)试题含解析
- 2025甘肃省武威市民勤县浙能武威能源有限公司招聘5人笔试历年常考点试题专练附带答案详解2套试卷
- 2025浙江绍兴国有资本运营有限公司编外人员招聘2人笔试历年典型考点题库附带答案详解2套试卷
- 2025浙江杭州市水务集团有限公司春季招聘15人笔试历年典型考点题库附带答案详解2套试卷
- 2025广西梧州市龙投人力资源有限公司招聘(10月21日)笔试参考题库附带答案详解
- 2025年甘肃省公路交通建设集团有限公司社会招聘132人笔试参考题库附带答案详解
- 2025夏季中国南水北调集团新能源投资有限公司校园招聘笔试历年常考点试题专练附带答案详解
- 2025四川省交通建设集团有限责任公司招聘100人笔试历年难易错考点试卷带答案解析
- 2025华陆工程科技有限责任公司选聘职业经理人经理层成员招聘6人笔试历年备考题库附带答案详解2套试卷
- 2025云南金涌道矿业科技有限公司招聘13人笔试参考题库附带答案详解
- 湖北省圆创高中名校联盟2026届高三2月第三次联合测评生物试卷(含答案解析)
- 2026年赣州职业技术学院单招职业技能考试备考试题附答案详解
- 雇佣老人看门协议书
- 赠与财物协议书模板
- 2025广西南宁市从“五方面人员”中选拔乡镇领导班子成员111人备考题库附答案
- 高等学校学生食堂伙食结构及成本核算指导意见
- 高一年级英语上册阅读理解专项练习及答案(50篇)
- 颅内肿瘤放疗护理管理
- 低温环境透水混凝土施工工艺方案
- 火电企业设备金属健康状态监测与防控体系
- 2025年全国中级经济师考试真题卷含答案经济基础知识
评论
0/150
提交评论