自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android OkHttp 框架分析

OkHttp 是一个高效的Http 客户端,是squareup 公司出品,它有以下默认特性:1. 支持Http/2 ,允许所有同一个主机地址请求共享同一个socket 连接2. 连接池使用较少请求延时3. 透明的GZIP压缩减少响应数据的大小4. 缓存响应内容,避免一些重复的请求1) OkHttp 使用:引入OkHttp相关库:implementation 'com....

2019-07-11 15:41:57 282

原创 Android Retrofit框架分析

Retrofit 是一个Android网络框架,是squareup 公司出品, 内部是基于OkHttp 去实现网络请求,Retrofit 与 OkHttp的关系是,Retrofit 负责网络调度,Okhttp 负责网络执行。 下面介绍下Retrofit1) Retrofit 基本使用1. 引入 Retrofit 相关库:implementation 'com.squareup.ret...

2019-07-11 10:33:18 270

原创 Android 屏幕适配 - 最小宽度限定符

Android 屏幕适配有多种方式,本文介绍下最小宽度限定符适配。1) Android 屏幕适配概念物理像素点(px) : 代表的是手机的物理像素点密度无关像素(dp): 密度无关像素等于160dpi 屏幕上的一个物理像素,这是系统的基线密度屏幕密度(dpi) : 屏幕每英寸上的像素点,Android 将所有的屏幕密度分组为6中通用密度:低(ldpi), 中(mdpi), 高(h...

2019-07-10 20:56:45 16920

原创 Android 自定义Gradle 插件

Android 自定义Gradle插件 可以修改其中的打包流程。 Android Studio 没有选项来创建自定义Gradle 插件库,Gradle插件库的名字必须是buildSrc 1) 新建Gradle 插件项目:新建Module或者Android Library, 然后删除新建项目中的内容,只保留build.gradle和 src/main 目录接下来修改插件项目build.g...

2019-07-10 13:34:34 242

原创 Android apk 瘦身

Android Studio 双击apk 可以查看apk 各类文件的占比,如下图从图中可以看出,apk 大小占比依次是 assets, classes.dex, res, lib 。Android apk 包大小优化。主要涉及以下几个方面:1)jniLibs 下so 文件优化so编译类型:Android 64位机 默认是支持armeabi-v7a 的,所以为了节省为...

2019-07-09 18:02:56 168

原创 Android 混淆

Android Studio 使用ProGuard 进行混淆,ProGuard是一个压缩,优化和混淆Java 字节码文件的工具, 可以删除无用的类,字段,方法和属性,还可以删除无用的注释,最大限度的优化字节码文件。它还可以使用简短并无意义的名称来重命名已经存在的类,字段,方法和属性。混淆流程针对于Android 项目, 将其主项目及依赖库中未被使用的类,类成员,方法,属性移除,有助于规避64...

2019-07-09 16:10:06 372

原创 Android 增量更新

自从Android 4.1 开始, Google play 引入了应用程序的增量更新功能,App 使用该方式升级,可节省约2/3的流量。现在国内的主流应用市场都支持应用的增量更新.增量更新的原理: 就是将手机上已安装apk 与服务器最新的apk进行二进制对比,得到差分包,用户在更新程序时,只需要已安装,合成新版apk.apk 文件差分,合成,可以通过开源二进制比较工具bsdiff 来实...

2019-07-09 12:40:15 388

原创 Android so加载原理

Android 应用或多或少的会使用so,so 在使用时,也会遇到一些问题,下面整理一些关于so的 概念。so的编译类型:Android 只支持3种CPU 类型:x86,arm , mips,不过现在x86和mips已经很少在手机设备使用了,现在的手机基本是arm 体系的。arm体系,分为32位和64位两种:1)armeabi/armeabi-v7a : 这个架构是arm 类型的,...

2019-07-09 10:58:19 741

原创 Android Gradle 打包流程

Android Studio 集成了打包命令,在命令下输入 gradlew assembleRelease -i ,就会打包出一个apk包,在Gradle控制台中,输出内容如下所示:App 打包的过程中执行的所有原生Task. 其中几个比较重要的TaskpreDebugBuild : 新建build文件夹, 内部新增intermediates/incremental 文件夹,针对各...

2019-07-09 09:36:01 6195

原创 插件化 - ContentProvider加载

Android ContentProvider 是一个SQLite数据库,分为数据提供方和数据使用方。 二者通过匿名共享内存来传输数据,数据不需要从一个地址复制到另一个地址,当数据量很大的时候,速度是非常快的。并不是所有的数据传递都需要ContentProvider, 比如 Activity 跳转需要传递 字符串,整数之类的数据,这些数据的传递是基于Binder来实现的, Binder跨进程...

2019-07-08 13:24:59 321

原创 插件化 - BroadcastReceiver加载

Android 广播分为静态广播和动态广播1) 静态广播需要在AndroidMainfest.xml 中注册。因为安装和Android 系统重启时,PackageManagerService都会解析App的AndroidMainfest.xml, 所以静态广播的注册信息都存在PMS中。2)动态广播通过代码的方式进行注册,调用Context的registerReceiver方法,最终会Act...

2019-07-08 10:58:23 214

原创 插件化 - Activity加载

Activity 是App中使用频率最高的组件,各种插件化框架的主要精力都放在Activity上。Activity的插件化需要解决3方面的技术问题:1) 宿主App 可以加载插件App中类2)宿主App 可以加载插件App中的资源3)宿主App可以加载插件中的Activity插件化加载插件的Activity的方式有很多中,本文采用的是宿主App合并多个插件dex.Andro...

2019-07-07 10:15:32 206 1

原创 cocos2dx - PageView

Cocos2dx PageView 可以使用翻页的效果创建PageView:Size size(150, 130);PageView* pageView = PageView::create();pageView->setDirection(PageView::Direction::HORIZONTAL);pageView->setContentSize(size);...

2019-07-04 17:04:03 2034

原创 Cocos2dx - ScrollView,ListView

Cocos2dx 中 ListView 列表的使用创建ListView:auto list = ListView::create();list->setDirection(ui::ScrollView::Direction::VERTICAL);list->setBounceEnabled(true);list->setBackGroundImage("green...

2019-07-04 16:50:29 1014

原创 cocos2dx - TexturePacker使用

TexturePacker 支持将很多张小图合并成一张大图, 在游戏开发中经常使用到,TexturePacker还支持图片的加密。使用TexturePacker 导入一系列图片资源后,会生成两个文件,一个保存各图片信息的.plist文件和一个.png格式的大图。使用TexturePacker 加密图片后,会生成两个文件,一个保存图片信息的.plist信息和一个.pvr.ccz 加密后的大图...

2019-07-04 15:41:38 332

原创 cocos2dx 3.x 网络请求及json 解析

Cocos2dx 自带网络请求类 HttpRequest, 支持 get,post 请求,支持即时发送请求或者将请求放到发送队列中。json 解析使用第三方的nlohmann json 库。#include "cocos2d.h"#include "network/HttpClient.h"using namespace cocos2d::network;Post 请求:vo...

2019-06-26 20:10:37 570

原创 cocos2dx 3.x - JNI调用

cocos2dx 3.x Android 项目中,涉及到cocos 调用 java 和 java 调用cocos 的情况,因此需要使用jni.cocos c++ 调用 javac++ 调用 java 静态方法:C++ 代码:std::string CppBridgeToJava::getAppName(){ const std::string classPath = "...

2019-06-26 17:47:11 273

原创 Android 集成google 和 facebook 登录

最近公司项目刚好集成了google 和 facebook 登录,中间遇到了一些问题,所以记录下来.主要问题如下:1)如何集成google 和 facebook 登录,主要参考官方文档。2)应用上线后,google和facebook 登录失败集成google 登录,整个流程如下:第一步:firebase官网:https://console.firebase.goog...

2019-06-26 09:45:41 1985

原创 插件化加载外部dex

Android插件化能从外部加载一个apk插件,就在于ClassLoader. 其中最重要的是其子类 PathClassLoader和DexClassLoader.PathClassLoader 和 DexClassLoader 构造函数的第二个参数optimizedDirectory, PathClassLoader将这个参数设置为null, DexClassLoader将这个参数设置为非n...

2019-06-16 13:38:01 318

原创 启动未在AndroidMainfest中声明的Activity

对于插件化项目, 在插件包中新增一个Activity, 主包不能直接启动这个Activity, 因为这个Activity事先没有Mainfest文件中声明,会直接报Activity Not Found异常。基本思路是:1)App发送要启动的NextActivity信息给AMS之前,把这个Activity 替换为一个在AndroidMainfest.xml中声明的MainActivity, ...

2019-06-16 12:47:49 865

原创 Hook 之 ActivityManagerNative, ApplicaitonPackagerManager

PackageManagerService的HookPMS 是系统服务,是没办法进行Hook的。只能修改它在Android App进程中的代理对象,它是PackageManager对象,很多类中都有这个代理对象的身影,比如 Activityhread中,字段sPackageManager; 以及ApplicationPackageManager中,mPM字段。public class H...

2019-06-16 12:02:42 532

原创 Andorid 代理模式

代理模式的定义是:为其它对象提供一种代理以控制对这个对象的访问。代理模式的UML图如下:RealSubject 和 Proxy 都是Subject的子类 在Proxy内部有一个RealSubject类型的成变量,Proxy的Request方法会调用RealSubject的Request 方法。代理分为静态代理和动态代理:静态代理:public interface Sub...

2019-06-05 23:32:47 106

原创 Android 反射

Java反射1) 根据一个字符串反射获取一个类的对象2)反射获取成员变量3)反射泛型4)反射进行封装项目地址:https://github.com/xiongliang120/ReflectProject.git获取类型:ClassForName:Class temp = Class.forName("com.xiongliang.reflectionprojec...

2019-06-01 17:49:11 211

原创 FFmpeg 基础概念

FFmpeg 是一个非常优秀的多媒体框架, FFmpeg 可以运行在Linux,Mac,Windows等平台上。FFmpeg 主要作用能够解码,编码,转码,复用,解复用,过滤音视频数据。FFmpeg 编译后文件目录:libavcodec:包含音视频编码器和解码器libavutil:包含多媒体应用常用的简化编程的工具,如随机数生成器、数据结构、数学函数等功能libavformat:...

2019-05-26 19:32:38 461

原创 Android RSA 加密

RSA是最流行的公开密钥算法,既能用于加密,也能用于数字签名,属于非对称加密鼻祖。RSA算法原理如下:1.随机选择两个大质数p和q,p不等于q,计算N=pq;2.选择一个大于1小于N的自然数e,e必须与(p-1)(q-1)互素。3.用公式计算出d:d×e = 1 (mod (p-1)(q-1)) 。4.销毁p和q。由于进行的都是大数计算,使得RSA最快的情况也比DES和其它对称...

2019-05-26 14:36:45 1706

原创 Android AES加解密

AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位。AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐)。AES加密有很多轮的重复和变换。大致步骤如下:1、密钥扩展(KeyExpansion),2、初始轮(Initial Round),3、重复轮(Rounds...

2019-05-26 14:11:05 336

原创 cocos2dx HelloWorld 分析

cocos2dx Helloworld 导入Android Studio 目录如下:Rerources文件夹:该文件夹主要用于存放游戏中需要的图片,音频和配置等资源文件。Classes文件夹:该文件夹用于存放头文件和源代码文件,可以看到默认有AppDelegate.h, AppDelegate.cpp, HelloWorldScene.h, HelloWorldScene...

2019-05-20 19:49:55 221

原创 cocos2dx 3.x 初始化 Android游戏

1:环境配置2:初始化cocosdx c++ 项目3:导入Android Studio运行环境配置:cocos2dx版本: 3.17.1Android SDK: 28Android NDK: 19.2python : 2.7.15cocos2dx 源码下载地址:https://cocos2d-x.org/downloadpython 下载地址:ht...

2019-05-20 18:45:14 310

原创 Android FFmpeg4.0编译

交叉编译FFmpeg4.1环境介绍:Mac :macos high sierra 10.13.6Ndk:android-ndk-r10ffmpeg 版本为4.1源码地址:git clone https://github.com/FFmpeg/FFmpeg.git (注意需要获取Release版本,不然中途会报错)交叉编译脚本:#!/bin/shPRE...

2019-05-16 22:15:46 424

原创 Android 组件化实践

项目地址:https://github.com/xiongliang120/ComponentPratice组件化结构图组件化实施流程 组件模式和集成模式的转换 组件AndroidMainfest.xml 合并的问题 动态配置Applicaiton 组件引入library 冲突问题 组件间通信,集成Arouter ...

2019-05-11 10:29:17 264

原创 git 使用命令

做Android 开发,一直使用android studio 自带的操作去操作git, 最近公司需要使用VS Code 去开发,涉及团队协作,正好借这个机会深入了解下Git 命令。在Windows上使用Git,可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项安装即可。安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口...

2019-05-05 23:13:02 121

原创 ListView在不刷新整个界面下,单独更新item

大家有没有遇到过在不刷新listview,即调用notifyDataSetChanged()的情况下单独更新item.下面带大家按照google采用的方式单独更新item代码如下:MainActivitypublic class MainActivity extends Activity implements OnItemClickListener{    ArrayList li

2015-08-21 19:33:02 2744

原创 onSavedInstanceState()和onRestoreInstanceState()理解

大家遇到过这样的问题没: 当我在main.xml中定义EditText 控件,当我在该EditText中输入值,接着翻转屏幕时,我输入的内容清空了,但是当我给EditText定义了id属性,再执行上诉操作时,EditText的内容仍然存在。今天想解释下,为什么会出现这样的情况:如下的activity生命周期图onSavedInstanceState()和onRestoreI

2015-08-16 19:37:47 12034

原创 Android事件分发详解

这几天了解android的事件分发机制,有了一点感触记录下来:下面是我参考的网址:http://blog.csdn.net/guolin_blog/article/details/9097463#replyhttp://v.youku.com/v_show/id_XODQ1MjI2MDQ0.html个人感觉第一篇写的挺好的,但是还有些不足,我在他的基础上进行补充,大家可以看下他的博

2015-08-02 16:08:19 458

原创 红米手机调试android应用打不开data文件

红米手机调试android应用打不开data文件

2015-01-23 14:34:37 5752

原创 红米手机调试android应用出现问题汇总

红米手机调试androdi应用问题汇总

2015-01-23 11:30:37 2008

原创 andorid中基于回调事件传播返回true与false的区别

明天 接着写。

2014-09-18 23:26:45 1079

转载 android中霍夫变换检测圆

图像处理之霍夫变换圆检测算法之前写过一篇文章讲述霍夫变换原理与利用霍夫变换检测直线, 结果发现访问量还是蛮多,有点超出我的意料,很多人都留言说代码写得不好,没有注释,结构也不是很清晰,所以我萌发了再写一篇,介绍霍夫变换圆检测算法,同时也尽量的加上详细的注释,介绍代码结构.让更多的人能够读懂与理解.一:霍夫变换检测圆的数学原理根据极坐标,圆上任意一点的坐标可以表示

2014-09-18 17:22:34 2170

转载 andorid中使用霍夫变换检测直线

图像处理之霍夫变换(直线检测算法)霍夫变换是图像变换中的经典手段之一,主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等)。霍夫变换寻找直线与圆的方法相比与其它方法可以更好的减少噪声干扰。经典的霍夫变换常用来检测直线,圆,椭圆等。 霍夫变换算法思想:以直线检测为例,每个像素坐标点经过变换都变成都直线特质有贡献的统一度量,一个简单的例子如下:一条直线在图

2014-09-18 17:19:38 960

原创 roberts算子完成边缘检测及边缘锐化

roberts算子分为x方向梯度算子和y方向梯度算子

2014-09-17 10:41:48 9388 1

Rxjava 原理图.png

RxJava2 分析 ,RxJava2 流程图,

2019-09-26

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除