GPS开发、定位修改
修改于
AOSP
android7.1.1_r1
NMF26F
openjdk8.0
Mint-linux
nexus5x
原作者:https://blog.csdn.net/aggresss/article/details/54323034
指出文中错误(自己编译时候遇到的)并修正
固件共享出来是不可能的,谁知道我的固件里有没有后门,还是用源码自己编译的比较放心
新鲜的源码最好make -j8 看看能否编译通过
- 关于kernel 层
a.隐式函数问题:create_proc_entry 找不到改为 proc_create 编译通过
新建设备文件操作方法表 替换相关方法即可
static struct file_operations m_fops = { .owner = THIS_MODULE, // .open = vp_open, // .release = vp_release, .read = vp_proc_read, .write = vp_proc_write,
};
proc_create(VP_DEVICE_PROC_NAME, 0, NULL, &m_fops);
b.修改drivers/Makefile文件,添加一行:obj-$(CONFIG_HELLO) += vp/
obj-$(CONFIG_VP) += vp/
c.编译完成内核后会生成一个Image-gz-dtb替换源码中的即可
d.交叉编译环境用源码里面的即可(参考:https://www.jianshu.com/p/7c8f4bcb07bc)
- 第二步,修改HAL
a.vp.c文件中缺少两个头文件
#include <string.h>
#include <stdlib.h>
b.
//LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
//改为
LOCAL_MODULE_PATH := hw
- 第四步,修改Framework
a.路径错误
core/java/android/os/IVirtualPosition.aidl /
改为
core/java/android/os/IVirtualPositionService.aidl /
**此时注意
sepolicy 文件一定要修改 否则不能修改(7.1.1在system文件加下面)
一定要更新framework: make update-api 否则会报错
- 文中除新建文件外 请不要替换
- 进入 frameworks/base/services/core/jni 目录
肯能不没有com_android_server_location_GpsLocationProvider.cpp文件
(7.1.1)改为Gns什么的道理一样
不要忘记导入头文件
#include "hardware/vp.h"
#include <fcntl.h>
此时马上成功了 md又出现了几个错误~!!!
a.VirtualPositionService: VirtualPosition JNI: failed to get vp stub module.
解决办法:
需要单独编译 这个模块mmm /hardxxx/libxxx/module/vp/
生成vp_deafult.so
(此时把app文件夹放入packages/apps/下 mmm编译app自动安装进系统)
然后make snod 重新生成system.img
b.open /dev/vp: Permission denied
解决办法:
在domain.te文件中添加
allow domain vp_device:chr_file rw_file_perms;
在untrusted_app.te文件中添加
allow untrusted_app virtualposition_service:service_manager find;
在system_app.te文件中添加
allow system_app virtualposition_service:service_manager find;
这个文件system/core/rootdir/ueventd.rc加入
/dev/vp 0666 root root
c.01-13 04:44:09.981 918-918/system_process E/LocSvc_afw: E/const GpsGeofencingInterface get_geofence_interface(), dlopen for libgeofence.so failed, error = dlopen failed: library “libloc_api_v02.so” not found
解决办法:(此so只对应nmf26f android N 不要乱用)
https://github.com/MoKee/android_vendor_lge_bullhead/blob/mkn-mr1/proprietary/lib/libloc_api_v02.so
https://github.com/mikalackis/proprietary_vendor_lge_bullhead/blob/NMF26F/vendor/lib64/libgeofence.so
此时源码已经改完!
欢迎指正
需要到 室外!室外!室外!测试