Framework添加自定义API注意事项

3,510 阅读1分钟

注意:前提是添加新API之前,项目能全编通过。

1、删除out目录

rm out/ -rf

2、修改Android.mk

1、如果自定义的包位于frameworks/base/core/java/android下,则直接使用默认的配置,无需修改,忽略2。
2、如果自定义包位于 frameworks/base/core/java/com/****/camera/,即非java/android目录下,则需要在frameworks/base/Android.mk中的packages_to_document变量后面中添加自定义的包名。 如: vim frameworks/base/Android.mk +631

@@ -598,7 +607,8 @@ $(gen): $(aidl_files) | $(AIDL)
 # TODO: deal with com/google/android/googleapps
 packages_to_document := \
        android \
-       javax/microedition/khronos
+       javax/microedition/khronos \
+       com/××××/camera

3、撤销 api/current.txt api/system-current.txt的改动

cd frameworks/base/
git checkout api/current.txt api/system-current.txt

4、全编

添加的某服务客户端即××××Manager不要在class上添加@hide。

source build/envsetup.sh 
lunch
make update-api
make -j16

5、编译SDK

执行以下命令后,会在out/host/linux-x86/sdk/sdk/android-sdk_eng.root_linux-x86目录中生成android.jar文件。 out/host/linux-x86/sdk/sdk/android-sdk_eng.root_linux-x86/platforms/android-××××/android.jar

source build/envsetup.sh
lunch sdk-eng
make sdk

6、IDE使用新增API

将android.jar拷贝至相应的开发SDK路径下。如果通过AS开发,可在externallibraries下的android.jar中,存在com.****.camera,新增的API都在这个包里面。

cp out/host/linux-x86/sdk/sdk/android-sdk_eng.root_linux-x86/platforms/android-××××/android.jar /root/Android/Sdk/platforms/android-2×/