Android 6.0系统开发遇到的问题收集贴

问题一:android 6.0编译时出现ERROR:Security problem ,see jack server log

方法一

export JACK_JAR=./out/host/linux-x86/framework/jack.jar
./out/host/linux-x86/bin/jack-admin stop-server
./out/host/linux-x86/bin/jack-admin start-server

方法二
修改用户根目录下.jack文件中SERVER_PORT_SERVICE和SERVER_PORT_DAMIN端口值

参考文章
android 6.0编译时出现ERROR:Security problem ,see jack server log

问题二:Android 6.0 adb remount后没有写权限,提示Read-only file system

更新adb版本到1.0.32
更新好adb版本后依次执行下面的命令

adb root
adb disable-verity
adb reboot

adb root
adb remount

参考文章
Android 6.0 adb remount后没有写权限,提示Read-only file system

问题三:add_service(‘TestService’,2) uid=0 - PERMISSION DENIED

E/SELinux ( 115): avc: denied { add } for service=TestService scontext=u:r:init:s0 tcontext=u:object_r:default_android_serv
ice:s0 tclass=service_manager
E/ServiceManager( 115): add_service(‘TestService’,2) uid=0 - PERMISSION DENIED

在MTK Android 6.0添加系统服务时(ServiceManager.addService),会报如上错误,这是因为SELinux的安全机制引起的。

在device目录下有BoardConfig.mk的配置
device/mediatek/common/BoardConfig.mk

#SELinux Policy File Configuration
BOARD_SEPOLICY_DIRS := \
        device/mediatek/common/sepolicy

在device/mediatek/common/sepolicy目录下有service_contexts和service.te两个文件,分别添加相应的内容。
1.在service_contexts文件中添加如下代码

type test_service, service_manager_type;

2.在service.te文件中添加如下代码

TestService u:object_r:test_service:s0

3.在/framework/base/services/java/com/android/server/SystemServer.java中添加相关的服务

ServiceManager.addService(“TestService”, vibrator);

在external目录下也有相应的配置,感兴趣的同学可以去了解下。
/external/sepolicy
参考文章
浅谈android add_service PERMISSION DENIED问题

问题四:编译时报错XXXX/kernel-3.18 is not clean, please run ‘make mrproper’ [XXXX/obj/KERNEL_OBJ/arch/arm64/boot/Image.gz-dtb] Error 2

这个报错一看就是kernel编译报错了,我们进入kernel目录查看Makefile文件中如下代码

# prepare3 is used to check if we are building in a separate output directory,
# and if so do:
# 1) Check that make has not been executed in the kernel src $(srctree)
prepare3: include/config/kernel.release
ifneq ($(KBUILD_SRC),)
    @$(kecho) '  Using $(srctree) as source for kernel'
    $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
        echo >&2 "  $(srctree) is not clean, please run 'make mrproper'"; \
        echo >&2 "  in the '$(srctree)' directory.";\
        /bin/false; \
    fi;
endif

从这部分代码可以看出Makefile会判断源码目录下是否存在.config文件或者./include/config文件夹,我们只要删除对应的.config文件和include/config文件夹,即可解决编译报错的问题。

参考文章
“please run ‘make mrproper’”编译失败错误解决方法

(持续更新中…)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值