Android Shizuku源码分析 第二篇

本文深入分析了 Shizuku 的启动过程,特别是 Starter 类的 main 方法是如何被调用的。文章首先回顾了 Shizuku 的基本概念,并介绍了通过 adb 命令激活 ShizukuService 的过程,重点分析了 start.sh 脚本的执行。当用户通过 ShizukuManager 启动应用时,start.sh 脚本被调用,该脚本负责设置环境并执行 libshizuku.so 文件。文章详细描述了 ShizukuManager 在启动时如何写入 start.sh 文件及其相关的 dex 文件路径。接着,文章探讨了 libshizuku.so 中的 main 方法,说明了如何通过 app_process 启动 Java 类 moe.shizuku.server.Starter。在 Starter 类的 main 方法中,创建了 ShizukuService 实例,从而完成了 ShizukuService 的启动。最后,作者总结了整个过程,强调了用户通过简单的 adb 命令如何触发一系列复杂的操作,最终实现 Shizuku 的功能。

February 4, 2020 · LingC

Android Shizuku源码分析

本文分析了 Shizuku 的源码,介绍了其如何通过 Binder 实现与 Android 系统服务的交互。Shizuku 应用引导用户以 root 或 adb 方式运行服务进程,利用 ShizukuBinderWrapper 进行系统隐藏 API 的调用。文章详细探讨了 ShizukuBinderWrapper 的构造、transact 方法及其与 IShizukuService 的通信过程,最后简要提及 ShizukuService 的启动流程。作者计划进一步深入分析 Shizuku 的启动机制。

February 2, 2020 · LingC

Android 监听第三方Activity的一举一动

这篇文章主要记录了作者在2019年初的个人感受和一些技术探索。作者回顾了过去一年的经历,感到没有太多进展,并提到冬季的天气和国内的传染病情况。尽管在家中待得久了,作者也提到了一些娱乐活动,比如观看动画和春晚,但整体上对新番的期待逐渐减弱。在技术方面,作者分享了在Android开发中监听Activity启动的需求,探讨了几种方法来获取Activity的类名。首先,作者提到使用ActivityManager的getRunningTasks方法,但由于权限限制,这种方法不可行。接着,作者提到UsageStatsManager只能获取应用包名,而无法获取Activity类名。最终,作者发现了IActivityController接口,并通过使用Shizuku工具来调用系统API,从而实现了监听Activity启动的功能。总结来说,文章结合了个人生活感受与技术探索,展示了作者在面对生活和技术挑战时的思考与解决方案。

February 1, 2020 · LingC

Android笔记#1 View的事件分发机制解析

本文总结了《Android艺术开发探索》中关于View事件分发机制的内容。事件序列从ACTION_DOWN开始,经过多个ACTION_MOVE,最后以ACTION_UP结束。事件传递顺序为Activity -> Window -> DecorView -> RootView。事件分发主要通过dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent三个方法实现。ViewGroup的onInterceptTouchEvent默认返回false,子View可通过OnTouchListener处理事件。总结指出,事件分发机制确保一个事件序列只能被一个View拦截和消耗,且OnTouchListener优先级高于onTouchEvent。

August 14, 2019 · LingC

知乎日报的问题

作者在暑假期间开始开发一个第三方的知乎日报客户端,使用MVP架构。遇到了一些问题,如全局异常处理和JSON解析,选择使用Picasso加载图片。为了解决WebView中图片宽度过大的问题,作者通过JavaScript调整图片大小。最终,作者完成了基本的加载和查看功能,并在GitHub上分享了代码。尽管开发过程充满挑战,作者仍然享受这个过程。

July 4, 2019 · LingC

Ubnutu 无法启动网易云音乐 - 总结

从垃圾堆里抛出来的一篇2018的文章. –2024.8.7 Author Avatar LingC 8 月 7 日 00 本文总结了16.04以上的版本运行网易云音乐会出现的问题,以及解决方法 如果你安装官方版本网易云音乐后(v1.1.0),运行网易云音乐无响应的话可以试试以下几种方法 01 在终端中输入 $ netease-cloud-music –no-sandbox %U 即可启动网易云音乐 有可能会出现一些警告,稍后会打开网易云主界面 如果出现Unable to locate theme engine in module_path: “adwaita” 可以尝试执行这条命令:$ sudo apt install gnome-themes-standard 如果出现failed to retrieve propertygtk-primary-button-warps-slider’ of type gboolean' 可以尝试$ vi ~/.gtkrc-2.0 使用vim打开这个文件,将其中的一行改为 gtk-primary-button-warps-slider=false改为gtk-primary-button-warps-slider=0 然后可以再试着运行一下,如果还不行就reboot 如果出现Gtk-Message: 08:59:03.546: Failed to load module “canberra-gtk-module"或者没有反应,那么你可以试试第二种方法 02 在终端中输入 $ sudo netease-cloud-music 使用root权限运行网易云音乐 可能会出现一些警告和报错,其实可以无视(懒的管) 2018-08-07 09-00-03屏幕截图.png 03 可以试一下这个方法 https://jingyan.baidu.com/article/1e5468f956a15c484861b770.html 04 该方法针对于ubuntu 18.04LTS 网易云音乐v1.1.0 其他版本也可以试一下 首先 ...

August 7, 2018 · LingC