Android开发环境搭建_Android开发环境搭建
来源:互联网 发布:h3c 在端口上应用acl 编辑:程序博客网 时间:2024/04/30 03:10
1.1.安装JDK & Eclipse Android开发包
JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html
如果不想下载安装其他旧的JDK,在该面下拉到最后,见下图点击DOWNLOAD
ADT工具包:http://developer.android.com/sdk/index.html
备注:如果打开网页失败,那么借助代理进行访问。
解压后直接使用或者安装使用。
1.2 配置环境变量
环境变量:
我的电脑>属性>高级系统配置>环境变量,path变量加上JDK的安装路径以及Android SDK的platform-tools和tools目录。
如:
C:\Program Files\Java\jdk1.7.0_03\bin;%ANDROIDSDK%\tools;%ANDROIDSDK%\platform-tools;
检验:Java、Javac、Android、adb、emulator等命令能直接使用,
检查Eclipse的Android SDK路径配置:window>preferences
1.3. 创建第一个Android项目
l File>New>Android Application Project,填好基本信息后一路next到finish。
l 启动模拟器,或者使用真机
l 添加若干按钮,功能后启动项目:project右键>run as Android application
Adb 命令使用
Adb uninstall<package name>卸载程序:adb uninstall com.example.test1
Adb install <filename>安装程序:adb install Test1.apk
Adb shell am start <packagename/.mainclass>启动程序:
adb shell am start com.example.test1/.MainActivity
其他程序参考命令帮助文档,或者搜索引擎
1)打开Android开发者的官网http://developer.android.com/找到Develop点击。如果页面打不开,通过代理来访问。
2)进入后再点击Tools
3)进入后在左侧找到NDK点击,可以见到各种平台的NDK r10。
选择需要的下载
5)解压下载的android-ndk32-r10-windows-x86_64.zip,将其放到你想要的目录下。
注:R7之前的版本,必须要安装Cygwin才能使用NDK。从R7开始,Windows版本的NDK提供了一个ndk-build.cmd脚本,可以直接利用这个脚本编译。想要做到这一 点,只要为Eclipse Android工程添加一个Builder,就能实现Eclipse的自动编译NDK,这一点在后面的步骤会有介绍。
6) NDK实例的实现
启动Eclipse,新建Android工程(此处名为TestNDK),如图所示:
7)在TestNDK工程的根目录下新建文件夹jni,之后找到NDK的安装目录(sampleshello-jnijni)下的 Android.mk和hello-jni.c 这两个文件,将其拷贝到TestNDK->jni文件夹下面。
注:如果你很好奇jni文件夹里的hello-jni.c里的函数命名如此刁钻,是怎么写的,并且你如果你想的更远,已经在考虑自己以后怎么写这种文件,那么我告诉你它里面的函数命名是直接粘贴的一个头文件里的内容。这个头文件可以通过反编译下边提到的HelloJni.java得到。如果你以后要确实要进行NDK开发,那么你肯定要掌握反编译的方法。为了你能够少走弯路,推荐我的另一篇文章《1分钟攻克NDK开发中javah不能反编译的问题》,链接网址http://blog.csdn.net/golden1314521/article/details/23039417 。
8) 找到NDK的安装目录(sampleshello-jnisrccomexamplehellojni)下的HelloJni.java文件,将其拷贝到TestNDK工程src文件夹对应的包下。
9) 修改项目文件AndroidManifest.xml,将activity标签下的 android:name =“com.zhw.testndk. MainActivity”修改为 android:name =“com.example.hellojni.HelloJni”。(注:此处的
TestNDKACtivity为项目自动生成的,项目不同,此处也会不同)
10) 新建并配置一个Builder
点击Project->Properties->Builders->New,新建立一个Builder。在弹出的对话框上面点击Program,OK!如图所示
在弹出的对话框【Edit Configuration】中,配置选项卡【Main】:
Location中需要填入nkd-build.cmd的路径(NDK安装目录下)。
Working Diretcoty中需要填入TestNDK的工程根目录。如图所示:
注:不要漏了
配置选项卡【Refresh】,如图所示:
勾选“Refresh resources upon completion”,
勾选“The entire workspace”,
勾选“Recuresively include sub-folders”。
配置选项卡【Build Options】,如图七所示:
勾选“After a “Clean””,
勾选“During manual builds”,
勾选“During auto builds”,
勾选“Specify working set of relevant resources”。
点击“Specify Resources…”勾选TestNDK工程的“jni“目录 ,Finish!
当在console里面看到如图八所示的信息,则表示一切正常,此时就已经是自动编译代码了。
注:如果不成功:Project->clean->选择工程->点击OK
假如你使用的是NDK-R9版本中的例子,你在console里面会看到比上图要多的编译信息,截图如下
这时候你要检查一下工程根目录下的libs目录下的子目录,要删除libs中多余的子文件夹,只留下armeabi文件夹和以jar为后缀名的jar包。
10)右键点击工程TestNDK,Run As -> Android Application, 运行程序。当出现图所示信息时,NDK实例运行成功!
如果程序运行出错,显示“应用程序**(进程:com.example.***)意外停止,请重试”的错误提示
这个错误产生的原因极有可能是你的JNI文件的命名或包的声明写错了。查一下程序运行的日志logcat,显示错误为“java.lang.UnsatisfiedLinkError:stringFromJNI”,说的是Java层调用本地方法stringFromJNI时,却没有找到这个本地方法,所以除了错。
那么Android虚拟机怎么查找这个本地方法的呢?先说一下Android工程的环境:包名称是com.example.testndk,应用名称是HelloJni,如果Java层调用了本地方法String stringFromJNI(),那么Android虚拟机就会由这三个变量生成一个名字:jstring Java_com_example_testndk_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ) ,并在本地方法中严格按照这个名字查找同名的本地方法。如果找不到,就会返回上图的错误。所以要确认一下JNI文件的命名或包的声明是否与Java文件中的一致。
在本地文件(即C或C++文件)改正此错误后,运行,正常显示。
今天学习了一下android NDK,所以记录下来。据说NDK从r7开始自带编译器,在windows上无需配置cygwin的环境。现在我使用NDK r10来开发。
上午搭建的NDK并写了一个实例,不过并没有很好的使用eclipse的功能,如果开发的话可能比较慢。
1)首先,在eclips中配置NDK路径
在eclipse中点击菜单栏window-Perferences,配置NDK的路径。图一为NDK所在的路径。
(图一)
2)在工程中添加native lib
新建一个空白的Android工程,在根目录上点击右键Adnroid Tools - Add Native Support...
3)在弹出的对话框中输入要新建的lib的名称,点击Finish,在工程目录下会多出一个jni文件夹,里面有一个空白的cpp文件和一个Android.mk文件
这个Androd.mk文件很短,下面我们来逐行解释下:
LOCAL_PATH := $(call my-dir)
一个Android.mk 文件首先必须定义好LOCAL_PATH变量。它用于在开发树中查找源文件。在这个例子中,宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)。
include $( CLEAR_VARS)
CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...), 除LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。
LOCAL_MODULE := TestJni
编译的目标对象,LOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。
注意:编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'hello-jni'的共享库模块,将会生成'libTestJni.so'文件。
重要注意事项:如果你把库命名为‘libTestJni’,编译系统将不会添加任何的lib前缀,也会生成 'libTestJni.so',这是为了支持来源于Android平台的源代码的Android.mk文件,如果你确实需要这么做的话。
LOCAL_SRC_FILES := TestJni.cpp
LOCAL_SRC_FILES变量必须包含将要编译打包进模块中的C或C++源代码文件。注意,你不用在这里列出头文件和包含文件,因为编译系统将会自动为你找出依赖型的文件;仅仅列出直接传递给编译器的源代码文件就好。
注意,默认的C++源码文件的扩展名是’.cpp’. 指定一个不同的扩展名也是可能的,只要定义LOCAL_DEFAULT_CPP_EXTENSION变量,不要忘记开始的小圆点(也就是’.cxx’,而不是’cxx’)
include $(BUILD_SHARED_LIBRARY)
BUILD_SHARED_LIBRARY表示编译生成共享库,是编译系统提供的变量,指向一个GNU Makefile脚本,负责收集自从上次调用'include $(CLEAR_VARS)'以来,定义在LOCAL_XXX变量中的所有信息,并且决定编译什么,如何正确地去做。还有 BUILD_STATIC_LIBRARY变量表示生成静态库:lib$(LOCAL_MODULE).a, BUILD_EXECUTABLE 表示生成可执行文件。
MainActivity.java代码如下:
package
com.zhw.testjni;
import
android.os.Bundle;
import
android.app.Activity;
import
android.widget.TextView;
public
class
MainActivity
extends
Activity {
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
TextView textView =
new
TextView(
this
);
textView.setText(helloFromJni());
setContentView(textView);
}
public
native
String helloFromJni();
static
{
System.loadLibrary(
"TestJni"
);
}
}
TestJni.cpp代码如下:
#include <jni.h>
extern
"C"
jstring Java_com_example_testjni_MainActivity_helloFromJni(JNIEnv *env, jobject thiz) {
return
env->NewStringUTF(
"Hello From Jni"
);
}
5)直接运行程序,可以在Console窗口中看到NDK build的输出
运行结果如下
至于C/C++的编译是怎么实现的,我们可以查看一下工程的Properties
在Builders里面有多了两项,一个是CDT Builder,一个是Scanner Configuration Builder。
现有的工程添加Builder
如果工程里面已经有jni目录了,但是没有配置C/C++的编译器,高手们可以自己添加Builder,对于我这种爱投机取巧的小菜鸟,工程右键菜单,新添加一个空白的so,然后再删除,CDT Builder和Scanner Configuration Builder就出来了。
上一篇就是使用添加Builder的。
- Android开发环境搭建_Android开发环境搭建
- Android-开发笔记-001_Android开发环境搭建
- 01_Android应用开发环境搭建【图解】
- 01_Android应用开发环境_03_开发环境搭建及简单Android程序
- 搭建Android开发环境
- Android 开发环境搭建
- android开发环境搭建
- Android开发环境搭建
- Android 开发环境搭建
- 搭建Android开发环境
- Android开发环境搭建
- Android 开发环境搭建
- 搭建Android开发环境
- 搭建android开发环境
- Android开发环境搭建
- Android开发环境搭建
- 搭建Android开发环境
- android 开发--环境搭建
- 深入理解java异常处理机制
- java HttpServer构建http服务器
- Android 悬浮拖到窗口例子
- LLVM代码生成器进一步深入,第一部分
- js倒计时以及ie兼容问题
- Android开发环境搭建_Android开发环境搭建
- LeetCode——Valid Sudoku
- listview与scorolview嵌套
- 前端开发资源集锦
- Linux中fork()函数详解
- CRichEditCtrl派生类 实现上下标,标红,替换(中英文符号转换)
- 二分图最佳完美匹配——Kuhn-Munkres算法 (最大权匹配)
- android
- 深入理解 Linux 内存管理