- 博客(12)
- 资源 (3)
- 收藏
- 关注
原创 InputDispatcher: channel ~ Channel is unrecoverably broken and will be disposed!
但问题来了,总是莫名其妙的出现程序崩溃,而且还是native层的InputDispatcher崩溃,折磨了几天找不到原因,最后终于让我想明白了。那么这样会随机出现问题的,因为toast时调用的是launch进程的UI绘制,它会去lockCavans屏幕,而这时你又立马去对自己进程的UI进行操作,这时就会出现冲突,它无法去完成其中的某项绘制,从而造成程序的崩溃。其实在日志中就可以看出,是事件的分发机制出了冲突,后续终于我想明白了,toast是系统层的UI操作,而我自身页面的UI操作是我自身的程序进程。
2023-12-01 14:08:55 2290 1
原创 Android安全机制:
自主访问控制(DAC)和强制访问控制(MAC);Android中自主访问控制是通过Linux UID/GID实现,而强制访问控制则是使用的SEAndroid!在Android中SEAndroid安全机制(MAC)与传统的Linux UID/GID安全机制(DAC)是并存关系的,也就是说,它们同时用来约束进程的权限。当一个进程访问一个文件的时候,首先要通过基于UID/GID的DAC安全检查,接着才有资格进入到基于SEAndroid的MAC安全检查。只要其中的一个检查不通过,那么进程访问文件的请求就会被拒绝。
2023-07-20 16:36:47 404 1
原创 自定义gradle插件并实现ASM字节码插桩
d.gradle打包的流程,gradle打包时即执行多个任务,如预编译,打包资源文件、编译java文件为class文件,将多个class文件打包成dex文件等。而我们自定义的gradle插件,就是在android插件执行打包的各个任务执行的前后过程中进行监听,插入自已的代码,如这次我们实现的:对生成的class文件进行字节码插桩,然后再将插桩完成的class文件重新放入原位置,这样最后生成的apk文件里的dex文件就是经过我们插桩过的代码。//在打包之前执行,即可以拿到经过编译的类的class文件。
2023-06-20 17:24:26 378 1
原创 ASM插桩修改代码
ASM:操作Java字节码的框架,按照Class文件的格式,解析、修改、生成Class,可以动态生成类或者增强现有类的功能。字节码插桩的具体实现:a.添加依赖:implementation 'org.ow2.asm:asm:7.1'implementation 'org.ow2.asm:asm-commons:7.1'b.对某个class文件进行插桩测试代码:public void test() throws IOException { /**
2023-06-20 17:09:17 237 1
原创 android12.0.3源碼用第三方app替換原生Launcher
4.如果之前編譯時系統存在過原生的Launcher,就必須要將/out/target/product/下的Launcher3相關的文件或文件夾全部刪除,然後再編譯源碼:m。3.修改/build/target/product/下的handheld_system_ext.mk文件,刪除"Launcher3QuickStep "2.修改/build/target/product/下的base_system.mk文件,添加"duduCar"duduCar \ //添加此行。
2023-06-05 11:14:47 1014 1
原创 外部app與SystemUI進程aidl通信,動態控制導航欄和狀態欄的顯示/隱藏
與SystemUI進程aidl通信,動態控制導航欄和狀態欄的顯示和隱然
2023-05-15 15:10:23 187 1
原创 android_10.0.0_r41自定义驱动编译+Framework层调用_5(Framework JAVA调用)
参考文献:https://blog.csdn.net/luoshengyang/java/article/details/6568411 //罗升阳博客 Android_10.0.0_r41自定义驱动Framework Java服务1.定义AIDL接口在frameworks/base/core/java/android/app目录下创建IHelloManager.aidl文件:package android.app;/** {@hide} */interface IHello
2023-04-08 17:14:48 305 1
原创 android_10.0.0_r41自定义驱动编译+Framework层调用_4(FrameworkJNI调用)
参考文献:https://blog.csdn.net/luoshengyang/java/article/details/6568411 //罗升阳博客。//第二个是参数(括号中为参数)和返回值,含义为:[B -- byte数组,Z -- bool, I -- int, V -- void,// Ljava/lang/String;/*在硬件抽象层中定义的硬件访问结构体,参考<hardware/hello.h>*//*通过硬件抽象层定义的硬件访问接口设置硬件寄存器val的值*//*JNI 方法表*/
2023-04-08 16:57:33 255 1
原创 android_10.0.0_r41自定义驱动编译+Framework层调用_3(自定义驱动HAL层)
/ // get_val 为HAL对上提供的函数接口。参考文献:https://blog.csdn.net/luoshengyang/java/article/details/6568411 //罗升阳博客。完成内核驱动程序后,便可以在Android系统中得到三个文件/dev/hello、/sys/class/hello/hello/val和/proc/hello。fd,是open时打开的。// 例: int fp = open("/home/test.txt", O_RDWR|O_CREAT);
2023-04-08 16:54:17 719 1
原创 android_10.0.0_r41自定义驱动编译+Framework层调用_2(自定义驱动)
在内核目录/arch/x86/configs/x86_64_ranchu_defconfig文件中添加一行:(因为我源码用的是goldfish-refs_heads_android-goldfish-4.14-gchips,而且编译用的是aosp_x86_64-eng模式,如果刷机用的是实际设备,且编译模式用的是aosp_ranchu-userdebug,就需选择内核目录/arch/arm64/configs/arm64_ranchu_defconfig)//__exit修饰词标记函数只在模块卸载时使用。
2023-04-08 16:51:12 421 4
原创 android_10.0.0_r41自定义驱动编译+Framework层调用_1(Android源码及kernel源码下载和编译)
此为基为android源码及kernel源码,并在参阅罗升阳等大牛的博客为素材,整理并测有效实现的android10源码实现的自定义驱动开发。
2023-04-08 16:41:30 332
signapk.jar+platform.pk8+platform.x509.pem.rar
2020-01-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人