android添加系统API和APK步骤

一、添加系统API

在Android源码编译成功的基础上重新编译带自己API的android.jar需要进行以下几步操作。

1 添加自己源代码,在Android源码frameworks/base目录下新建一个文件夹保存代码,如gpio以包的形式命名添加的文件所在的路径,如gpio/java/inspur/GpioManager.java,添加的java文件开头定义的包即是编译成功的class文件所在的包。

2 修改makefile文件

2.1修改build/core/pathmap.mk文件

在FRAMEWORKS_BASE_ SUBDIRS变量后添加gpio\,代码如下(makefile文件中的语句以Tab键空格开头)

FRAMEWORKS_BASE_SUBDIRS := \

                                  $(addsuffix /java, \

                                    core \

                                    graphics \

                                    location \

                                    media \

                                    opengl \

                                    sax \

                                    telephony \

                                    wifi \

                                    vpn \

                                    keystore\

                                    gpio \

                                    )

2.2修改frameworks/base/Android.mk文件

在packages_to_document变量后添加自己源代码的包名称,如android/tv,结果如下(makefile文件中的语句以Tab键空格开头)

packages_to_document := \

                                    android \

                javax/microedition/khronos     android/inspur

3 在ubuntu命令行终端使用如下命令进行编译:

make clean

make update-api

make PRODUCT-sdk-sdk

最后一行也可以用如下两个命令代替:

make –j4 

make sdk

4编译结果

4.1android.jar文件所在的目录为

/out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar并在/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/src目录下重新以package形式组织所有生成到android.jar中的源代码。

   4.2 SDK所在目录为

out/host/linux-x86/sdk/,生成的sdk文件目录和压缩包为:

android-sdk_eng.xxx_linux-x86

android-sdk_eng.xxx_linux-x86.zip(xxx为自己android源码所在的文件名)

 

 

 二、添加自己的APK至android系统

1) 将在 Eclipse (当然也可以用记事本编写)中编写好的纯源代码(src+res+AndroidManifest.xml )拷到 Android 源代码文件夹下的 packages/apps 目录下自己建的文件夹下(如:TestGpioAPI)

2) 然后添加 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 := TestGpioAPI    #这个就是你以后生成的apk的名字 

include $(BUILD_PACKAGE)

3) 然后在 android源码目录下在终端输入 make [project name]

本例为:make TestGpioAPI

log输出的最后为:

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

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

4) 把 HelloWorld.apk 装入模拟器

A:可以采用adb push的方式

B:在源码目录下执行 make snod将apk打包进system.img

log输出如下:

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

5) 然后启动模拟器

进到out/target/product/generic目录下,

exportPATH=$PATH:~/Android/out/host/linux-x86/bin 

exportANDROID_PRODUCT_OUT=~/Android/out/target/product/generic

执行这两句,设置环境变量(具体要根据自己的源码目录修改)

 

之后:emulator  -system system.img -data userdata.img-ramdisk ramdisk.img 就可以把自己编译生成的img文件用虚拟机运行了。

 

展开阅读全文

没有更多推荐了,返回首页