# APP 壳 ## 加载模块 ### 模块加载顺序(必须按照这个顺序) 因为模块之间有状态依赖关系,例如:Http-DNS是否初始化完成,是否进入VR模式、定位服务是否可用、地图是否加载完成 ## 初始化部分服务 ## 定义 flavor ### basic 维度 产品形态:区别 applicationId,定义服务加载 1. independent:独立app,作为普通 app 运行在系统 2. launcher:作为 launcher 运行在系统 ### product 维度 产品线,各个产品线引入不同服务,实现不同服务内容 1. f8xx: 分体机 - launcher 2. e8xx: E系列m4(2+32) - launcher 3. em4: E系列m4(2+32) - launcher 4. em3: E系列m3(2+32) - independent 5. em1: E系列m1(1+16) - independent 6. d8xx: D系列(2+32) - independent 7. d82x: D系列(1+16) - independent 8. byd: 比亚迪应用市场 - independent 9. PadLenovo: 联想pad适配 - launcher ### env 维度 1. online: 线上环境 2. qa: 测试环境 3. demo: 演示环境(大部分时候都是测试环境) ## 区分 flavor 功能引入 ## 不能启动自动驾驶的档位 | 车型 | 配置所在文件 | 档位 | 配置 | |:-|:-|:-|:-| | 东风、红旗 | fOchTaxi.gradle、fOchTaxiPassenger.gradle | P、R | buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet(){{add(chassis.Chassis.GearPosition.GEAR_P);add(chassis.Chassis.GearPosition.GEAR_R);}}' | | 金旅小巴 | ochJL.gradle、ochJL.gradle、ochJL.gradle、ochJL.gradle | N、R | buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet(){{add(chassis.Chassis.GearPosition.GEAR_N);add(chassis.Chassis.GearPosition.GEAR_R);}}' | | M1 | fOchBusPassengerM1.gradle | 不限制档位 | buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR', 'null' | | M2 | ochM2.gradle | N、P、R | buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet(){{add(chassis.Chassis.GearPosition.GEAR_N);add(chassis.Chassis.GearPosition.GEAR_P);add(chassis.Chassis.GearPosition.GEAR_R);}}' | | 清扫车 | ochFT.gradle | 不限制档位 | buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR', 'null' | | 开沃 | 暂无 | 不限制档位 | buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR', 'null' |