<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[venusic的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/venusic</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; venusic]]></copyright><item><title><![CDATA[PVE8.0内核构建支持IOMMU拆分]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/131493439</link><guid>https://blog.youkuaiyun.com/venusic/article/details/131493439</guid><author>venusic</author><pubDate>Sat, 01 Jul 2023 18:24:17 +0800</pubDate><description><![CDATA[PVE直通SATA控制器给群晖的时候，发现网卡、USB、SATA控制器都在一个IOMMU上。直通完了，PVE直接失联了。这肯定不行。百度了一下说是要编译内核把IOMMU拆开。下面记录一下编译内核的过程。]]></description><category></category></item><item><title><![CDATA[Java、Gradle、Exec执行bat脚本失败处理]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/105140842</link><guid>https://blog.youkuaiyun.com/venusic/article/details/105140842</guid><author>venusic</author><pubDate>Fri, 27 Mar 2020 14:51:55 +0800</pubDate><description><![CDATA[今天使用Gradle脚本写编译完Jar包后自动执行dex命令，如下写法，竟然提示运行失败。
   exec {
        workingDir "../"
        commandLine "dx","--version"
    }

报错：&gt;A problem occurred starting process 'command 'dx''
有点纳闷，这命令cmd里不是运行得...]]></description><category></category></item><item><title><![CDATA[SQLCipher加密数据库打开工具]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/104209681</link><guid>https://blog.youkuaiyun.com/venusic/article/details/104209681</guid><author>venusic</author><pubDate>Fri, 07 Feb 2020 14:24:23 +0800</pubDate><description><![CDATA[普通的SQLite工具无法打开SQLCipher加密过后的数据库，需要使用此工具打开查看 DB Browser for SQLite。
该工具支持打开使用SQLCipher加密的数据库。


]]></description><category></category></item><item><title><![CDATA[Replugin 源码分析（2）------replugin-plugin-gradle插件源码分析]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/99674282</link><guid>https://blog.youkuaiyun.com/venusic/article/details/99674282</guid><author>venusic</author><pubDate>Mon, 19 Aug 2019 17:53:58 +0800</pubDate><description><![CDATA[前言
上一篇文章分享了宿主的gradle插件的源码分析，本文将分析插件项目的gradle插件的源码，360的插件apk是支持独立安装的，这点和其他插件化框架有不小的区别，很显然插件程序肯定做了不少事情。
一、源码结构


显然光看这代码量就知道比宿主gradle插件干的事情多。

二、源码分析
插件入口类：com.qihoo360.replugin.gradle.plugin.ReClassPlu...]]></description><category></category></item><item><title><![CDATA[Replugin 源码分析（1）------replugin-host-gradle插件源码分析]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/99637362</link><guid>https://blog.youkuaiyun.com/venusic/article/details/99637362</guid><author>venusic</author><pubDate>Thu, 15 Aug 2019 18:07:50 +0800</pubDate><description><![CDATA[前言
一、源码结构


很显然标准的gradle插件工程，编码语言为groovy，编译工具为gradle，本文不讨论gradle插件工程相关知识，本文只分析该插件在宿主编译时做了哪些工作。

二、源码分析
从replugin-host-gradle.properties文件可以看到整个plugin的入口在类com.qihoo360.replugin.gradle.host.Replugin中，首先...]]></description><category></category></item><item><title><![CDATA[Android实现操作U盘,解决写入不完整的问题]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/88747668</link><guid>https://blog.youkuaiyun.com/venusic/article/details/88747668</guid><author>venusic</author><pubDate>Fri, 22 Mar 2019 18:15:35 +0800</pubDate><description><![CDATA[因为项目需要，APP要把数据导出到U盘中，下文将介绍下Android5.0以上怎么操作U盘。重点就是写入文件之后,必须调用内核文件同步函数,否则可能存在写入不完全的问题.这里不详叙DocumentFile相关的操作,网上已经有很多了.
获取外部存储
 private List&lt;StorageVolume&gt; getVolume() {
        StorageManager man...]]></description><category></category></item><item><title><![CDATA[Android对View进行全局拦截处理]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/79297467</link><guid>https://blog.youkuaiyun.com/venusic/article/details/79297467</guid><author>venusic</author><pubDate>Fri, 09 Feb 2018 13:20:33 +0800</pubDate><description><![CDATA[前言

当我们继承AppCompatActivity时，会发现一些系统控件会被替换成v4包扩展过后的View，它是如何做到全局拦截替换的呢,有时候我们也有一些需求，需要对某一类型的View进行统一操作。



LayoutInflater 源码分析

先来看看inflate函数：



//Layoutinflater.java

  public View inflate(@LayoutRes ...]]></description><category></category></item><item><title><![CDATA[Android 仿IOS边缘滑动事件监听]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/79287357</link><guid>https://blog.youkuaiyun.com/venusic/article/details/79287357</guid><author>venusic</author><pubDate>Thu, 08 Feb 2018 11:00:59 +0800</pubDate><description><![CDATA[直接上代码，原理是利用Activity的dispatchTouchEvent进行全局触摸事件拦截，并且通过标志位拦截事件，避免在触发边缘侧滑时引起其他滑动控件的滑动。


    //从dispatch拦截事件
  @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        return gestureHand...]]></description><category></category></item><item><title><![CDATA[Kotlin扩展函数与重载操作符解析]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/73294800</link><guid>https://blog.youkuaiyun.com/venusic/article/details/73294800</guid><author>venusic</author><pubDate>Thu, 15 Jun 2017 17:58:06 +0800</pubDate><description><![CDATA[扩展函数可以称为Kotlin的核心，标准库里到处充斥着扩展函数和高阶函数。然而标准库中扩展函数看起来都是高深莫测，一脸懵逼。本文教你如何理解扩展函数。]]></description><category></category></item><item><title><![CDATA[ListView和EditText使用解决方案]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/55259195</link><guid>https://blog.youkuaiyun.com/venusic/article/details/55259195</guid><author>venusic</author><pubDate>Mon, 20 Feb 2017 09:26:26 +0800</pubDate><description><![CDATA[ListView的复用对于EditText的坑有不少，比如焦点丢失、值乱窜、滚动问题。本文通过两种方案来解决：

一、老老实实使用ListView，然后把坑踩平。



1、焦点问题

该问题主要体现在于，点击EditText的时候键盘弹出，但是输入却没有任何反应，需要再点击一次才能输入数据。产生的原因在于弹出键盘的时候触发了ListView的刷新，导致本来获取了焦点的EditText又失去了焦点]]></description><category></category></item><item><title><![CDATA[sqlite知识分享]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/53010329</link><guid>https://blog.youkuaiyun.com/venusic/article/details/53010329</guid><author>venusic</author><pubDate>Wed, 02 Nov 2016 18:05:51 +0800</pubDate><description><![CDATA[平时遇到的sqlite知识分享]]></description><category></category></item><item><title><![CDATA[Android Studio NDK 入门教程（8）--JNI动态注册本地方法]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/52487558</link><guid>https://blog.youkuaiyun.com/venusic/article/details/52487558</guid><author>venusic</author><pubDate>Fri, 09 Sep 2016 15:20:25 +0800</pubDate><description><![CDATA[这里可以提供另外一种方法来动态注册c++函数，让其根Java中的native方法关联起来。]]></description><category></category></item><item><title><![CDATA[Android Studio NDK 入门教程（7）--被NDK支持的C++运行库]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/52414070</link><guid>https://blog.youkuaiyun.com/venusic/article/details/52414070</guid><author>venusic</author><pubDate>Fri, 02 Sep 2016 15:05:19 +0800</pubDate><description><![CDATA[Android 默认使用的是最小系统c++运行库，功能十分有限。并且不便于代码移植，毕竟STL在大部分代码中都有使用。]]></description><category></category></item><item><title><![CDATA[Android根据文字长度自动调整字号的TextView]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/52383877</link><guid>https://blog.youkuaiyun.com/venusic/article/details/52383877</guid><author>venusic</author><pubDate>Wed, 31 Aug 2016 12:51:55 +0800</pubDate><description><![CDATA[标题根据文字的长度自动适配字号大小和换行显示，因为标题可能很长然后显示不完全。]]></description><category></category></item><item><title><![CDATA[Android Studio NDK 入门教程（6）--JNI签名验证防止恶意调用]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/52347316</link><guid>https://blog.youkuaiyun.com/venusic/article/details/52347316</guid><author>venusic</author><pubDate>Sun, 28 Aug 2016 19:34:16 +0800</pubDate><description><![CDATA[JNI签名验证]]></description><category></category></item><item><title><![CDATA[Android Studio NDK 入门教程（5）--Java对象的传递与修改]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/52302578</link><guid>https://blog.youkuaiyun.com/venusic/article/details/52302578</guid><author>venusic</author><pubDate>Wed, 24 Aug 2016 17:34:09 +0800</pubDate><description><![CDATA[概述本文主要Java与C++之间的对象传递与取值。包括传递Java对象、返回Java对象、修改Java对象、以及性能对比。]]></description><category></category></item><item><title><![CDATA[Android Studio NDK 入门教程（4）--优雅的在C++中输出Logcat]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/52294815</link><guid>https://blog.youkuaiyun.com/venusic/article/details/52294815</guid><author>venusic</author><pubDate>Tue, 23 Aug 2016 21:49:19 +0800</pubDate><description><![CDATA[本文描述如何在C/C++中输出Logcat日志]]></description><category></category></item><item><title><![CDATA[Android Studio NDK 入门教程（3）--Java与C++之间的类型签名]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/52252309</link><guid>https://blog.youkuaiyun.com/venusic/article/details/52252309</guid><author>venusic</author><pubDate>Fri, 19 Aug 2016 16:41:59 +0800</pubDate><description><![CDATA[概述本文主要介绍Java与C++通信时函数的签名关系]]></description><category></category></item><item><title><![CDATA[Android Studio NDK 入门教程（2）--Java与C++之间的简单数据转换与传递]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/52187452</link><guid>https://blog.youkuaiyun.com/venusic/article/details/52187452</guid><author>venusic</author><pubDate>Tue, 16 Aug 2016 01:18:37 +0800</pubDate><description><![CDATA[概述本文将讲解Java与原生代码之间的数据转换，包括基础类型之间的转换。]]></description><category></category></item><item><title><![CDATA[Android Studio NDK 入门教程（1）--来自C 语言的String]]></title><link>https://blog.youkuaiyun.com/venusic/article/details/52121254</link><guid>https://blog.youkuaiyun.com/venusic/article/details/52121254</guid><author>venusic</author><pubDate>Mon, 08 Aug 2016 13:05:52 +0800</pubDate><description><![CDATA[本文讲述如何使用Android Studio 进行NDK简单开发]]></description><category></category></item></channel></rss>