在源码中编译自己的 Android project

Daniel Wood 08/27/2010

1) 将在 Eclipse (当然也可以用记事本编写)中编写好的纯源代码( src+res+AndroidManifest.xml )拷到 Android 源代码文件夹下的 packages/apps 文件夹中,如: /Android/android1.6_r2/packages/apps 。拷过去的文件结构如图(不包括 Android.mk 文件 ):


在源码中编译自己的Android project

2) 然后添加 Android.mk 文件,在 Android project 文件夹下,例子中的 Android.mk 文件 内容如下:

Android.mk LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := HelloWorld #这个就是你以后生成的apk的名字

include $(BUILD_PACKAGE)

3) 然后在 /Android/android1.6_r2 目录下在终端输入 make [project name]

例子:

@desktop:~/Android/android-1.6_r2$ make HelloWorld

PLATFORM_VERSION_CODENAME=REL

PLATFORM_VERSION=1.6

TARGET_PRODUCT=generic

TARGET_BUILD_VARIANT=eng

TARGET_SIMULATOR=

TARGET_BUILD_TYPE=release

TARGET_ARCH=arm

HOST_ARCH=x86

HOST_OS=linux

HOST_BUILD_TYPE=release

BUILD_ID=DRD35

============================================

build/core/copy_headers.mk:15: 警告:覆盖关于目标“out/target/product/generic/obj/include/libpv/getactualaacconfig.h”的命令

build/core/copy_headers.mk:15: 警告:忽略关于目标“out/target/product/generic/obj/include/libpv/getactualaacconfig.h”的旧命令

target R.java/Manifest.java: HelloWorld (out/target/common/obj/APPS/HelloWorld_intermediates/src/R.stamp)

Warning: AndroidManifest.xml already defines verOz/8

。。。

Install: out/target/product/generic/system/app/HelloWorld.apk

就是在上面这个目录下生成了 HelloWorld.apk 文件

4) HelloWorld.apk 装入模拟器。


你可以用adb push 命令把HelloWorld.apk装入自己的模拟器,你会在模拟器中看到HelloWorld的应用。

在终端执行 make snod ,执行目录为 /Android/android1.6_r2

@desktop:~/Android/android-1.6_r2$ make snod

============================================

PLATFORM_VERSION_CODENAME=REL

PLATFORM_VERSION=1.6

TARGET_PRODUCT=generic

TARGET_BUILD_VARIANT=eng

TARGET_SIMULATOR=

TARGET_BUILD_TYPE=release

TARGET_ARCH=arm

HOST_ARCH=x86

HOST_OS=linux

HOST_BUILD_TYPE=release

BUILD_ID=DRD35

============================================

build/core/copy_headers.mk:15: 警告:覆盖关于目标“out/target/product/generic/obj/include/libpv/getactualaacconfig.h”的命令

build/core/copy_headers.mk:15: 警告:忽略关于目标“out/target/product/generic/obj/include/libpv/getactualaacconfig.h”的旧命令

make snod: ignoring dependencies

Target system fs image: out/target/product/generic/system.img

就是重新在上述路径生成 system.img 文件。 system.img 文件就是对 system 文件夹的打包,这个打包越打包越大!

5) 然后启动模拟器。首先要 config 一下(这一步只限于目录下有config文件的,可以执行. config命令。)

@desktop:~/Android/android-1.6_r2$ . config #注意点号后面的空格

Set PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/smrdn/Android/android-1.6_r2/out/host/linux-x86/bin

Set ANDROID_PRODUCT_OUT=/home/smrdn/Android/android-1.6_r2/out/target/product/generic

然后 emulator 命令启动模拟器:

@desktop:~/Android/android-1.6_r2$ emulator

在启动的模拟器中,将看到你的工程。如下图:

在源码中编译自己的Android project


更多相关文章

  1. 当修改一些代码时,使用什么编译命令可以最有效率
  2. Android studio怎样添加assets文件
  3. android adb命令安装和删除apk应用
  4. 【Android】(转)android模拟器命令详解
  5. 反编译和重新打包Android的dex文件
  6. Android中最重要的采用pull解析xml文件
  7. 修改Android Studio默认配置文件路径

随机推荐

  1. android shape总结 和控制的风格定制
  2. 互联网公司Android客户端面试 知识点
  3. android(EditText)属性详解
  4. Android NDK开发:SeetaFace2实现人脸匹配
  5. Android 开发——'Android Pre Compiler'
  6. 2.高焕堂讲解 ContentProvider范例
  7. android使用http协议上传文件
  8. Android应用正确使用扩展SD卡
  9. Android ApiDemos示例解析(15):App->Activ
  10. MPAndroidChart项目实战(二)——双平滑曲线