Eclipse编译带so库或jar包的android应用
Eclipse 编译带 so 库或 jar 包的 android 应用
1. 环境的搭建
安装 java 环境(见之前文档)
安装 eclipse 环境(见之前文档) 打开 Eclipse,选择菜单中的 Help - Software Updates–Available Software–Add Site -
输入地址 (https://dl-ssl.google.com/android/eclipse/)(如果有问题请试用)点击 OK - 选择上面添加的地址 -
点击 Install 安装插件,完成后重启 Eclipse 即可
下载相应 SDK(本例以 android 3.0 以上 SDK 为例)
指定 SDK 位置
打开 Eclipse,选择菜单中的 Windows–Preferences–Android - SDK Location -
点击 Browse,选择 Android SDK 所在的位置,点击 OK 保存即可。
- 下载相关环境
早期的 SDK,只要下载一个 SDK 压缩包即可,现在的 SDK 压缩包中不包含 tools,确良 platform 等必要的工具,需要用 eclipse 连网下载,方法:菜单 ->Window->Android
SDK Manager,然后选择需要的 SDK 版本下载即可。
- 建立 AVD
为什么要建立 AVD
运行时需要 Android 环境,如果没有 Android 手机,或者手机版本与 SDK 版本不一致时,就需要建立一个虚拟运行环境 AVD菜单 ->Window->AVD Manager,建立虚拟机环境。Android
3.0 以上默认是宽屏 PAD 的分辨率,因为屏幕大,操作起来特别慢,如果调手机应用,建议设在 800x480 以下)
2. 导入现有工程
如果应用在 eclipse 中建立,使用
菜单 ->New->Import,选择源码所在目录如果应用在源码中建立,使用
菜单 ->New->Project->Android->Android project,选择从一个已有的目录建立工程
3. 引入三方 jar 包
在源码环境中编译只要修改 Android.mk 即可,在 eclipse 中编译需要引入 jar
包
- 项目名 ->右键 ->build path->add libraries->User Library->User
Libraries->New->输入名字 ->
- 如果之前 jar 包就在源码目录中,可以选中 jar 包 ->右键 ->Build path->add to build path->Add
jARs...->加入 jar 包 ->OK->Finish
4. 引入 so 文件
在源码环境中编译修改 Android.mk 即可将源文件编成 so,将加入
apk,可以不使用 NDK,在 eclipse 中编译步骤如下
- NDK
- 下载 NDK
[http://dl.google.com/android/ndk/android-ndk-r4b-linux-x86.zip
](http://dl.google.com/android/ndk/android-ndk-r4b-linux-x86.zip)
设置环境变量
export NDK_ROOT=NDK 安装目录
可以把以上命令加入~/.bashrc,每次启动 shell 时自动运行编译 so 中
进行源码所在目录,如 ndk 包中所带示例
cd $NDK_ROOT/samples/hello-jni
然后执行
$NDK_ROOT/ndk-build
或者在任一目录执行
$NDK_ROOT/ndk-build -C $NDK_ROOT/samples/hello-jni.
此时即可在 hello-jni/libs/armeabi/目录下产生 so 库注意
C 源代码需要安在 jni 目录下,NDK 会在项目目录下找 jni/Android.mk,用于编译
源码目录中最上层必须有 AndroidManifest.xml
显示编译时的具体命令
$NDK_ROOT/ndk-build–B V=1
- 将 so 库编进 apk
在源码目录中建立 libs/armeabi/,然后将 libxxx.so 拷到该目录下即可编到 apk 包中(apk 生成在 bin 目录下),可以试用 unzip 将 apk 解包看看 lib 是否存在。同时在 adb
shell 看 logcat 信息,以辅助调试。
- 在 eclipse 中签名
项目名 ->右键 ->Android Tools->Export Unsigned Application Package…
然后再对其签名
5. 好处:
高版本的 SDK 以及使用 NDK 更规范,让代码更不容易出错。
android 3.0 源码至今没有发布,而像 admob 这样的广告商又要求 2011 年 10 月之后的新加入的广告,只有在 android
3 以上的 SDK 下编译,才能正常显示。这种情况下只能使用 android 3.2 和 android 4.0 的 SDK 开发。