<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[abliudede的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/abliudede</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; abliudede]]></copyright><item><title><![CDATA[安卓apk反编译、修改、重新打包、签名全过程]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/118727287</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/118727287</guid><author>abliudede</author><pubDate>Wed, 14 Jul 2021 14:46:37 +0800</pubDate><description><![CDATA[版权声明：本文为博主原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接和本声明。原文链接：https://blog.youkuaiyun.com/dreamer2020/article/details/52761606/



首先明确，反编译别人apk是一件不厚道的事情。代码是程序员辛苦工作的成果，想通过这种手段不劳而获，是不对的。这也说明，代码混淆是非常重要的。本文抱着学习的态度，研究在一些特殊的情况下如果有需要，该怎么反编译apk。

工具简介
apktoolhttps://ibotpe...]]></description><category></category></item><item><title><![CDATA[Android知识体系梳理（5）-Java基础篇-反射、异常、泛型、注解的基本概念和使用]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/105712933</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/105712933</guid><author>abliudede</author><pubDate>Wed, 14 Jul 2021 14:37:48 +0800</pubDate><description><![CDATA[六、反射

七、异常

八、泛型

九、注解
]]></description><category></category></item><item><title><![CDATA[Android包体积优化]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/118726301</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/118726301</guid><author>abliudede</author><pubDate>Wed, 14 Jul 2021 14:09:47 +0800</pubDate><description><![CDATA[转载于：https://blog.youkuaiyun.com/long117long/article/details/90715364

转载于：https://blog.youkuaiyun.com/long117long/article/details/90715425



文中链接：

饿了么开源的Mess可实现四大组件和View混淆
  https://github.com/eleme/Mess
R8
  https://blog.dreamtobe.cn/android_d8_r8/
Facebook的s...]]></description><category></category></item><item><title><![CDATA[动态代理与静态代理区别]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/106125256</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/106125256</guid><author>abliudede</author><pubDate>Thu, 14 May 2020 17:52:18 +0800</pubDate><description><![CDATA[一、代理概念
为某个对象提供一个代理，以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口，这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。

图1：代理模式

从图中可以看出，代理接口（Subject）、代理类（ProxySubject）、委托类（RealSubject）形成一个“品”字结构。
根据代理类的生成时间不同可以将代理分为静态代理和动态代理两种。

下面以一个模拟需求说明静态代理和动...]]></description><category></category></item><item><title><![CDATA[Android知识体系梳理（4）-Java基础篇-Object方法分析，String的深度解析，String Pool分析，与StringBuilder、StringBuffer的对比]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/105642401</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/105642401</guid><author>abliudede</author><pubDate>Thu, 23 Apr 2020 16:48:50 +0800</pubDate><description><![CDATA[五、Object和String

有的同学要问了，Object和String是我们这一块儿日常一直在使用的东西，为什么要单独拎出来讲呢？其实，他们使用起来虽然简单，但比如Object类是位于java.lang包中的，java.lang是包含了Java最基础和核心的类，在编译时会自动导入的。Object类同时是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象（包括数组）都实现这个...]]></description><category></category></item><item><title><![CDATA[Android知识体系梳理（3）-Java基础篇-OOP的理解、继承、封装、多态以及面试会问什么]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/105598213</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/105598213</guid><author>abliudede</author><pubDate>Mon, 20 Apr 2020 19:13:56 +0800</pubDate><description><![CDATA[四、继承、封装、多态

今天我们开始讲这个面试时老生常谈的问题。什么是继承？什么是封装？什么是多态？

我们一步步往前走：

对象？我们现实世界中，一切物体，一切能看得到摸得着的实体，都可以视之为一个对象。而我们java中也是一样，只不过java中的对象是一个逻辑实体，它可以和现实进行对应，也可以是一个虚拟的概念。

比如我们有一支笔，它在现实生活中是一个对象。那么接下来，我们把它映射到java的...]]></description><category></category></item><item><title><![CDATA[Android知识体系梳理（2）-Java基础篇-基本类型、包装类型、关键字、final、static用法]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/105584547</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/105584547</guid><author>abliudede</author><pubDate>Sat, 18 Apr 2020 14:22:55 +0800</pubDate><description><![CDATA[一、开篇

开篇写这一篇的时候，我就感觉到任重而道远。java基础，这短短几个字，要怎么样才能用一篇博文梳理明白？

但还好，既然是知识体系，那么就是讲重点，讲概念。

二、基本类型与包装类型

讲java，那必须从基本类型开始讲起，这是起点。java共有8种基本类型：

byte 1字节 8位
	char 2字节 16位
	short 2字节 16位
	int 4字节 32位
	float 4字...]]></description><category></category></item><item><title><![CDATA[Android知识体系梳理（1）-引言以及知识体系划分]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/105575118</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/105575118</guid><author>abliudede</author><pubDate>Fri, 17 Apr 2020 15:11:37 +0800</pubDate><description><![CDATA[一、引言

从事Android不知不觉已经六年，一直以来的学习方式都是每个项目开始时，认真做一次框架选型。项目过程中按需学习。Android的知识体系一直处于繁杂而体系概念不够清晰的状态中。而之前的学习记录也因个人精力不足而暂停了分享的过程。

我为什么会开始这个系列？

第一是工作已经处在一个比较完美的舒适区，我有足够的精力来学习，并且学习之后来做分享这件事。

第二是窃以为每个人都有一颗对现状...]]></description><category></category></item><item><title><![CDATA[Android——多线程的多种实现方式]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/104891324</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/104891324</guid><author>abliudede</author><pubDate>Fri, 17 Apr 2020 10:32:40 +0800</pubDate><description><![CDATA[1、为什么用多线程？

答：核心思想是为了让程序表现得更加流畅，不阻塞主线程。基础知识：在安卓系统中，主线程又称之为UI线程，它负责渲染视图、对界面进行轮询的监听、分发事件到响应监听器并执行，而在主线程之外的其他线程是不能对视图和界面进行操作的。



2、什么是多线程？

答：线程是程序运行的基本单位，只要在主线程外新建线程即可称之为多线程。



3、Android多线程实现方式

 ...]]></description><category></category></item><item><title><![CDATA[由mp3音频录制 初探NDK编程]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/78459276</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/78459276</guid><author>abliudede</author><pubDate>Mon, 06 Nov 2017 16:47:40 +0800</pubDate><description><![CDATA[现下很多同学甚至是公司有些过于崇尚NDK编程，觉得会使用NDK的人就更厉害。
    经常发现一个做泛泛的大众化应用的公司，招聘要求第一行就是精通NDK编程。一个典型的码农型程序员开口闭口C++写安卓。
    种种现象导致了我在相当一段长的时间里觉得NDK是一个很难的东西，其实同学们NDK对于我们来说就是一种工具，并没有什么大不了的。并且对于现阶段大多数应用的大多数情况中，你都不需要使用到N]]></description><category></category></item><item><title><![CDATA[分享一些获取手机基本信息和apk信息的函数]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/73613678</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/73613678</guid><author>abliudede</author><pubDate>Fri, 23 Jun 2017 10:02:42 +0800</pubDate><description><![CDATA[1.获取cpu信息 基本上耗时 几毫秒 0型号 1频率 ARMv7

  public static String[] getCpuInfo() {
        if (sCpuInfo == null) {
            String path = "/proc/cpuinfo";
            String data = "";
            String]]></description><category></category></item><item><title><![CDATA[关于scorl嵌套线性布局]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/72933956</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/72933956</guid><author>abliudede</author><pubDate>Thu, 08 Jun 2017 19:02:04 +0800</pubDate><description><![CDATA[今天发现一个奇怪的现象，我的ScrollView作为根布局，里面包含一个LinearLayout。我给ScrollView设置了一个android:fillViewport="true"。
    在这种情况下，无论ScrollView的高度设置成warp还是match。里面的LinearLayout也不管设置成warp还是match，LinearLayout的高度都是占满屏幕的。
    于]]></description><category></category></item><item><title><![CDATA[Android PullToRefresh库的两个改动例子]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/54945446</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/54945446</guid><author>abliudede</author><pubDate>Thu, 09 Feb 2017 11:33:00 +0800</pubDate><description><![CDATA[例一：我们先继承PullToRefreshListView
之后我们就可以在布局文件中直接使用lazylistview，用这种思路，可以让安卓的每一个页面都很方便地实现pull的动画和效果。
package com.base;

import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pu]]></description><category></category></item><item><title><![CDATA[Android tab切换控件]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/54945195</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/54945195</guid><author>abliudede</author><pubDate>Thu, 09 Feb 2017 11:15:49 +0800</pubDate><description><![CDATA[基于viewpager，实现了可以点击tab，可页面左右滑动，tab变化，tab下标动画等。
  分为四个部分：
  第一个FragTabsViewPager，让您想要实现的页面继承它。
package com.base;

import java.util.List;

import com.shennongshi.dingdong.R;
import com.third.widget.P]]></description><category></category></item><item><title><![CDATA[Android 实现可循环，可轮播的viewpager]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/54945060</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/54945060</guid><author>abliudede</author><pubDate>Thu, 09 Feb 2017 11:08:13 +0800</pubDate><description><![CDATA[很多同学在开发过程中需要添加轮播图等，我浏览了网上很多轮播图实现方式，大多数不够完美。
  这是一个基于viewpager的轮播图，注意使用的时候要给图片做缓存等，以避免图片的oom。


package com.base.add;

import java.util.ArrayList;
import java.util.List;

import com.base.ActBase;
i]]></description><category></category></item><item><title><![CDATA[Android 流式布局LinearLayout]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/54910656</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/54910656</guid><author>abliudede</author><pubDate>Tue, 07 Feb 2017 15:45:31 +0800</pubDate><description><![CDATA[在安卓中，我们并没有现成的布局去实现自动流式的布局，这里给大家分享一个 FlowLinearLayout 。希望能帮到有需要的人。


package com.utils.widget;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import and]]></description><category></category></item><item><title><![CDATA[Android 弹toast工具类]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/54910588</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/54910588</guid><author>abliudede</author><pubDate>Tue, 07 Feb 2017 15:41:01 +0800</pubDate><description><![CDATA[我们在程序中经常会有弹出一个toast的需求，而如果每一次都对toast创建出一个新的对象并描述，这样不仅浪费资源而且浪费我们的编码时间。
这是一个工具类，我们需要弹出toast的时候，只要调用XToaster.show方法就能简单地实现toast弹出。


package com.utils.tools;

import android.annotation.SuppressLint;
]]></description><category></category></item><item><title><![CDATA[Android 分享临医app录音管理基类实现]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/54910488</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/54910488</guid><author>abliudede</author><pubDate>Tue, 07 Feb 2017 15:35:44 +0800</pubDate><description><![CDATA[临医app录音管理基类
删除了跟商业隐私有关函数，只剩下功能函数，希望能给大家带来帮助。
其中振幅功能是为了提供根据声音大小而变化的波动动画，有兴趣的同学可以私信我索取。
有MP3转换功能，这方面个人觉得在Android机器上做录音转换并不太好，可以把音频转换模块放到服务器上执行。


package com.utils.tools;

import java.io.File;
imp]]></description><category></category></item><item><title><![CDATA[Android的相机管理工具类]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/54910365</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/54910365</guid><author>abliudede</author><pubDate>Tue, 07 Feb 2017 15:28:51 +0800</pubDate><description><![CDATA[package com.utils.tools;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;

import com.shennongshi.dingdong.R;
import com.shennongshi.dingdong.pztools.IntentC]]></description><category></category></item><item><title><![CDATA[Android 图片处理工具类，包含了压缩、存、取图片等。]]></title><link>https://blog.youkuaiyun.com/abliudede/article/details/54910339</link><guid>https://blog.youkuaiyun.com/abliudede/article/details/54910339</guid><author>abliudede</author><pubDate>Tue, 07 Feb 2017 15:26:49 +0800</pubDate><description><![CDATA[package com.utils.tools;

import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import ]]></description><category></category></item></channel></rss>