Android11.0系统修改过程中遇到问题及解决方法集合
Android11.0系统修改过程中遇到问题集合
本文收集在RK3568的Android11系统中添加功能及移植驱动过程中遇到的一些报错及处理,会不断添加。
报错及处理集合
-
在添加EC200的gps驱动时报错:android.hardware.gnss@1.0::IGnss/default is deprecated in compatibility matrix at FCM Version 5
问题产生原因:根据kernel版本,用的是compatibility_matrix.5.xml (FCM Version 5),而compatibility_matrix.5.xml中定义的gnss version是2.0-1,版本不匹配,解决方法如下:
a.把gnss service改成用2.0或2.1的版本
b.把compatibility_matrix.5.xml 中2.0-1 改成1.0 -
framework中添加新包及文件后,编译如果报错如下:
Error: out/target/common/obj/JAVA_LIBRARIES/framework-minus-apex_intermediates/classes.jar contains class file com/yjz/test/api/ITestManager.class, whose package name com.yjz.test.api is empty or not in the allow list build/make/core/tasks/check_boot_jars/package_allowed_list.txt of packages allowed on the bootclasspath.
修改/build/make/core/tasks/check_boot_jars/package_allowed_list.txt,添加白名单
###################################################
# framework.jar
javax\.microedition\.khronos\.opengles
javax\.microedition\.khronos\.egl
com\.yjz\.test //添加
com\.yjz\.test\..* //添加
- framework中发送自定义广播,报Sending non-protected broadcast xxxxxxx from system xxxxxxxxxx 错误,对于系统应用,要求发送广播必须是声明在frameworks\base\core\res\AndroidManifest.xml里面的protected-broadcast:
<protected-broadcast android:name="com.yjz.action_test"
- 发送广播时,如果当前隐式广播无法分发到静态注册的receiver中,则会打印类似如下的log:
Background execution not allowed: receiving Intent { act=com.yjz.app.xxx flg=0x10 (has extras) } to com.yjz.app/.receive.xxx
如果不是接收系统广播,只是两个应用间进行通信的话,可以在发送时为intent指定包名,这样接受者静态注册也是可以接收到广播的
Intent intent = new Intent("xxxxxx");
intent.setPackage("com.yjz.app");
sendBroadcast(intent);
- 查询应用网络数据收发情况
//查询应用进程
ps -ef |grep 包名
//查询应用网络收发情况
cat /proc/进程id/net/dev