package sensorservice import ( "android/soong/android" "android/soong/cc" "fmt" ) var ( isMiui bool ) func init() { // 注册cc_sensor_library_shared, 指定要调用的方法入口sensorService_LibraryFactory android.RegisterModuleType( "cc_sensor_library_shared" , sensorService_LibraryFactory) } func sensorService_LibraryFactory() (android.Module) { // 库编译要获取LibrarySharedFactory, 可执行文件编译要获取DefaultsFactory(这一步很重要) module := cc.LibrarySharedFactory() android.AddLoadHook(module, sensorService_Defaults) return module } func sensorService_Defaults(ctx android.LoadHookContext) { type props struct { // 定义Android.bp中的各个字段 Cflags []string Srcs []string Include_dirs []string Shared_libs []string Local_include_dirs []string Static_libs []string Export_shared_lib_headers []string } p := &props{} // 初始化环境配置,做不同版本的判断 initEnvironment(ctx) // 获取scrs配置 p.Srcs = getSrcs(ctx) // 获取local_include_dirs配置 p.Local_include_dirs = getLocalIncludeDirs(ctx) // 获取local_include_dirs配置 p.Cflags = getCflags(ctx) // 获取shared_libs配置 p.Shared_libs = getSharedLibs(ctx) // 获取static_libs配置 p.Static_libs = getStaticLibs(ctx) // 获取include_dirs配置 p.Include_dirs = getIncludeDirs(ctx) // 获取export_shared_lib_headers配置 p.Export_shared_lib_headers = getExportSharedLibHeaders(ctx) // 上边写的配置,不需要全写在go中,只需要把条件编译的代码放进来就可以了,其他的还是配置在Android.bp中 ctx.AppendProperties(p) } func initEnvironment(ctx android.LoadHookContext) { // 判断该路径是否存在 v,error := PathExists( "miui/frameworks/base/v29/native/libmqsas" ) // 初始化isMiui变量 if (v && error != nil) { isMiui = true fmt.Println( "sensorService = is Miui" ) } else { isMiui = false fmt.Println( "sensorService = isn't Miui" ) } } func getCflags(ctx android.BaseContext) ([]string) { var cflags []string cflags = append(cflags, "-DLOG_TAG=\"SensorService\"" ) cflags = append(cflags, "-Wall" ) cflags = append(cflags, "-Werror" ) cflags = append(cflags, "-Wextra" ) cflags = append(cflags, "-fvisibility=hidden" ) cflags = append(cflags, "-DHAS_SENSOR_CONTROL" ) if (isMiui) { cflags = append(cflags, "-DSENSOR_DATA_COLLECTION" ) } return cflags } func getExportSharedLibHeaders(ctx android.BaseContext) ([]string) { var libs []string libs = append(libs, "libsensor" ) libs = append(libs, "libsensorprivacy" ) return libs } func getLocalIncludeDirs(ctx android.BaseContext) ([]string) { var localDirs []string localDirs = append(localDirs, "EllipticFusionSensorManager" ) return localDirs } func getIncludeDirs(ctx android.BaseContext) ([]string) { var dirs []string if (isMiui) { dirs = append(dirs, "miui/frameworks/base/v29/native/libmqsas" ) } return dirs } func getStaticLibs(ctx android.BaseContext) ([]string) { var libs []string libs = append(libs, "[email protected]" ) return libs } func getSrcs(ctx android.BaseContext) ([]string) { var srcs []string srcs = append(srcs, "BatteryService.cpp" ) srcs = append(srcs, "CorrectedGyroSensor.cpp" ) srcs = append(srcs, "Fusion.cpp" ) srcs = append(srcs, "GravitySensor.cpp" ) srcs = append(srcs, "LinearAccelerationSensor.cpp" ) srcs = append(srcs, "OrientationSensor.cpp" ) srcs = append(srcs, "RecentEventLogger.cpp" ) srcs = append(srcs, "RotationVectorSensor.cpp" ) srcs = append(srcs, "SensorDevice.cpp" ) srcs = append(srcs, "SensorDeviceUtils.cpp" ) srcs = append(srcs, "SensorDirectConnection.cpp" ) srcs = append(srcs, "SensorEventConnection.cpp" ) srcs = append(srcs, "SensorFusion.cpp" ) srcs = append(srcs, "SensorInterface.cpp" ) srcs = append(srcs, "SensorList.cpp" ) srcs = append(srcs, "SensorRecord.cpp" ) srcs = append(srcs, "SensorService.cpp" ) srcs = append(srcs, "SensorServiceUtils.cpp" ) srcs = append(srcs, "EllipticFusionSensorManager/EllipticFusionSensorManager.cpp" ) srcs = append(srcs, "EllipticFusionSensorManager/TableTopSensor.cpp" ) srcs = append(srcs, "EllipticFusionSensorManager/ProximityFusionSensor.cpp" ) srcs = append(srcs, "EllipticFusionSensorManager/SnapFusionSensor.cpp" ) srcs = append(srcs, "EllipticFusionSensorManager/MuteFusionSensor.cpp" ) srcs = append(srcs, "EllipticFusionSensorManager/PhoneMotionSensor.cpp" ) srcs = append(srcs, "EllipticFusionSensorManager/ParseFusionSensorConfig.cpp" ) srcs = append(srcs, "SensorControl.cpp" ) return srcs } func getSharedLibs(ctx android.BaseContext) ([]string) { var libs []string libs = append(libs, "libcutils" ) libs = append(libs, "libhardware" ) libs = append(libs, "libhardware_legacy" ) libs = append(libs, "libutils" ) libs = append(libs, "liblog" ) libs = append(libs, "libbinder" ) libs = append(libs, "libsensor" ) libs = append(libs, "libsensorprivacy" ) libs = append(libs, "libcrypto" ) libs = append(libs, "libbase" ) libs = append(libs, "libhidlbase" ) libs = append(libs, "libhidltransport" ) libs = append(libs, "libhwbinder" ) libs = append(libs, "libfmq" ) libs = append(libs, "[email protected]" ) libs = append(libs, "[email protected]" ) if (isMiui) { libs = append(libs, "libmqsas_v29" ) } return libs } |