feat: 更新GPS功能,添加自定义位置支持,调整权限和配置,移除旧服务
This commit is contained in:
196
gps/BUILD_GUIDE.md
Normal file
196
gps/BUILD_GUIDE.md
Normal file
@@ -0,0 +1,196 @@
|
||||
# Redroid 自定义GPS位置构建指南
|
||||
|
||||
本指南详细说明如何构建和使用Redroid的自定义GPS位置功能。
|
||||
|
||||
## 📋 修改的文件列表
|
||||
|
||||
### 1. 核心实现文件
|
||||
- `gps/com_android_server_location_GnssLocationProvider.cpp` - 主要的JNI实现
|
||||
- `gps/Android.bp` - 编译配置文件(新增)
|
||||
- `gps/init.redroid.gps.sh` - GPS初始化脚本
|
||||
|
||||
### 2. 集成配置文件
|
||||
- `vendor.mk` - 添加GPS JNI库到产品包
|
||||
- `redroid.legacy.rc` - 调整GPS目录权限
|
||||
|
||||
## 🔧 构建步骤
|
||||
|
||||
### 1. 准备源码
|
||||
确保所有修改的文件都在正确的位置:
|
||||
|
||||
```bash
|
||||
vendor/redroid/
|
||||
├── gps/
|
||||
│ ├── com_android_server_location_GnssLocationProvider.cpp
|
||||
│ ├── Android.bp
|
||||
│ └── init.redroid.gps.sh
|
||||
├── vendor.mk
|
||||
└── redroid.legacy.rc
|
||||
```
|
||||
|
||||
### 2. 编译系统
|
||||
在Android源码根目录执行:
|
||||
|
||||
```bash
|
||||
# 设置环境
|
||||
source build/envsetup.sh
|
||||
|
||||
# 选择目标(根据你的设备调整)
|
||||
lunch aosp_arm64-eng
|
||||
|
||||
# 编译GPS JNI库
|
||||
m libredroid_gps_jni
|
||||
|
||||
# 或者编译整个vendor模块
|
||||
m vendor-redroid
|
||||
```
|
||||
|
||||
### 3. 验证编译结果
|
||||
检查编译输出:
|
||||
|
||||
```bash
|
||||
# 检查生成的库文件
|
||||
ls -la out/target/product/*/vendor/lib*/hw/libredroid_gps_jni.so
|
||||
```
|
||||
|
||||
## 🚀 部署和使用
|
||||
|
||||
### 1. 系统启动
|
||||
当Android系统启动时,`redroid.legacy.rc`会自动:
|
||||
- 创建`/data/vendor/gps`目录
|
||||
- 执行`init.redroid.gps.sh`脚本
|
||||
- 设置正确的权限
|
||||
|
||||
### 2. 默认位置
|
||||
系统会创建默认的GPS位置文件:
|
||||
```bash
|
||||
/data/vendor/gps/custom_location.txt
|
||||
```
|
||||
|
||||
默认坐标(杭州):`30.281026,120.019348`
|
||||
|
||||
### 3. 自定义位置
|
||||
修改GPS位置只需编辑文件:
|
||||
|
||||
```bash
|
||||
# 使用adb连接设备
|
||||
adb shell
|
||||
|
||||
# 修改GPS位置(例如:北京天安门)
|
||||
echo "39.904989,116.405285" > /data/vendor/gps/custom_location.txt
|
||||
|
||||
# 或者使用adb push
|
||||
echo "39.904989,116.405285" > custom_location.txt
|
||||
adb push custom_location.txt /data/vendor/gps/
|
||||
```
|
||||
|
||||
### 4. 实时生效
|
||||
- 修改文件后,新的GPS位置会在下次位置请求时自动生效
|
||||
- 无需重启系统或GPS服务
|
||||
- 系统会检测文件修改时间并自动加载新坐标
|
||||
|
||||
## 📍 支持的坐标格式
|
||||
|
||||
### 逗号分隔格式
|
||||
```
|
||||
纬度,经度
|
||||
39.904989,116.405285
|
||||
```
|
||||
|
||||
### 空格分隔格式
|
||||
```
|
||||
纬度 经度
|
||||
39.904989 116.405285
|
||||
```
|
||||
|
||||
### 坐标范围
|
||||
- 纬度:-90° 到 +90°
|
||||
- 经度:-180° 到 +180°
|
||||
|
||||
## 🧪 测试验证
|
||||
|
||||
### 1. 查看日志
|
||||
```bash
|
||||
# 查看GPS相关日志
|
||||
adb logcat | grep -i gnss
|
||||
adb logcat | grep -i "custom.*gps"
|
||||
|
||||
# 期望看到的日志:
|
||||
# I/GnssLocationProviderJni: Custom GPS location loaded: lat=39.904989, lon=116.405285
|
||||
# I/GnssLocationProviderJni: Using custom GPS location: lat=39.904989, lon=116.405285
|
||||
```
|
||||
|
||||
### 2. 使用GPS应用
|
||||
- 打开地图应用(如Google Maps)
|
||||
- 启用位置服务
|
||||
- 应该显示自定义的GPS位置
|
||||
|
||||
### 3. 验证位置变更
|
||||
```bash
|
||||
# 修改位置
|
||||
echo "31.239666,121.499809" > /data/vendor/gps/custom_location.txt
|
||||
|
||||
# 在地图应用中观察位置变化
|
||||
```
|
||||
|
||||
## 🔍 故障排除
|
||||
|
||||
### 编译错误
|
||||
1. 确保Android编译环境正确设置
|
||||
2. 检查依赖库是否存在
|
||||
3. 验证Android.bp语法
|
||||
|
||||
### 运行时错误
|
||||
1. 检查文件权限:
|
||||
```bash
|
||||
ls -la /data/vendor/gps/
|
||||
```
|
||||
|
||||
2. 验证文件格式:
|
||||
```bash
|
||||
cat /data/vendor/gps/custom_location.txt
|
||||
```
|
||||
|
||||
3. 查看详细日志:
|
||||
```bash
|
||||
adb logcat -v threadtime | grep -E "(Gnss|GPS)"
|
||||
```
|
||||
|
||||
### 权限问题
|
||||
如果遇到权限错误:
|
||||
```bash
|
||||
# 重新设置权限
|
||||
adb shell
|
||||
chown system:system /data/vendor/gps/custom_location.txt
|
||||
chmod 644 /data/vendor/gps/custom_location.txt
|
||||
```
|
||||
|
||||
## 📱 兼容性
|
||||
|
||||
### Android版本
|
||||
- 支持Android 8.0+(API 26+)
|
||||
- 测试过的版本:Android 11、12、13
|
||||
|
||||
### 架构支持
|
||||
- ARM64
|
||||
- ARM32
|
||||
- x86_64(通过Android.bp的compile_multilib配置)
|
||||
|
||||
## 🔄 回退到默认GPS
|
||||
|
||||
如果要禁用自定义GPS功能:
|
||||
|
||||
```bash
|
||||
# 删除自定义位置文件
|
||||
rm /data/vendor/gps/custom_location.txt
|
||||
|
||||
# 系统会自动回退到默认GPS行为
|
||||
```
|
||||
|
||||
## 📞 技术支持
|
||||
|
||||
如果遇到问题,请提供:
|
||||
1. Android版本和设备信息
|
||||
2. 完整的logcat日志
|
||||
3. 文件权限和内容截图
|
||||
4. 具体的错误现象描述
|
||||
Reference in New Issue
Block a user