<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[whjk20的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/whjk20</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; whjk20]]></copyright><item><title><![CDATA[adb shell dumpsys window windows 打印的地方]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/130526397</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/130526397</guid><author>whjk20</author><pubDate>Sat, 06 May 2023 14:27:29 +0800</pubDate><description><![CDATA[函数（hide） public String toString(String prefix)]]></description><category></category></item><item><title><![CDATA[GitHub: invalid username or password解决方法]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/128628391</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/128628391</guid><author>whjk20</author><pubDate>Tue, 10 Jan 2023 13:32:25 +0800</pubDate><description><![CDATA[git]]></description><category></category></item><item><title><![CDATA[解决编译错误 Could not find android.arch.navigation:navigation-fragment-ktx:2.3.1.]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/128118234</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/128118234</guid><author>whjk20</author><pubDate>Wed, 30 Nov 2022 16:57:22 +0800</pubDate><description><![CDATA[gradle]]></description><category></category></item><item><title><![CDATA[Koin 注入框架 - Android 使用方法 及 问题记录]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/126606348</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/126606348</guid><author>whjk20</author><pubDate>Tue, 30 Aug 2022 16:04:25 +0800</pubDate><description><![CDATA[Koin]]></description><category></category></item><item><title><![CDATA[Java_内部类、匿名内部类、Lambda表达、方法引用(双冒号)]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/126480819</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/126480819</guid><author>whjk20</author><pubDate>Tue, 23 Aug 2022 11:10:44 +0800</pubDate><description><![CDATA[匿名内部类]]></description><category></category></item><item><title><![CDATA[Spinner （点击展示选项）使用方法]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/124841257</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/124841257</guid><author>whjk20</author><pubDate>Wed, 18 May 2022 14:13:03 +0800</pubDate><description><![CDATA[1. xml 使用spinner控件
    &lt;Spinner
      android:id="@+id/orientation_spinner"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" /&gt;
   2. 代码加载spinner控件
    val spinner = findViewById&...]]></description><category></category></item><item><title><![CDATA[Android 屏幕尺寸、屏幕分辨率(px)、屏幕像素密度(dpi)、密度无关像素(dp/dip)、屏幕适配]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/124760111</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/124760111</guid><author>whjk20</author><pubDate>Fri, 13 May 2022 21:18:35 +0800</pubDate><description><![CDATA[参考：

Android屏幕适配全攻略(最权威的官方适配指导)_赵凯强的博客-优快云博客_android 屏幕适配Android的屏幕适配一直以来都在折磨着我们这些开发者，本篇文章以Google的官方文档为基础，全面而深入的讲解了Android屏幕适配的原因、重要概念、解决方案及最佳实践，我相信如果你能认真的学习本文，对于Android的屏幕适配，你将不再有疑惑！Android屏幕适配出现的原因在https://blog.youkuaiyun.com/zhaokaiqiang1992/article/details/]]></description><category></category></item><item><title><![CDATA[Android View Sample(1) - RecyclerView/ViewPager2/SwipeRefreshLayout/MultiWindow/ConstraintLayout]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/124731778</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/124731778</guid><author>whjk20</author><pubDate>Thu, 12 May 2022 15:26:56 +0800</pubDate><description><![CDATA[共享Github 比较好的代码示例， 代码规范 且 容易入手。

并且，自定义了一套输出log的框架，可以在运行时展现在应用界面上，更容易掌握关键。

1. RecylerView 基础使用(可动态修改LayoutManager 为 LinearLayoutManager或者GridLayoutManager)

https://github.com/android/views-widgets-samples/tree/main/RecyclerViewhttps://github.com/android.]]></description><category></category></item><item><title><![CDATA[打开有systrace生成的网页 trace.html，显示空白]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/124706211</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/124706211</guid><author>whjk20</author><pubDate>Wed, 11 May 2022 11:25:00 +0800</pubDate><description><![CDATA[解决方法：

使用Chrome 浏览器， 并且先做以下操作：

chrome-设置-高级-网站设置-Cookie-取消的选『阻止第三方Cookie』



然后，右键trace.html -&gt; 选择使用 Chrome 打开即可



参考：

systrace 生成 trace.html，打开后一片空白 - 简书systrace 生成 trace.html，打开后一片空白 报错： 方法1： (1) python2 -m CGIHTTPServer #开一个http服务(2) 打开...https...]]></description><category></category></item><item><title><![CDATA[(Python2.7.x) Systrace 使用的坑，出现 ImportError: No module named XXX]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/124686901</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/124686901</guid><author>whjk20</author><pubDate>Tue, 10 May 2022 14:01:02 +0800</pubDate><description><![CDATA[Systrace 使用出现 ImportError: No module named win32con

参考：

Systrace environment configuration under Win7 - Krybothttps://blog.krybot.com/a?ID=01600-eb9b4186-bfb0-4335-969d-9bb5764fad22需要下载

pywin32-227-cp27-cp27m-win_amd64.whl

six-1.13.0-py2.py3-none-any.w]]></description><category></category></item><item><title><![CDATA[Android Adb命令(6) - 启动应用(Activity)之显示启动时间与方式]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/124665322</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/124665322</guid><author>whjk20</author><pubDate>Mon, 09 May 2022 14:28:40 +0800</pubDate><description><![CDATA[1. 应用 的启动方式可以分为 冷启动 和 热启动：

冷启动：当启动应用时，后台没有该应用的进程，这时系统会又一次创建一个新的进程分配给该应用

热启动：当启动应用时，后台已有该应用的进程（例：按back键、home 键，应用尽管会退出，可是该应用的进程是依旧会保留在后台，可进入任务列表查看)

这样的启动会从已有的进程中来启动应用

2. 使用adb 命令：adb shell am start -W [package]/[activity]

则可以看到输出中的 ：

LaunchState: 代表启动]]></description><category></category></item><item><title><![CDATA[第三方应用调用系统SO 库失败Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/124490739</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/124490739</guid><author>whjk20</author><pubDate>Fri, 29 Apr 2022 10:47:06 +0800</pubDate><description><![CDATA[在Android 31平台，尝试使用第三方应用调用系统SO 库，会报如下的错误

Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib64/XXX.so" needed or dlopened by "/apex/com.android.art/lib64/libnativeloader.so" is not accessible for the namespace "classloader-namesp]]></description><category></category></item><item><title><![CDATA[Gradle: Execution failed for task ‘:processDebugManifest‘]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/124319913</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/124319913</guid><author>whjk20</author><pubDate>Thu, 21 Apr 2022 13:58:33 +0800</pubDate><description><![CDATA[新增加一个Module(Android lib) 编译时，提示：

Gradle: Execution failed for task ':processDebugManifest'

在stackoverflow 上搜索到的答案，其实有很多种原因造成：

android - Gradle: Execution failed for task ':processDebugManifest' - Stack Overflow

例如在AndroidManifest 里重复声明了 一个activity， 或者m]]></description><category></category></item><item><title><![CDATA[Android Adb命令(5) - find 查找设备文件]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/123882657</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/123882657</guid><author>whjk20</author><pubDate>Thu, 31 Mar 2022 20:38:18 +0800</pubDate><description><![CDATA[adbshellfind / -name "*userdata*" &gt; d:\result.txt

则可以把设备上 文件名 有包含 userdata 的所有文件信息， 输出到 d盘的 result.txt 文件中，

例如result.txt 里的内容为：

/sys/fs/f2fs/userdata
/dev/sys/block/by-name/userdata
/dev/sys/fs/by-name/userdata
/dev/block/mapper/userdata
/dev/blo....]]></description><category></category></item><item><title><![CDATA[Android Adb命令(4) - ps 查看进程信息]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/123254857</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/123254857</guid><author>whjk20</author><pubDate>Thu, 03 Mar 2022 15:15:44 +0800</pubDate><description><![CDATA[1. 查看所有进程信息：

adb shell ps -A

则得到：


USER           PID  PPID     VSZ    RSS WCHAN            ADDR S NAME
root             1     0 12510356  5276 ep_poll             0 S init
root             2     0       0      0 kthreadd            0 S [kthreadd]
...
s]]></description><category></category></item><item><title><![CDATA[Android studio: Could not resolve com.android.tools.build:gradle:3.2.1]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/122907544</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/122907544</guid><author>whjk20</author><pubDate>Sun, 13 Feb 2022 12:50:30 +0800</pubDate><description><![CDATA[Android studio 导入旧项目, 编译时出现：
Could not resolve com.android.tools.build:gradle:3.2.1

原因可能是由于连接仓库时，网络不太好

修改build.gradle，改成阿里云的仓库，注释Google 官方的仓库


    repositories {
//        mavenLocal()
//        jcenter()
//        maven {
//            url 'https://m..]]></description><category></category></item><item><title><![CDATA[Android adb(0) 命令官网]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/121212967</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/121212967</guid><author>whjk20</author><pubDate>Mon, 08 Nov 2021 18:03:08 +0800</pubDate><description><![CDATA[https://ihax.io/adb-fastboot-commands/#ADB_Shell_Commands_List

http://adbcommand.com/adbshell/am


C:\Users\XX&gt;adb help
Android Debug Bridge version 1.0.41
Version 31.0.2-7242960
Installed as D:\02_sofeware_install\Sdk\platform-tools\adb.exe

global op]]></description><category></category></item><item><title><![CDATA[ApkTool 反编译Android apk (加固逆向)]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/121198530</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/121198530</guid><author>whjk20</author><pubDate>Sun, 07 Nov 2021 22:31:59 +0800</pubDate><description><![CDATA[下载 bat 和jar 地址（选择release版本相对稳定）：
GitHub 下载地址
https://github.com/iBotPeaches/Apktool
https://github.com/iBotPeaches/Apktool/releases/tag/v2.6.0

一、安装使用简单指南

1. 拷贝 apktoo.bat 和 apktool_2.6.0.jar 到系统windows根目录：C:\Windows
(如果无法打开C:\Windows， 则把该路径添加到 系统环境变量 里)
]]></description><category></category></item><item><title><![CDATA[Context/ContextImpl 获取APP存储空间路径]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/121111934</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/121111934</guid><author>whjk20</author><pubDate>Tue, 02 Nov 2021 23:40:36 +0800</pubDate><description><![CDATA[ContextImpl

  // type=null, return storage/emulated/0/Android/data/com.test.demo/files
  @Override
  public File[] getExternalFilesDirs(String type) {
    synchronized (mSync) {
      File[] dirs = Environment.buildExternalStorageAppFiles...]]></description><category></category></item><item><title><![CDATA[Android Adb命令(3) - Activity界面 相关]]></title><link>https://blog.youkuaiyun.com/whjk20/article/details/121111404</link><guid>https://blog.youkuaiyun.com/whjk20/article/details/121111404</guid><author>whjk20</author><pubDate>Tue, 02 Nov 2021 22:59:02 +0800</pubDate><description><![CDATA[使用 adb 查看当前界面情况(结合正则表达式命令grep)， 分析界面启动问题。


0. grep常用选项：

　　-E ：开启扩展（Extend）的正则表达式。
　　-i ：忽略大小写（ignore case）。
　　-v ：反过来（invert），只打印没有匹配的，而匹配的反而不打印。
　　-n ：显示行号
　　-w ：被匹配的文本只能是单词，而不能是单词中的某一部分，如文本中有liker，而我搜寻的只是like，就可以使用-w选项来避免匹配liker
　　-c ：显示总共有多少行被匹配到了，而不是]]></description><category></category></item></channel></rss>