Eclipse 编译带 so 库或 jar 包的 android 应用

1. 环境的搭建

  1. 安装 java 环境(见之前文档)

  2. 安装 eclipse 环境(见之前文档) 打开 Eclipse,选择菜单中的 Help - Software Updates–Available Software–Add Site -

输入地址 (https://dl-ssl.google.com/android/eclipse/)(如果有问题请试用)点击 OK - 选择上面添加的地址 -

点击 Install 安装插件,完成后重启 Eclipse 即可

  1. 下载相应 SDK(本例以 android 3.0 以上 SDK 为例)

  2. 指定 SDK 位置
    打开 Eclipse,选择菜单中的 Windows–Preferences–Android - SDK Location -

点击 Browse,选择 Android SDK 所在的位置,点击 OK 保存即可。

  1. 下载相关环境
    早期的 SDK,只要下载一个 SDK 压缩包即可,现在的 SDK 压缩包中不包含 tools,确良 platform 等必要的工具,需要用 eclipse 连网下载,方法:菜单 ->Window->Android

SDK Manager,然后选择需要的 SDK 版本下载即可。

  1. 建立 AVD
  1. 为什么要建立 AVD
    运行时需要 Android 环境,如果没有 Android 手机,或者手机版本与 SDK 版本不一致时,就需要建立一个虚拟运行环境 AVD

  2. 菜单 ->Window->AVD Manager,建立虚拟机环境。Android

3.0 以上默认是宽屏 PAD 的分辨率,因为屏幕大,操作起来特别慢,如果调手机应用,建议设在 800x480 以下)

2. 导入现有工程

  1. 如果应用在 eclipse 中建立,使用
    菜单 ->New->Import,选择源码所在目录

  2. 如果应用在源码中建立,使用
    菜单 ->New->Project->Android->Android project,选择从一个已有的目录建立工程

3. 引入三方 jar 包
在源码环境中编译只要修改 Android.mk 即可,在 eclipse 中编译需要引入 jar 包

  1. 项目名 ->右键 ->build path->add libraries->User Library->User

Libraries->New->输入名字 ->

  1. 如果之前 jar 包就在源码目录中,可以选中 jar 包 ->右键 ->Build path->add to build path->Add

jARs...->加入 jar 包 ->OK->Finish

4. 引入 so 文件
在源码环境中编译修改 Android.mk 即可将源文件编成 so,将加入 apk,可以不使用 NDK,在 eclipse 中编译步骤如下

  1. NDK
  1. 下载 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)

  1. 设置环境变量
    export NDK_ROOT=NDK 安装目录
    可以把以上命令加入~/.bashrc,每次启动 shell 时自动运行

  2. 编译 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 库

  3. 注意

  1. C 源代码需要安在 jni 目录下,NDK 会在项目目录下找 jni/Android.mk,用于编译

  2. 源码目录中最上层必须有 AndroidManifest.xml

  3. 显示编译时的具体命令
    $NDK_ROOT/ndk-build–B V=1

  1. 将 so 库编进 apk

在源码目录中建立 libs/armeabi/,然后将 libxxx.so 拷到该目录下即可编到 apk 包中(apk 生成在 bin 目录下),可以试用 unzip 将 apk 解包看看 lib 是否存在。同时在 adb

shell 看 logcat 信息,以辅助调试。

  1. 在 eclipse 中签名
    项目名 ->右键 ->Android Tools->Export Unsigned Application Package…
    然后再对其签名

5. 好处:

  1. 高版本的 SDK 以及使用 NDK 更规范,让代码更不容易出错。

  2. android 3.0 源码至今没有发布,而像 admob 这样的广告商又要求 2011 年 10 月之后的新加入的广告,只有在 android

3 以上的 SDK 下编译,才能正常显示。这种情况下只能使用 android 3.2 和 android 4.0 的 SDK 开发。