在源码中编译自己的Android project

ZZZZ: http://danielwood.iteye.com/blog/763625

Daniel Wood 08/27/2010

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


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

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


更多相关文章

  1. Android数据存储技术
  2. Android中的下拉列表-自定义选项界面样式
  3. Android(安卓)获取sdcard音乐文件
  4. Android(安卓)Studio使用来自控制台的模拟器,/dev/kvm device:
  5. 使用adb出现假emulator的解决方法
  6. Android软件版本更新
  7. Android在layout xml中使用include .
  8. Android(安卓)productFalvors 多渠道打包方案
  9. android上如何写配置文件

随机推荐

  1. Android 下 Kernel Debug (Qualcomm Chip
  2. Android ListView移动至指定行
  3. Android 滑动效果入门篇(二)
  4. Android10共享文件总是读取不到文件,文件
  5. android 输入系统
  6. Android 入门 和 环境搭建
  7. Cordova 低版本安卓白屏
  8. Android 开发环境安装 新版本Android Stu
  9. 《第一行代码——Android》
  10. Android获取其他包的Context实例