问题一: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’”编译失败错误解决方法