<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pf_1308108803的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/pf_1308108803</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; pf_1308108803]]></copyright><item><title><![CDATA[鸿蒙原生分享]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/144379174</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/144379174</guid><author>pf_1308108803</author><pubDate>Tue, 10 Dec 2024 17:40:49 +0800</pubDate><description><![CDATA[鸿蒙原生分享]]></description><category></category></item><item><title><![CDATA[鸿蒙JSON解析成对象后无法调用对象中的方法]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/144377965</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/144377965</guid><author>pf_1308108803</author><pubDate>Tue, 10 Dec 2024 17:17:45 +0800</pubDate><description><![CDATA[鸿蒙JSON解析对象后无法调用方法]]></description><category></category></item><item><title><![CDATA[鸿蒙手机文件目录]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/144377506</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/144377506</guid><author>pf_1308108803</author><pubDate>Tue, 10 Dec 2024 16:47:44 +0800</pubDate><description><![CDATA[鸿蒙手机文件目录]]></description><category></category></item><item><title><![CDATA[二进制学习]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/128550717</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/128550717</guid><author>pf_1308108803</author><pubDate>Wed, 11 Jan 2023 10:48:38 +0800</pubDate><description><![CDATA[二进制学习及使用场景]]></description><category></category></item><item><title><![CDATA[Mac环境配置及开发遇到的问题记录]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/123841327</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/123841327</guid><author>pf_1308108803</author><pubDate>Wed, 30 Mar 2022 14:48:47 +0800</pubDate><description><![CDATA[Mac环境配置及开发遇到的问题记录环境配置1. zsh 切换 bash 提示 chsh: no changes made 问题2. zsh: command not found: brew3. 无法访问   使用国内镜像4. git 缺失开发遇到的问题1. 允许任何来源的软件2. XCode 运行真机3. Flutter 运行真机报错4. 无法打开“iproxy”，因为无法验证开发者。
环境配置
目前是参考这个配置的iterm
参考这个配置iterm也可以
配置过程中出现的问题
1. zsh 切换 bash]]></description><category></category></item><item><title><![CDATA[Mac 新建unix可执行文件]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/121743414</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/121743414</guid><author>pf_1308108803</author><pubDate>Mon, 06 Dec 2021 11:33:01 +0800</pubDate><description><![CDATA[新建一个文本,输入要执行的终端命令,然后另存为无格式文件, 比如另存为名script.
然后打开终端,输入 sudo chmod u+x script 这个script要写成那个文件的绝对路径.
比如 sudo chmod u+x /Users/xxx/Desktop/script
执行后,那个script文件就会变成类似批处理的文件.双击就能运行里面的终端命令.

...]]></description><category></category></item><item><title><![CDATA[Android TextView 文字两端对齐]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/120707033</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/120707033</guid><author>pf_1308108803</author><pubDate>Mon, 11 Oct 2021 17:02:57 +0800</pubDate><description><![CDATA[Android 自带的 TextView 的对齐方式只能左对齐或者右对齐，如果想要两端都对齐就需要自定义控件，但是有一个更简单的方法就是使用 WebView, 通过设置 text-align:justify 就可以
XML 文件:
&lt;WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:backg]]></description><category></category></item><item><title><![CDATA[CSS样式加载base64格式图片失败]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/120023984</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/120023984</guid><author>pf_1308108803</author><pubDate>Tue, 31 Aug 2021 18:23:27 +0800</pubDate><description><![CDATA[CSS样式加载base64格式图片失败
.icon {
    background-image:url('data:image/png;base64,
    iVBORw0KGgoAAAANSUhEUgAAABsAAAAjCAMAAABSI4GnAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAG6ADAAQAAAABAAAAIwAAAABnXqe+AAABF1B]]></description><category></category></item><item><title><![CDATA[Flutter state生命周期方法之didChangeDependencies 、didUpdateWidget]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/117740887</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/117740887</guid><author>pf_1308108803</author><pubDate>Wed, 09 Jun 2021 14:15:53 +0800</pubDate><description><![CDATA[Flutter state生命周期方法之didChangeDependencies 、didUpdateWidget
didChangeDependencies: 会在当前控件的父控件的类型发生变化时调用，但是当前控件的爷爷控件的类型发生变化时不会调用，父控件的属性发生变化也不会调用
didUpdateWidget: 会在当前控件的父控件或者爷爷控件调用 setState 时调用

...]]></description><category></category></item><item><title><![CDATA[java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/117249353</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/117249353</guid><author>pf_1308108803</author><pubDate>Tue, 25 May 2021 10:02:43 +0800</pubDate><description><![CDATA[今天执行 flutter doctor -v 的时候发现一个问题，提示信息是
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/zhaopingfu/Library/Android/sdk
    • Platform android-S, build-tools 30.0.2
    • Java binary at: /Applicati]]></description><category></category></item><item><title><![CDATA[Flutter 修改默认生成的 minSdkVersion]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/117221491</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/117221491</guid><author>pf_1308108803</author><pubDate>Mon, 24 May 2021 12:59:11 +0800</pubDate><description><![CDATA[Flutter 修改默认生成的 minSdkVersion
问题
flutter pub get 会自动生成 android 目录，但是如果要修改 build.gradle 文件里面的内容，需要每次都要手动改一下，很麻烦
解决办法
修改 flutter 自动生成的 build.gradle 的模板文件
模板文件路径: flutter_sdk/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/build.gradl]]></description><category></category></item><item><title><![CDATA[replaceAll  IndexOutOfException: No group xx]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/115732316</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/115732316</guid><author>pf_1308108803</author><pubDate>Thu, 15 Apr 2021 17:32:22 +0800</pubDate><description><![CDATA[public static void main(String[] args) {
        String regex = "s";
        String replacement = "$10";
        String str = "stop the world";
        String result = str.replaceAll(regex, replacement);
        System.out.println(result);
    }

上面这段代...]]></description><category></category></item><item><title><![CDATA[GitLab SSH clone]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/107405978</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/107405978</guid><author>pf_1308108803</author><pubDate>Fri, 17 Jul 2020 13:11:46 +0800</pubDate><description><![CDATA[对GitLab, SSH 方式进行 clone
1. Git配置

运行 Git Bash, 先配置用户名和邮箱

git config --global user.name "用户名"
git config --global user.email "邮箱"
git config --global core.autocrlf false    (禁止自动转换换行符)


生成秘钥 SSH Key

cd ~/.ssh   如果没有就自行创建一个  mkdir .ssh
ssh-keygen -t rsa -]]></description><category></category></item><item><title><![CDATA[自定义 `Flutter` 的页面切换动画]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/106023401</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/106023401</guid><author>pf_1308108803</author><pubDate>Sat, 09 May 2020 17:03:40 +0800</pubDate><description><![CDATA[1. 首先先定义一个自己想要的动画
Route createRoute(Widget widget) {
  return PageRouteBuilder(
      transitionDuration: Duration(milliseconds: 300),
      pageBuilder: (context, animation, secondaryAnimation) =&gt; widget,
      transitionsBuilder: (context, animation, ]]></description><category></category></item><item><title><![CDATA[Could not find tools.jar. Please check that E:\software\jdk-8u202\java contains a valid JDK installa]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/106014268</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/106014268</guid><author>pf_1308108803</author><pubDate>Sat, 09 May 2020 10:47:30 +0800</pubDate><description><![CDATA[Could not find tools.jar. Please check that E:\software\jdk-8u202\java contains a valid JDK installation
我的 jdk 安装目录是 E:\software\jdk-8u202, 然后环境变量也是正常的, 但是执行打包的时候 ':app:compileDebugJavaWithJavac' 任务会提示找不到jdk
* What went wrong: Execution failed for task ':]]></description><category></category></item><item><title><![CDATA[序列化与反序列化]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/102055073</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/102055073</guid><author>pf_1308108803</author><pubDate>Fri, 04 Oct 2019 09:38:55 +0800</pubDate><description><![CDATA[序列化和反序列化
1、什么是序列化和反序列化?
比如说，我看到埃菲尔铁塔很漂亮，想把它搬到我家门口，要求搬过去之后还是原来的样子，怎么办呢？

我需要把每一根钢筋都拆下来，做上标记，然后把钢筋都装到飞机上

运到目的地之后，把钢筋都卸下来，然后按照之前的标记，把钢筋组装起来，就变回埃菲尔铁塔了

这就是现实生活中的序列化和反序列化，那么反映到程序里面是怎样的呢?
要把一个对象，写入到文件里，在需要...]]></description><category></category></item><item><title><![CDATA[Android热修复原理]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/102020108</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/102020108</guid><author>pf_1308108803</author><pubDate>Thu, 03 Oct 2019 21:43:23 +0800</pubDate><description><![CDATA[Demo
1、热修复原理
一般我们自己写的类都是由 PathClassLoader 加载的,
类加载器在加载某个类的时候是先去父加载器那里找，
父加载器再去爷爷加载器那里找，一直往上，如果都找不到，才自己去找，
这就是java的双亲委托机制

通过 ClassLoader.loadClass 的时候会先走 parent 的 loadClass, 如果没找到会自己去找。
调用 findClass 方...]]></description><category></category></item><item><title><![CDATA[git-hook提交之前检测代码]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/101106832</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/101106832</guid><author>pf_1308108803</author><pubDate>Sat, 21 Sep 2019 14:31:09 +0800</pubDate><description><![CDATA[在用 Robust 热修复的时候，修复完成之后代码里有很多的 @Add 和 @Modify 注解，但是这些内容不应该提交到 git 上面去，提交的时候人工检测又很麻烦，所以在 git commit 之前进行 hook，在提交的时候之前进行检测代码里是否有不能提交的内容
在 git 项目根目录下的 .git/hooks/ 下有一堆的 xxx.sample 文件，前面的名字表示会在什么阶段起作用，把 ...]]></description><category></category></item><item><title><![CDATA[WIndows Git简写配置]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/100059887</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/100059887</guid><author>pf_1308108803</author><pubDate>Sun, 25 Aug 2019 09:08:01 +0800</pubDate><description><![CDATA[在官网上查了简写，是 alias.st = status
用的时候还要 git st
为什么不能把 git 也省略掉, 直接 st 呢

Windows Git 简写配置
1、找到 git 安装目录下的 etc 文件夹里面的 bash.bashrc 文件
我这里是 E:\software\git\Git\etcbash.bashrc
2、在文件的最后面添加需要的配置后保存

alias g=‘g...]]></description><category></category></item><item><title><![CDATA[Android 热修复调研]]></title><link>https://blog.youkuaiyun.com/pf_1308108803/article/details/98869078</link><guid>https://blog.youkuaiyun.com/pf_1308108803/article/details/98869078</guid><author>pf_1308108803</author><pubDate>Thu, 08 Aug 2019 14:18:38 +0800</pubDate><description><![CDATA[Sophix
AndFix 在 GitHub 上的最后一次提交记录是在三年前了，而且提的很多 issue 也没有人回复，估计是放弃这个方案了，在推 Sophix .
Sophix:
支持方法级别的修复

支持资源的修改，添加

补丁包较小

傻瓜式接入

看了下官网的介绍，然后自己集成了一下他的SDK，模拟了几个问题，依次生成补丁包，修复，走了一遍流程
我这里试了三个版本的 4.4、 6.0、 9...]]></description><category></category></item></channel></rss>