在Android源码编译成功的基础上重新编译带自己API的android.jar需要进行以下几步操作。
1 添加自己源代码,在Android源码frameworks/base目录下新建一个文件夹保存代码,如tv,以包的形式命名添加的文件所在的路径,如/tv/java/android/tv,添加的java文件开头定义的包即是编译成功的class文件所在的包。
2 修改makefile文件
2.1 修改build/core/pathmap.mk文件
在FRAMEWORKS_BASE_ SUBDIRS变量后添加tv\,代码如下(makefile文件中的语句以Tab键空格开头)
FRAMEWORKS_BASE_SUBDIRS := \
$(addsuffix /java, \
core \
graphics \
location \
media \
opengl \
sax \
telephony \
wifi \
vpn\
keystore \
tv \
)
2.2修改frameworks/base/Android.mk 文件
在packages_to_document变量后添加自己源代码的包名称,如android/tv,结果如下(makefile文件中的语句以Tab键空格开头)
packages_to_document := \
android \
javax/microedition/khronos android/tv
3 在ubuntu命令行终端使用如下命令进行编译:
make clean
make update-api
make PRODUCT-sdk-sdk
最后一行也可以用如下两个命令代替:
make –j4
make sdk
4 编译结果
4.1 android.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源码所在的文件名)
另:在android源码中,某些方法、成员、类或包被打上@hide标签,这些类、方法或成员在SDK中没有公开,故我们无法使用,如希望使用这些接口,可以把@hide去掉就可以了