最近在开发Settings需求中遇到几个编译问题,在这里做个笔记。希望对大家有用。
Settings中调用其他应用aidl问题。
在系统应用Settings里引入,另一个应用对外封装的aidl文件,报编译错误。
例如引入SDKAPP应用中
SDKAPP\app\src\main\aidl\com\xxxx\xxx\nightmode\INightModeService.aidl
1.需要在Settings应用下创建全路径相同文件
packages/apps/Settings/src/com/xxxx/xxx/nightmode/INightModeService.aidl
2.需要在对应的Android.mk文件中引入文件路径(否则会报编译错误找不到对应的INightModeService.java)
LOCAL_SRC_FILES += \
src/com/xxxx/xxx/nightmode/INightModeService.aidl
如果Android.mk文件中未引入aidl会报找不到aidl类编译错误。
Settings中调用Services下的类出现问题
调用底层Service包中里frameworks/base/services/下的类
需要在对应的Android.mk文件LOCAL_STATIC_JAVA_LIBRARIES中静态引入services。
否则会报找不到frameworks/base/services/下的包,
frameworks/base/services/core/java/com/android/server/DeviceControlService.java
frameworks/base/services/core/java/com/android/server/twilight/TwilightService.java
frameworks/base/services/core/java/com/android/server/display/nightmode/NightModeTwilightController.java
等都导不进来。
如果LOCAL_JAVA_LIBRARIES这个里动态引入services,则会编译通过运行找不到类异常。