<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yingaizhu的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yingaizhu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yingaizhu]]></copyright><item><title><![CDATA[AndroidStudio开发环境问题小结]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/155056219</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/155056219</guid><author>yingaizhu</author><pubDate>Thu, 20 Nov 2025 17:26:34 +0800</pubDate><description><![CDATA[本文总结了Android开发环境中常见的版本兼容性问题及解决方案。重点讲解了AGP升级到8.0+后引用库资源的方式变化（需显式使用库的R类），以及AndroidStudio版本过低无法支持高版本AGP的问题（需升级IDE或降低AGP版本）。文章还提示了开发环境各组件（AndroidStudio、Gradle、AGP、JDK）间的版本兼容性要求，建议非必要不升级编译环境，并提供了相关参考链接。后续将持续更新更多解决方案。]]></description><category></category></item><item><title><![CDATA[在IntelliJ IDEA编辑器中基于Gradle编译器搭建Kotlin开发环境遇到的各种坑]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/154683231</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/154683231</guid><author>yingaizhu</author><pubDate>Tue, 11 Nov 2025 15:40:32 +0800</pubDate><description><![CDATA[众所周知，Gradle是一个非常强大的编译器，但是环境配置着实让人头疼。因为Gradle版本更新频繁，Kotlin插件也随之频繁更新，版本迭代难免会出现版本兼容问题或者久远版本支持出现问题，从而导致整个编译环境瘫痪。下面提及一些笔者遇到的一些问题，以及解决方法。]]></description><category></category></item><item><title><![CDATA[解决Google Play商店提新包后仍旧存在政策相关的问题]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/152329721</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/152329721</guid><author>yingaizhu</author><pubDate>Tue, 30 Sep 2025 17:50:48 +0800</pubDate><description><![CDATA[Google Play商店政策时常更新，线上的应用时常需要根据政策要求进行整改更新包体。比如目标版本要求提升、内购库要求更新、要求支持16KB页面等等，此时开发者需要根据政策提示，整改后重新提包进行审核。]]></description><category></category></item><item><title><![CDATA[玩转bundletool工具之获取aar包信息]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/140779316</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/140779316</guid><author>yingaizhu</author><pubDate>Tue, 30 Jul 2024 11:02:11 +0800</pubDate><description><![CDATA[玩转bundletool工具，从aar中提取各种信息，可用于制作各种工具类，检查包体是否符合要求等等。]]></description><category></category></item><item><title><![CDATA[Windows UWP ContentDialog去掉阴影（全透明）的实现]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/139277120</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/139277120</guid><author>yingaizhu</author><pubDate>Tue, 28 May 2024 21:10:38 +0800</pubDate><description><![CDATA[Windows UWP ContentDialog自定义样式，实现全透明，或者在自定义背景的时候去掉阴影的实现方法]]></description><category></category></item><item><title><![CDATA[Android Dialog内容被底部导航栏遮挡问题定位解决]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/134126558</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/134126558</guid><author>yingaizhu</author><pubDate>Mon, 30 Oct 2023 20:33:22 +0800</pubDate><description><![CDATA[经过这个案例，大致的结论就是，Dialog+windowIsFloating（false）+FrameLayout+全屏WebView+AndroidBug5497带来的巨坑。希望能帮助到遇到同样问题的苦逼程序员们。]]></description><category></category></item><item><title><![CDATA[Play 资产分发（Play Asset Delivery）]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/119918380</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/119918380</guid><author>yingaizhu</author><pubDate>Wed, 26 Jul 2023 19:08:31 +0800</pubDate><description><![CDATA[Google Play发布应用，只支持上传aab格式文件。如果发布的是游戏，也已经不再支持旧版的扩展文件（OBB文件），但是游戏可能会需要大量的游戏资源一并发布，于是Google就推出了资产分发的功能，这样一来，就可以实现超过150MB的单个aab文件上传到Google Play，并且使得生成的单个基础apk不超过150MB。Play资产分发提供了比较灵活的分发模式、自动更新、压缩和增量修补功能，重要的是这些还是免费的。]]></description><category></category></item><item><title><![CDATA[Gradle入门篇之自定义Task类]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/130955111</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/130955111</guid><author>yingaizhu</author><pubDate>Fri, 02 Jun 2023 12:00:50 +0800</pubDate><description><![CDATA[自定义Task类，你可通过继承 Gradle 中的类实现。注意事项：自定义的 Task 类必须是可以继承的，也就是说自定义的 Task 类不能是 final 的。如果你使用 Kotlin 语言开发，要特备注意 kotlin 语法中，类定义默认是 final 的（Java 语法中，如果没有指定是 final，都不是 final），因此我们在定义 Task 类的时候，习惯性将 Task 类定义为 抽象类 （abstract），这样就可以确保 Task 类不是 final 的。]]></description><category></category></item><item><title><![CDATA[Gradle基础——在构建脚本定义变量]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/128299675</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/128299675</guid><author>yingaizhu</author><pubDate>Wed, 14 Dec 2022 15:11:18 +0800</pubDate><description><![CDATA[在构建脚本中，变量主要可以分为两大类，本地变量和额外属性。这两中变量定义和使用有所不同，作用域范围也不一样。]]></description><category></category></item><item><title><![CDATA[Android Span进阶之路——ClickableSpan]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/128200289</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/128200289</guid><author>yingaizhu</author><pubDate>Tue, 06 Dec 2022 16:33:36 +0800</pubDate><description><![CDATA[在Android中，可以使用强大的标记（Span）对象来实现富文本展示，相比 HTML 而言更高效实用。本文将对  （可点击的Span）展开深入的学习，从基本的 ClickableSpan 使用到深入自定义效果，实现ClickableSpan的点击效果，提高用户体验]]></description><category></category></item><item><title><![CDATA[Gradle 构建环境变量配置]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/126267361</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/126267361</guid><author>yingaizhu</author><pubDate>Tue, 23 Aug 2022 14:28:44 +0800</pubDate><description><![CDATA[Gradle 提供多种机制用于配置 Gradle 和 指定项目的性能。开发者可以通过配置各种属性，用以提高Gradle的性能，以及实现某些特殊的构建需求（比如网络代理）]]></description><category></category></item><item><title><![CDATA[Gradle基础——Gradle构建的生命周期]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/126140406</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/126140406</guid><author>yingaizhu</author><pubDate>Mon, 08 Aug 2022 18:21:47 +0800</pubDate><description><![CDATA[Gradle的核心是一种基于依赖的编程语言。在Gradle语法中，你可以定义任务和任务之间的依赖关系，Gradle保证这些任务按照依赖的顺序执行，并且每个任务只执行一次。这些任务形成一个有向无环图，一些构建工具可以在执行这些任务时构建这样的依赖关系图，Gradle在执行任何任务之前就已经构建出完整的依赖关系图。这就是Gradle的核心，让原本不可能的事情称为可能。在Gradle中通过构建脚本来配置依赖关系图，因此严格来说他们是。...]]></description><category></category></item><item><title><![CDATA[Room 数据库自增长id导致数据插入失败的解决方案]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/124857644</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/124857644</guid><author>yingaizhu</author><pubDate>Mon, 23 May 2022 10:14:22 +0800</pubDate><description><![CDATA[在Room数据库中，我们定义数据实体类跟数据库表进行一一对应，在定义的表存我们经常会用到自增长的id列，定义了自增长的列，在插入数据时构建数据实体对象时，如果数据实体类中使用了自增长的id列，数据插入时id列的值可以设置为 null (Kotlin，Java中使用默认值），数据库会自动编排id值。但是如果数据实体类中的id列指定了默认值，出现了数据无法插入的问题（笔者经历）。]]></description><category></category></item><item><title><![CDATA[Android jobb 工具使用详解]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/123664228</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/123664228</guid><author>yingaizhu</author><pubDate>Tue, 22 Mar 2022 19:32:55 +0800</pubDate><description><![CDATA[一、前言
&nbsp;&nbsp;&nbsp;&nbsp;OBB文件是Android 中的APK扩展文件，这是一种二进制格式的文件。在Android 2.3（API Level 9）及以上版本系统中，可以通过 StorageManager 类在应用中下载和装载这些扩展文件。当应用需要使用大量的文件和资源（比如音频、视频）的时候，就应当考虑使用OBB扩展文件（少量完全可以放在assets或者res中），比较常见的就是游戏类应用。jobb工具就是将资源目录生成扩展OBB文件的一个工具，使用起来也算是比较简单。
]]></description><category></category></item><item><title><![CDATA[Kotlin 中实现静态方法效果]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/122856613</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/122856613</guid><author>yingaizhu</author><pubDate>Thu, 10 Feb 2022 11:28:29 +0800</pubDate><description><![CDATA[本文将介绍如何在Kotlin中实现类似于Java中静态方法的效果，编写工具类，让调用看起来更加简洁。]]></description><category></category></item><item><title><![CDATA[Volley 框架自定义请求（Request）之参数传递]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/121128627</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/121128627</guid><author>yingaizhu</author><pubDate>Thu, 04 Nov 2021 18:04:42 +0800</pubDate><description><![CDATA[一、前言
&nbsp;&nbsp;&nbsp;&nbsp;Volley 是 Android 官方的 HTTP 请求框架 ，它是基于 HttpURLConnection 的，OKHttp 是基于 WebSocket 的，它有一些优势，也有一些缺点，更多关于 Volley的使用，可以参考官方文档：使用 Volley 传输网络数据。
二、Volley 自定义请求（Request）
&nbsp;&nbsp;&nbsp;&nbsp;使用过 Volley 的都知道，Volley 已经提供了一些请求（Request）的实]]></description><category></category></item><item><title><![CDATA[Android App Bundle基础入门]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/119424235</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/119424235</guid><author>yingaizhu</author><pubDate>Wed, 25 Aug 2021 19:50:40 +0800</pubDate><description><![CDATA[Android App Bundle 是一种发布格式（并不是可安装文件），文件后缀名为 `.aab`，是一个压缩文件，其中包含了应用的所有经过编译的代码和资源，APK文件的生成和签名都由 Google Play 完成。Google Play 在使用 App Bundle 生成 APK 的过程中，会针对每种设备配置进行优化，只保留特定设备需要的代码和资源，因此特定的设备会下载的 APK 的体积会得到一定程度减少。]]></description><category></category></item><item><title><![CDATA[bundletool 工具使用详解]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/119545459</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/119545459</guid><author>yingaizhu</author><pubDate>Thu, 19 Aug 2021 11:23:14 +0800</pubDate><description><![CDATA[bundletool 是 Android Studio、Android Gradle 插件和 Google Play 用于构建 Android App Bundle 并将 App Bundle 转换为部署到设备的各种 APK 的底层工具。 bundletool 也可用作命令行工具，因此您可以自己构建 App Bundle，并模拟 Google Play 服务端构建应用程序 APK。]]></description><category></category></item><item><title><![CDATA[Android FileProvider 详解]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/118972148</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/118972148</guid><author>yingaizhu</author><pubDate>Fri, 30 Jul 2021 18:34:52 +0800</pubDate><description><![CDATA[FileProvider 是 ContentProvider 的一个特殊子类，它可以为应用生成关联的 content:// 内容 URI ，而不是 file:/// 类型的 URI，使得应用能够实现安全地共享文件。
内容 URI 允许授予对文件临时的读/写访问权限。当您构建一个包含内容 URI 的 Intent，并要将包含内容 URI 的 Intent 传递给客户端应用，可以通过 Intent.setFlags() API 添加访问权限。接收 Intent 的客户端应用将获得授予的对文件的访问权限]]></description><category></category></item><item><title><![CDATA[Android 文件共享]]></title><link>https://blog.youkuaiyun.com/yingaizhu/article/details/118708571</link><guid>https://blog.youkuaiyun.com/yingaizhu/article/details/118708571</guid><author>yingaizhu</author><pubDate>Tue, 27 Jul 2021 20:08:45 +0800</pubDate><description><![CDATA[应用通常需要向其他应用提供一个或者多个文件。例如：相册应用会需要像图片编辑器提供图片文件，文件管理器应用需要让用户可以在不同的存储区域内移动和拷贝文件。发送方应用可以共享文件的唯一方式是相应接收方应用的请求。

在任何情况下，从您的应用共享文件到其他接收方应用，唯一的安全做法就是发送一个具有临时访问权限的内容 URI。具有临时访问权限的内容 URI 之所以安全，是因为它只允许接收 URI 的应用访问，并且会自动过过期。]]></description><category></category></item></channel></rss>