adt-bundle-linux
cd sdk
eclipse
window ->preferences->Andriod-> SDK Location(adt-bundle-linux/sdk)
create project method:
1.menu->file->new->Andriod Application Projects
创建普通的应用程序
2.menu->file->new->Project
Package name 注意! Minimun SDK 最小兼容版本
然后默认直到完成(非集成的也可以选择默认的创建)
run:
右键项目-》Run As Andriod Application
如果想用模拟器 运行之前需要先创建他
Andriod 中文件夹的作用
src:源文件(提交源代码时不要提交工程文件和配置文件)
R.java不需要修改 用来和下面的res来交互
bin:生成文件
.java编译成class->dex属于apk
libs:外部依赖库
.jar 第三方的非开源库
res:资源
drawable:存储图片资源
添加图片演示:把图片copy到eclipse 可以相互copy
添加后直接在代码中生成相应的资源drawable
Layout:布局
value:定义字符串(也可以写到代码中,写到这是为了支持多语言时修改方便,不用多次修改代码)
Manifest:增删activity等,还可以修改属性(例如横屏竖屏)
指定权限:比如写sdcard等 andriod.permission.WRITE_EXTERNAL_STORAGE
Activity 和layout
Activity:一个程序组件,主要功能是提供界面,是一般应用程序的入口。
onCreate():创建activity的时候自动创建,用于初始化一些东西
layout:xml设计布局(也可以在代码中控制)每个xml代表一种布局
LinearLayout
RelativeLayout
FrameLayout
调试:
1.log:Log.i();等等 参数:tag:text
显示:menu->others->show view->logcat
cmd:adb logcat |grep this 查找this (adb需要配置环境变量 在platform tools中)
建立模拟器:
左上方:Andriod Virtual Device Manager->new
NDK简介
比较简单的说,NDK是一套交叉编译工具,它可以帮你把你用C或C++书写
的代码,编译为.so(类似与win下的.dll)格式的文件,使你可以在
你的Android程序当中用Java语言(JNI)调用这些代码
当你想在Java中调用你的C、C++代码时你就可以用它,那么什么时候你
可能考虑使用C、C++代码呢?比如说,你原来用C、C++写过一个游戏
程序,里边有你大量的封装好的游戏业务逻辑、算法等代码,你现在
想把这个游戏移植到Android上去,怎么办?难道这些业务逻辑、算
法要全部用Java重写一遍嘛?现在有了NDK,不用了,你可以直接编
译移植这代码了,所以说如果你有代码复用需求的时候,你就可以用
它。
再举一个例子,比如说你现在用Android手机的摄像头采集图片信息,采
集后的图片你使用Java书写了一个压缩算法进行压缩操作,这个算法
非常的耗时,耗费CPU,效果很不理想。这时你就可以尝试采用C来书
写这个压缩算法,这时你就可能发现,改用C代码执行后,效率提高
了几倍乃至十几倍。当你的客户对程序的性能、速度要求比较高的时
候,你也可以考虑用C、C++代码编写部分代码,以满足客户要求。
sample:hello.jni
ndk-build
vim helloJni.java native:用ndk去编译的
经验:
1.运行时崩溃:提示loadlibrary:说明没有build就运行了 还没有生成相应的so
2 即使编译了 还需要刷新 保证使用最新的库
Android.mk简介
1.include $(CLEAR_VARS) 变量由编译系统提供,功能是清
除掉所有以LOCAL_开头的内容,一般作为一个模块的开头
2.LOCAL_MODULE
3.LOCAL_SRC_FILES
4.include $(BUILD_SHARED_LIBRARY) 变量由编译系统提供
,可以提供生成那种库,动态链接库or静态链接库
NDK基础介绍
?在C/C++代码中加入调试信息
1.修改Android.mk文件,加入lib选项
LOCAL_LDLIBS := -llog
2.包含头文件
#include <android/log.h>
3.为方便调试,使用宏定义
#define LOGD(...)
__android_log_print(ANDROID_LOG_DEBUG, "tag",
__VA_ARGS__)