DJI Fly APP技术架构分析报告
目录
- 一、核心结论
- 二、原生架构分析
- 三、DJI SDK核心能力
- 四、视频处理技术栈
- 五、AI与机器学习
- 六、地图与定位
- 七、实时通信
- 八、Lottie动画
- 九、WebView与混合开发
- 十、原生库技术栈
- 十一、应用架构特点
- 十二、第三方SDK集成
- 十三、技术架构总结
- 十四、总结
一、核心结论
DJI Fly APP采用了纯原生Android架构,主要使用Kotlin/Java原生开发,同时集成了DJI SDK、视频处理、AI算法、地图定位等多种技术方案。
技术栈概览
- 原生开发 - Kotlin/Java原生Android开发,无跨端框架
- DJI SDK - 大疆官方SDK,提供无人机控制能力
- 视频处理 - FFmpeg、IJKPlayer、自研视频处理引擎
- AI算法 - TensorFlow、MNN、MediaPipe等AI框架
- 地图定位 - 高德地图、Mapbox地图引擎
- 实时通信 - Agora、VolcEngine RTC、WebRTC等
- Lottie动画 - 用于复杂动画效果
- WebView - 用于H5页面和混合开发
二、原生架构分析
2.1 架构特点
DJI Fly采用纯原生架构,未使用跨端框架:
- 无React Native:未发现
libreactnativejni.so、libhermes.so等RN相关库 - 无Hippy:未发现Hippy相关资源文件
- 无Flutter:未发现Flutter引擎相关库
- 无小程序:未发现小程序运行时相关库
分析:DJI Fly作为专业的无人机控制应用,需要与硬件深度集成,对性能和实时性要求极高,因此采用纯原生架构以确保最佳性能。
2.2 DEX架构
从classes.dex文件可以看出,DJI Fly使用了单DEX架构:
classes.dex- 主DEX文件- 未发现
classes2.dex等辅助DEX文件
分析:相比知乎(19个DEX)和QQ(38个DEX),DJI Fly的代码量相对较小,单DEX即可满足需求,这也说明应用功能相对聚焦。
三、DJI SDK核心能力
3.1 DJI SDK核心库
DJI SDK相关库:
libsdk_base.so - SDK基础库
libsdk_common.so - SDK通用库
libsdk_file_system.so - SDK文件系统
libsdk_jni.so - SDK JNI桥接
libsdk_key_value.so - SDK键值存储
libsdk_liveshare_core.so - SDK直播分享核心
libGroudStation.so - 地面站库
libgimbal-lib.so - 云台控制库
libuav_video_jni.so - 无人机视频JNI
libuavanalytics.so - 无人机分析库
libuavanalytics-jni.so - 无人机分析JNI
libuavaudiorecord.so - 无人机音频录制
libuavfr.so - 无人机帧率控制
libuavfs_jni.so - 无人机文件系统JNI
3.2 无人机控制能力
从库文件可以看出,DJI Fly提供了完整的无人机控制能力:
飞行控制:
- 地面站控制(GroudStation)
- 云台控制(gimbal-lib)
- 飞行数据分析(uavanalytics)
视频处理:
- 无人机视频采集(uav_video_jni)
- 视频帧率控制(uavfr)
- 音频录制(uavaudiorecord)
文件管理:
- 文件系统管理(sdk_file_system)
- 数据存储(sdk_key_value)
3.3 协议支持
DJI协议相关库:
libassemble_proto.so - 协议组装
liblibrary_proto.so - 协议库
libmetadata_cc_proto.so - 元数据协议
libshot_cc_proto.so - 拍摄协议
libacb202_proto.so - ACB协议202版本
libacb203_proto.so - ACB协议203版本
libacb204_proto.so - ACB协议204版本
libhgb212_proto.so - HGB协议212版本
liboqb101_proto.so - OQB协议101版本
libwab020_proto.so - WAB协议020版本
libwab140_proto.so - WAB协议140版本
libwab234_proto.so - WAB协议234版本
libwab341_proto.so - WAB协议341版本
libwab520_proto.so - WAB协议520版本
libwab521_proto.so - WAB协议521版本
libwab530_proto.so - WAB协议530版本
libwmb261_proto.so - WMB协议261版本
分析:DJI Fly使用了大量的Protocol Buffer协议库,支持多种协议版本,说明DJI SDK具有完善的版本兼容性和协议扩展能力。
四、视频处理技术栈
4.1 视频播放器
视频播放库:
libijkplayer.so - IJKPlayer播放器
libijkffmpeg.so - IJKPlayer FFmpeg支持
libijksdl.so - IJKPlayer SDL支持
libmtmd_avformat.so - 媒体格式处理
libmtmd_framecore.so - 帧核心处理
libmtmd_framework.so - 媒体框架
libmtmd_playbackcache.so - 播放缓存
libmtmdffmpeg.so - FFmpeg封装
分析:DJI Fly使用了IJKPlayer作为视频播放器,IJKPlayer是基于FFmpeg的轻量级播放器,性能优秀。
4.2 视频编解码
视频编解码库:
libmtmd_h264streaming.so - H.264流处理
libmtmd_mp4atomparser.so - MP4原子解析
libmtmd_mp4fileparser.so - MP4文件解析
libmtmd_mediametadataretriever.so - 媒体元数据提取
libmtmd_metaextractor.so - 元数据提取器
libyuv.so - YUV格式处理
4.3 视频特效
视频特效库:
libeffect.so - 特效库
libfacebeauty.so - 美颜库
libbeautify/ - 美颜资源(878个文件)
libmtmd_bytedeffects.so - 字节跳动特效库
libvideo_denoise.so - 视频降噪
libvideo_analysis.so - 视频分析
libdual_fisheye_video_eis.so - 双鱼眼视频EIS
libeis_wrapper.so - EIS包装器
libeis.so - 电子防抖
libhdrdisplay.so - HDR显示
libcross_playback.so - 交叉播放
libdrone_video_shot_sky_exchange.so - 无人机视频天空交换
libvideo_shot_sky_exchange.so - 视频天空交换
分析:DJI Fly集成了丰富的视频特效能力,包括美颜、降噪、EIS防抖、HDR等,特别是针对无人机拍摄场景的"天空交换"功能。
4.4 全景视频
全景视频处理:
libpano_core.so - 全景核心库
libpano_video.so - 全景视频库
libpanorama_kit.so - 全景工具包
libstitch_with_sym.so - 对称拼接
libmtmd_panorama.so - 全景处理
libmtmd_virtual_flight_metaparser.so - 虚拟飞行元数据解析
libmtmd_virtual_flight_render.so - 虚拟飞行渲染
libmtmd_virtual_flight_threeD_math.so - 虚拟飞行3D数学
libmtmd_virtual_flight_utils.so - 虚拟飞行工具
分析:DJI Fly支持全景视频拍摄和处理,包括全景拼接、虚拟飞行等功能。
五、AI与机器学习
5.1 AI框架
AI框架库:
liborg_tensorflow.so - TensorFlow框架
libMNN.so - MNN推理引擎
libdMNN.so - MNN动态库
libdInfer.so - 推理库
libXNNPACK.so - XNNPACK加速库
libQnnHtp.so - Qualcomm神经网络HTP
libQnnHtpPrepare.so - QNN HTP准备
libQnnHtpV68Stub.so - QNN HTP V68桩
libQnnHtpV69Stub.so - QNN HTP V69桩
libQnnHtpV73Stub.so - QNN HTP V73桩
libQnnHtpV75Stub.so - QNN HTP V75桩
libQnnSystem.so - QNN系统库
libml-lib.so - 机器学习库
libml_ns.so - 机器学习噪声抑制
libml_vc.so - 机器学习视频编码
libml_vot.so - 机器学习视频目标跟踪
libmlace_calculator.so - MLACE计算器
libmlace_main.so - MLACE主库
libmlace_mediapipe.so - MLACE MediaPipe
libencode_ml.so - ML编码
分析:DJI Fly使用了多种AI框架,包括TensorFlow、MNN等,并且针对Qualcomm芯片进行了优化(QNN系列库),说明DJI Fly充分利用了硬件AI加速能力。
5.2 AI模型
AI模型资源(assets目录):
ai_model_bin/skysegment-v2.bin- 天空分割模型V2ai_model_bin/skysegment.bin- 天空分割模型ai/desktop_sdk_graph_photo_mlace_mobile.pbtxt- MLACE照片图ai/desktop_sdk_graph_stream_mlace_mobile.pbtxt- MLACE流图bns_models/- BNS模型目录(12个文件)bns_model_a_deep.mnn- BNS模型A深度版bns_model_a_natural.mnn- BNS模型A自然版bns_model_b_natural.mnn- BNS模型B自然版bns_model_c_natural.mnn- BNS模型C自然版bns_model_d_natural.mnn- BNS模型D自然版
5.3 AI功能
AI功能库:
libai_tag.so - AI标签
libai_tag_photo.so - AI照片标签
libsky_classification.so - 天空分类
libsky-segment.so - 天空分割
libintelligent_template.so - 智能模板
libvideo_analysis.so - 视频分析
分析:DJI Fly的AI能力主要用于:
- 天空分割:自动识别和分割天空区域,用于"天空交换"等功能
- 智能标签:自动识别照片内容并添加标签
- 智能模板:根据视频内容自动生成编辑模板
六、地图与定位
6.1 地图引擎
地图相关库:
libAMapSDK_MAP_v7_5_0.so - 高德地图SDK v7.5.0
libmapbox-gl.so - Mapbox地图引擎
libJni_wgs2gcj.so - WGS84转GCJ-02坐标转换
libtencentloc.so - 腾讯定位服务(可能未使用)
地图资源(assets目录):
amap_sdk_shaders/- 高德地图着色器(5个GLSL文件)map_assets/- 地图资源(47个文件)map_custom/- 自定义地图资源sdk_versions/com.mapbox.mapboxsdk- Mapbox SDK版本信息
分析:DJI Fly同时集成了高德地图和Mapbox地图引擎:
- 高德地图:主要用于中国地区的定位和地图显示
- Mapbox:可能用于国际版本或特定功能
6.2 定位服务
定位相关资源:
assets/ae/GNaviConfig.xml- 导航配置assets/location_*.png- 定位相关图标assets/location_map_gps_*.png- GPS定位图标
七、实时通信
7.1 RTC引擎
实时通信库:
libagora-rtsa-sdk.so - Agora RTSA SDK
libVolcEngineRTCLite.so - 火山引擎RTC Lite
libmrtc_core.so - 媒体RTC核心
libmrtc_agora.so - 媒体RTC Agora
libmrtc_volc.so - 媒体RTC火山引擎
libmrtc_webrtc.so - 媒体RTC WebRTC
libmrtc_rtmp.so - 媒体RTC RTMP
libmrtc_rtsp.so - 媒体RTC RTSP
libmrtc_ndi.so - 媒体RTC NDI
libmrtc_onvif.so - 媒体RTC ONVIF
libmrtc_28181.so - 媒体RTC GB/T 28181
libmrtc_data.so - 媒体RTC数据
libmrtc_log.so - 媒体RTC日志
libilink_live.so - iLink直播
libilink_network.so - iLink网络
libilink_protobuf.so - iLink协议
libilink2.so - iLink V2
分析:DJI Fly集成了多种RTC引擎,支持多种实时通信协议:
- Agora:实时音视频通信
- 火山引擎RTC:字节跳动的RTC服务
- WebRTC:标准WebRTC协议
- RTMP/RTSP:流媒体协议
- NDI:网络设备接口协议
- ONVIF:网络视频设备接口协议
- GB/T 28181:中国国家标准,用于视频监控
7.2 直播能力
从库文件可以看出,DJI Fly支持:
- 实时直播:通过RTC引擎实现实时视频直播
- 多协议支持:支持多种直播协议,适应不同场景
- iLink协议:DJI自研的实时通信协议
八、Lottie动画
8.1 Lottie资源
Lottie动画资源(assets/lottie目录):
panorama_segment_new_guide_track.json- 全景分段新引导跟踪动画panorama_segment_new_guide_shake.json- 全景分段新引导摇动动画panorama_segment_new_guide_move_vertical.json- 全景分段新引导垂直移动动画panorama_segment_new_guide_move_horizon.json- 全景分段新引导水平移动动画panorama_segment_new_guide_end.json- 全景分段新引导结束动画panorama_segment_new_guide_click.json- 全景分段新引导点击动画gimbal_mode_animation_roll360.json- 云台模式动画360度旋转gimbal_mode_animation_pitch_lock.json- 云台模式动画俯仰锁定gimbal_mode_animation_fpv.json- 云台模式动画FPVgimbal_mode_animation_follow.json- 云台模式动画跟随editor_panorama_trace.json- 编辑器全景跟踪动画editor_panorama_slide_vertical.json- 编辑器全景垂直滑动动画editor_panorama_slide_horizontal.json- 编辑器全景水平滑动动画editor_panorama_sensor.json- 编辑器全景传感器动画editor_panorama_click.json- 编辑器全景点击动画
8.2 使用场景
Lottie主要用于:
- 全景拍摄引导:全景拍摄时的用户引导动画
- 云台模式切换:不同云台模式切换时的动画效果
- 编辑器交互:视频编辑器中的交互动画
分析:DJI Fly没有使用PAG动画框架,而是使用Lottie,可能是因为Lottie更适合复杂的交互式动画场景。
九、WebView与混合开发
9.1 WebView相关
WebView资源(assets目录):
assets/webview_monitor_js_file/hybrid_bridge.js- 混合开发桥接assets/webview_monitor_js_file/hybrid-rangers-site-sdk.js- 混合开发SDKassets/htmls/- HTML页面(13个HTML文件)- 用户协议、隐私政策等法律文档
- 连接帮助页面
assets/apmplus_hybrid/apmplus.hybrid.cn.js- 性能监控混合开发脚本
9.2 使用场景
WebView主要用于:
- 法律文档:用户协议、隐私政策等静态HTML页面
- 帮助页面:设备连接帮助等说明页面
- 混合开发:部分功能使用H5实现,通过Bridge与原生交互
十、原生库技术栈
10.1 图像处理
图像处理库:
libopencv_java3.so - OpenCV Java3
libopencv_java4.so - OpenCV Java4
libopencv_world.so - OpenCV世界库
libopencv_world_dn.so - OpenCV世界库DN
libglide-webp.so - Glide WebP支持
libyuv.so - YUV格式处理
分析:DJI Fly使用了OpenCV进行图像处理,支持多种图像格式。
10.2 3D渲染
3D渲染库:
libogre_main.so - OGRE主库
libogre_bites.so - OGRE Bites
libogre_codec_stbi.so - OGRE STBI编解码
libogre_gl_support.so - OGRE GL支持
libogre_over_lay.so - OGRE覆盖层
libogre_particle_fx.so - OGRE粒子特效
libogre_render_system_gles2.so - OGRE GLES2渲染系统
libogre_rt_shader_system.so - OGRE实时着色器系统
分析:DJI Fly使用了OGRE 3D渲染引擎,用于3D场景渲染,可能用于虚拟飞行、3D地图等功能。
10.3 音频处理
音频处理库:
liboboe.so - Oboe音频库(Google)
libuavaudiorecord.so - 无人机音频录制
libaudiodatacollector.so - 音频数据收集
libbns_models/ - BNS音频模型(噪声抑制)
分析:DJI Fly使用了Google的Oboe音频库,这是一个高性能的音频处理库。
10.4 网络库
网络相关库:
libilink_network.so - iLink网络库
libfile_uploader.so - 文件上传库
libntp_client.so - NTP客户端
10.5 安全与加密
安全相关库:
libcrypto_lib.so - 加密库
libEncryptorP.so - 加密器
libwaes.so - WAES加密
libxxxsqlcipher.so - SQLCipher数据库加密
libmsaoaidauth.so - MSA OAID认证
libmsaoaidsec.so - MSA OAID安全
libFlyForbid.so - 飞行禁止库
libflysafecore.so - 飞行安全核心
分析:DJI Fly使用了多层安全防护,包括数据加密、数据库加密、飞行安全控制等。
10.6 存储
存储相关库:
libmmkv.so - MMKV高性能键值存储
libxxxsqlcipher.so - SQLCipher加密数据库
libsdk_key_value.so - SDK键值存储
libsdk_file_system.so - SDK文件系统
分析:DJI Fly使用了MMKV和SQLCipher两种存储方案:
- MMKV:高性能键值存储
- SQLCipher:加密的关系型数据库
10.7 崩溃监控
崩溃监控库:
libcrashlytics.so - Firebase Crashlytics
libcrashlytics-handler.so - Crashlytics处理器
libcrashlytics-trampoline.so - Crashlytics跳板
libcrashlytics-common.so - Crashlytics通用库
libapminsighta.so - 性能监控A
libapminsightb.so - 性能监控B
libFRCorkscrew.so - 堆栈回溯
分析:DJI Fly使用了Firebase Crashlytics进行崩溃监控,同时集成了性能监控工具。
10.8 其他重要库
数学计算:
libkiss_fft.so - KISS FFT快速傅里叶变换
libruy.so - Ruy矩阵运算库
libmtmd_math.so - 媒体数学库
工具库:
libbsdiff.so - 二进制差分工具
libhash.so - 哈希库
liblog_util.so - 日志工具
libcpu_features.so - CPU特性检测
libc++_shared.so - C++标准库
libgnustl_shared.so - GNU STL标准库
libcom_google_absl.so - Google Abseil库
libprotobuf.so - Protocol Buffer
libprotobuf_lite.so - Protocol Buffer Lite
libfreetype.so - FreeType字体渲染
libneonui_shared.so - Neon UI共享库
libneonuijni_public.so - Neon UI JNI
DJI特定库:
libupgrade_core.so - 升级核心库
libupgrade_jni.so - 升级JNI
liblinkid.so - 链接ID库
libqsmcl-lib.so - QSMCL库
libowl.so - OWL库
libdatajar.so - 数据JAR库
libdcl_jni.so - DCL JNI
libltm_jni.so - LTM JNI
libltsot.so - LTSOT库
libwpmz_jni.so - WPMZ JNI
libcpm_jni.so - CPM JNI
libhgb212_proto.so - HGB协议
libpns-2.13.4-LogOnlineStandardCuumRelease_alijtca_plus.so - PNS库
libzeus_direct_dex.so - Zeus直接DEX
libzeusflipped.so - Zeus翻转
libflipped.so - 翻转库
libAppGuard.so - 应用保护
libAppGuard-x86.so - 应用保护x86
十一、应用架构特点
11.1 单DEX架构
从classes.dex文件可以看出,DJI Fly使用了单DEX架构:
classes.dex- 主DEX文件- 未发现辅助DEX文件
分析:相比知乎(19个DEX)和QQ(38个DEX),DJI Fly的代码量相对较小,单DEX即可满足需求,说明应用功能相对聚焦,主要专注于无人机控制和视频处理。
11.2 资源管理
资源文件统计:
res/- 大量资源文件(11157个文件)- 4998个PNG图片
- 4615个XML文件
- 1332个WebP图片
assets/- 丰富的资源文件- 视频资源、AI模型、地图资源、动画资源等
分析:应用UI复杂,资源文件众多,特别是视频处理、AI模型等资源占用较大空间。
11.3 原生架构优势
纯原生架构的优势:
- 性能最优:无跨端框架开销,性能接近系统原生
- 硬件集成:与无人机硬件深度集成,实时性要求高
- 功能聚焦:专注于无人机控制,功能相对聚焦
- 稳定性高:技术栈简单,维护成本低
十二、第三方SDK集成
12.1 已识别的SDK
从配置文件和库文件可以看出,DJI Fly集成了以下SDK:
地图服务:
- 高德地图SDK(v7.5.0)
- Mapbox地图引擎
实时通信:
- Agora RTSA SDK
- 火山引擎RTC Lite
- WebRTC
AI框架:
- TensorFlow
- MNN推理引擎
- MediaPipe
- Qualcomm QNN(硬件AI加速)
视频处理:
- IJKPlayer
- FFmpeg
- 字节跳动特效库(bytedeffects)
3D渲染:
- OGRE 3D引擎
音频处理:
- Oboe(Google)
存储:
- MMKV
- SQLCipher
崩溃监控:
- Firebase Crashlytics
- 阿里云性能监控(APMPlus)
其他:
- OpenCV(图像处理)
- Protocol Buffer(协议)
- Glide(图片加载)
12.2 SDK配置
配置文件示例:
assets/cei.json- CEI配置assets/nui.json- NUI配置assets/supplierconfig.json- 供应商配置assets/sdk_versions/com.mapbox.mapboxsdk- Mapbox版本assets/beautify/version.json- 美颜版本assets/bns_models/app_cfg.json- BNS应用配置assets/bns_models/vpf_cfg.json- VPF配置
十三、技术架构总结
13.1 架构特点
- 纯原生架构:无跨端框架,性能最优
- DJI SDK深度集成:完整的无人机控制能力
- 强大的视频处理:FFmpeg、IJKPlayer、自研引擎
- AI能力丰富:TensorFlow、MNN、硬件AI加速
- 多地图支持:高德地图、Mapbox
- 实时通信完善:多种RTC引擎和协议支持
- 3D渲染能力:OGRE引擎支持3D场景
13.2 技术选型分析
| 技术领域 | 选型 | 原因 |
|---|---|---|
| 架构 | 纯原生 | 性能最优,硬件集成深度 |
| 视频播放 | IJKPlayer | 基于FFmpeg,性能优秀 |
| 视频处理 | FFmpeg + 自研 | 强大的视频处理能力 |
| AI框架 | TensorFlow + MNN | 通用AI + 移动端优化 |
| 地图 | 高德 + Mapbox | 国内 + 国际支持 |
| RTC | Agora + 火山引擎 | 多引擎支持,稳定性高 |
| 3D渲染 | OGRE | 强大的3D渲染能力 |
| 存储 | MMKV + SQLCipher | 高性能 + 加密 |
| 崩溃监控 | Crashlytics | Firebase生态 |
13.3 架构优势
- 性能最优:纯原生架构,无跨端框架开销
- 硬件集成:与无人机硬件深度集成,实时性高
- 功能完整:视频处理、AI、地图、通信等能力完善
- 稳定性高:技术栈相对简单,维护成本低
- 扩展性强:支持多种协议和SDK,易于扩展
13.4 潜在挑战
- 包体积:大量原生库和资源文件导致APK体积较大
- 维护成本:虽然技术栈相对简单,但原生开发维护成本仍较高
- 跨平台:纯原生架构,Android和iOS需要分别开发
- 更新成本:原生应用更新需要发布新版本,无法热更新
十四、总结
DJI Fly APP采用了纯原生Android架构,深度集成了DJI SDK,结合了视频处理、AI算法、地图定位、实时通信等多种技术。整体架构设计合理,在性能、功能完整性、稳定性之间取得了良好的平衡。
核心优势:
- 纯原生架构性能最优
- DJI SDK深度集成,无人机控制能力完整
- 强大的视频处理和AI能力
- 多地图和实时通信支持
- 技术栈相对简单,稳定性高
改进方向:
- 优化包体积(大量原生库和资源)
- 考虑部分功能使用跨端框架(非核心功能)
- 优化资源加载和内存管理
- 提升应用启动速度
分析基于DJI Fly APP 1.19.0版本(APKPure)
98

被折叠的 条评论
为什么被折叠?



