android开发
文章平均质量分 75
二蛋和他的大花
喜欢电脑,喜欢创新。
展开
-
跟我学企业级flutter项目:手把手教你制作一款低耦合空页面widget
前言如何开发一款易用的,并且可以扩展的空页面呢?那么今天我将带领大家手把手开发一款可扩展的空页面。开发前注意事项1、定义好空页面状态2、可扩展思想(用抽象或基类替代实体)3、抽离出空页面的结构空页面展示开始搭建一、页面分析空页面需要元素有:展示图片展示文案展示刷新按钮页面功能点:文案可自定义图片可自定义按钮可隐藏wiget作用范围:可包裹其他widget不包裹其他widget二、定义状态2.1 几种状态enum EmptyStatus { fai原创 2022-03-21 17:25:39 · 1521 阅读 · 1 评论 -
跟我学企业级flutter项目:如何封装一套易用,可扩展的Hybrid混合开发webview
Flutter作为基础的应用,如果要在flutter 中嵌入webview 去做Hybrid混合开发,咱们就必须要封装一套易用的webview,但网上关于flutter webview的文章极其的少。但的确也有做封装的文章,但是封装手法不够优雅,封装效果不够扩展。于是我打算把我的封装与大家分享,看我如何做到高扩展,高易用性。原创 2022-03-16 20:01:07 · 2694 阅读 · 0 评论 -
跟我学企业级flutter项目:如何用dio封装一套企业级可扩展高效的网络层
前言网上有很多,比如说“Flutter Dio 亲妈级别封装教程”这篇文章,该文章上有几点问题:重试机制代码错误token存取耦合很高网络请求只能针对单一地址进行访问网络请求缓存机制也不是很完美。一旦依照这样的封装去做,那么项目后期的扩展性和易用性会有一定的阻碍,那么如何做到token存取无耦合,而且还能让app多种网络地址一同请求,还可以做到针对不同请求不同超时时长处理,网络缓存还加入可自动清理的lru算法呢?那么今天这篇文章为你揭晓企业级flutter dio网络层封装。搭建前夕准备原创 2022-02-28 16:20:23 · 4110 阅读 · 9 评论 -
庖丁解牛:Android stuido中 git 操作详解
前言在开发flutter或android项目,选择用Android stuido是比较方便的,在git的可视化使用上,Android studio已经非常方便了,但是还是有很多的小伙伴,依旧用其他工具来管理git。那么今天我就来详细的介绍一下 Android stuido的git使用与操作。一、基本认知工作区项目目录下的文件可以称之为工作区暂存区添加文件git的基本使用是add到暂缓区,commit到本地仓库,push到远程仓库。...原创 2022-02-23 17:00:38 · 2751 阅读 · 0 评论 -
基于FakerAndroid的一次il2cpp游戏逆向精修实录!!!零汇编零二进制纯编码实现
~~~格式优化整理~~~1、下载FakerAndroid工具包下载地址:https://github.com/Efaker/FakerAndroid/releases2、cmd切换到FakerAndroid.jar平级目录[工具包和要操作的Apk][工具包目录]3、执行 java -jar FakerAndroid.jar fk <apkpath>生成AndroidStudio工程[执行命令][等待命令执行完成]4、查看Apk平级目录下面生成的AndroidStudio工程[查看原安转载 2021-06-09 11:42:18 · 2443 阅读 · 6 评论 -
Android 逆向新方式:FakerAndroid
FakerAndroidA tool translate apk file to common android project and support so hook and include il2cpp c++ scaffolding when apk is a il2cpp game apk简介优雅地在一个Apk上写代码直接将Apk文件转换为可以进行二次开发的Android项目的工具,支持so hook,对于il2cpp的游戏apk直接生成il2cpp c++脚手架将痛苦的逆向环境,转化为舒转载 2021-06-09 11:36:38 · 4925 阅读 · 1 评论 -
java开发模式:状态模式
状态模式中,行为是由状态来决定的,不同状态下有不同行为。举个例子把,比如电视,电视有2个状态,一个是开机,一个是关机,开机时可以切换频道,关机时切换频道不做任何响应。public interface TvState{ public void nextChannerl(); public void prevChannerl(); public void turnUp(); ...原创 2018-05-03 11:31:29 · 506 阅读 · 0 评论 -
java设计模式:原型模式
定义用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。优点Java 自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良。可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份,并将其状态保存起来,简化了创建对象的过程,以便在需要的时候使用(例如恢复到历史某一状态),可辅助实现撤销操作。缺点需要为每一个类都配置一个 clone原创 2021-04-21 13:41:11 · 187 阅读 · 0 评论 -
java设计模式:抽象工厂模式
定义是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。使用抽象工厂模式一般要满足以下条件。系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。系统一次只可能消费其中某一族产品,即同族的产品一起使用。优点抽象工厂模式除了具有工厂方法模式的优点外,其他主要优点如下。可以在类的内部对产品族中相原创 2021-04-21 10:23:41 · 203 阅读 · 0 评论 -
java 设计模式:简单工厂
工厂模式的定义定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。简单工厂如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”。简单工厂通常为静态方法,因此又叫静态工厂方法模式优点:工厂类包含必要的逻辑判断,可以决定在什么时候创建哪一个产品的实例。客户端可以免除直接创建产品对象的职责,很方便的创建出相应的产品。工厂和产品的职责区分明确。客户端无需知道所创建具体产品的类名,只需知道参数即可。原创 2021-04-20 11:49:37 · 205 阅读 · 0 评论 -
Android 简单跳转页面工具
事情起源activity 或者 fragment 每次跳转传值的时候,你是不是都很厌烦那种,参数传递。如下例子:Bundle bundle = new Bundle(); bundle.putString("MyString", "test bundle"); bundle.putParcelable("MyData", new ParcelableData()); intent.putExtras(bundle); startActivity(intent); 接原创 2021-03-15 15:06:25 · 2914 阅读 · 8 评论 -
Kotlin 条件控制
Kotlin 条件控制IF 表达式一个 if 语句包含一个布尔表达式和一条或多条语句。// 传统用法var max = a if (a < b) max = b// 使用 else var max: Intif (a > b) { max = a} else { max = b} // 作为表达式val max = if (a > b) a ...转载 2018-04-25 16:10:10 · 237 阅读 · 0 评论 -
Kotlin 基本数据类型
Kotlin 基本数据类型Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于Java的是,字符不属于数值类型,是一个独立的数据类型。类型位宽度Double64Float32Long64Int32Short16Byte8字面常量下面是所有类型的字面常量:十进制:123长整型以大写的 L 结尾:123L16 进制以 0x 开头:0x0F2 进...转载 2018-04-25 15:09:31 · 330 阅读 · 2 评论 -
Kotlin 基础语法
Kotlin 基础语法Kotlin 文件以 .kt 为后缀。包声明代码文件的开头一般为包的声明:package com.runoob.mainimport java.util.*fun test() {}class Runoob {}kotlin源文件不需要相匹配的目录和包,源文件可以放在任何文件目录。以上例中 test() 的全名是 com.runoob.main.test、Runoo...转载 2018-04-25 14:30:56 · 274 阅读 · 0 评论 -
WinMerge Android 项目过滤器使用方法
1、对比Android项目直接打开需要对比的Android 项目,选择过滤器2、规则说明f: <正则表达式> 表示过滤文件名,如果正则表达工要过滤“.”,则前面要加 \ 转义d: <正则表达式> 表示过滤目录## 表示注释3、过滤例子(1)f: \.bak$ 过滤所有.bak的文件名(2)f: ^1.txt$ 过滤文件名1.txt ...原创 2018-04-09 10:37:18 · 490 阅读 · 0 评论 -
android 逆向工程-语言篇 Smali(三)
数据类型B---byteC---charD---doubleF---floatI---intJ---longS---shortV---voidZ---boolean[XXX---arrayLxxx/yyy---object基本语法.field private isFlag:z定义变量.method方法.parameter方法参数.prologue方法开始.line 12此方法位于第12行invok...原创 2018-03-26 18:07:23 · 636 阅读 · 2 评论 -
android 逆向工程-工具篇 apktool(二)
注:java环境自行安装apktool 下载Apktool运行apk文件 F:\apktools\demo.apk导出目录 F:\apktools\demo解包执行java -jar apktool.jar d -f F:\apktools\demo.apk -o F:\apktools\demo结果assets(未被编译) assets文件res(未被编译) res文件smali(被编译) sm...原创 2018-03-26 16:08:16 · 368 阅读 · 0 评论 -
android打包,用户渠道,分享apk可以知道某个用户分享的
注:分享链接就是打包过程目前很多公司通过发送一个分享链接来分享软件,分享链接里包含某个分享用户的信息,只要新用户在html中注册这个自己的信息就可以,给分享用户一个福利。 为了能够快速的分享apk,统计用户分享了多少,统计用户注册了多少,能真正的获取实实在在的分享数据,即用喔开发的这个jar包,就能打包出需求的应用。首先配置文件。需要统计的android项目配置 修改app目录下gradle.原创 2017-11-02 22:14:16 · 1375 阅读 · 0 评论 -
android通过用户打包,分享apk可以知道某个用户分享的
目前很多公司通过发送一个分享链接来分享软件,分享链接里包含某个分享用户的信息,只要新用户在html中注册这个自己的信息就可以,给分享用户一个福利,如果用我开发的这个jar包,则直接在apk里就能获取谁分享的。减少html页面制作。需要统计的android项目配置 修改app目录下gradle.build 修改如下配置 buildTypes 中 release 和 debug 配置 build原创 2017-11-02 13:36:50 · 1177 阅读 · 0 评论 -
android 框架Dileber :项目实践
dileber android 框架:乁( ˙Ω˙ )厂 跳转链接 dileber android框架 怎么说呢?既然看到了就在github上star一下呗 (´ཀ`」 ∠)最近我将一个用dileber 项目开发的示例软件提交到github上: myshop软件 采用mvp模式开发项目 该项目使用了框架中的网络请求cookies 使用自动判断cookies失效日志打印系统字体图标原创 2017-06-23 16:23:15 · 417 阅读 · 0 评论 -
android开发:ExifInterface 介绍
在Android多媒体开发中,ExifInterface(exif exchangeable image file) ,这个接口提供了图片文件的旋转,gps,时间等信息。/** * 获取正常角度的图片 * @param path * @param srcBitmap * @return */ public static Bitmap rota原创 2017-02-22 14:32:12 · 997 阅读 · 0 评论 -
android开发:屏幕点亮与屏幕取消点亮
//设置窗体始终点亮getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//取消窗体始终点亮getWindow().setFlags(0, WindowManager.LayoutParams.FLAG_KE原创 2017-02-14 12:00:21 · 517 阅读 · 0 评论 -
android开发:创建动态drawable
如何创建一个动态的drawable 首先得有几组图片 创建drawable<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item andro原创 2017-02-13 15:54:51 · 2865 阅读 · 0 评论 -
Android 框架Dileber :四、SelectDialog的使用
框架地址 dileber android框架 希望大家能多多star一下 selectDialog 可以添加多个选择内容展示效果如下 上图是用dileber架构的im即时聊天系统,当前的操作为长按出现选择菜单。 菜单的使用方法,首先创建一个model IMessageSelectModel 继承自 SelectModelclass IMessageSelectModel extends原创 2017-02-25 12:29:17 · 1272 阅读 · 0 评论 -
android 框架Dileber :五,提供一套免费使用的图标库,超级棒的工具
dileber android 框架:乁( ˙Ω˙ )厂 跳转链接 dileber android框架 最近我在这套框架里添加了只有”98KB” 的高清图标库,免费使用。非常不错的图标库,简单实用方便快捷。 展示所有图标如下图: 使用实例(非常简单的用户等级设计,用了dileber框架,设计等级星星展示,一句话代码就可以了,so easy): 代码使用: 如果不懂dileber框架的原创 2017-04-08 17:49:19 · 789 阅读 · 0 评论 -
Android 框架Dileber :三、HJson,HNetwork,HSafe的使用
框架地址 dileber android框架 希望大家能多多star一下HJson 是将gson做了单例,来使用。对服务器传来的long值进行转为date有几个方法 toJson() fromJson() 和gson方法一样,还有一些,转为list 和map 的方法,里面都有,可以看注释HNetwork 对当前网络状态进行判断 //判断当前网络是否已经连接 checkNetwork()原创 2017-04-08 17:56:06 · 599 阅读 · 0 评论 -
android 开发:fragment 和 activity通信
dileber android 框架:乁( ˙Ω˙ )厂 跳转链接 dileber android框架 怎么说呢?既然看到了就在github上star一下呗 (´ཀ`」 ∠)fragment中设置监听器 dileber框架中的BaseFragment有一个监听器如下protected OnBaseInteractionListener mBaseListener; public int原创 2017-04-13 11:34:40 · 598 阅读 · 0 评论 -
一 dileber代码讲解、activity基类
dileber android 框架:乁( ˙Ω˙ )厂 跳转链接 dileber android框架 怎么说呢?既然看到了就在github上star一下呗 (´ཀ`」 ∠)dileber官方网站 (戳这里dileber.dreamsoso.com)dileber 安卓框架一共提供了2个activity基础类,分别是BaseActivity,UBaseActivityBaseActivity(原创 2017-05-09 23:22:02 · 438 阅读 · 0 评论 -
Kotlin 循环控制
Kotlin 循环控制For 循环for 循环可以对任何提供迭代器(iterator)的对象进行遍历,语法如下:for (item in collection) print(item)循环体可以是一个代码块:for (item: Int in ints) { // ……}如上所述,for 可以循环遍历任何提供了迭代器的对象。如果你想要通过索引遍历一个数组或者一个 list,你可以这么做:...转载 2018-04-25 16:16:58 · 334 阅读 · 0 评论 -
Kotlin 类和对象
Kotlin 类和对象类定义Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。Kotlin 中使用关键字 class 声明类,后面紧跟类名:class Runoob { // 类名为 Runoob // 大括号内是类体构成}我们也可以定义一个空类:class Empty可以在类中定义成员函数:class Runoob() { fun foo() {...转载 2018-04-25 16:25:51 · 218 阅读 · 0 评论 -
java 设计模式:责任链模式与Android事件传递
1、概念是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止。2、使用场景有多个对象可以处理同一个请求,具体哪个对象处理该请求待运行时刻再确定 在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 可动态制定一组对象处理请求,客户端可以动态创建职责链来处理请求。3、uml结构...原创 2019-05-23 12:14:07 · 457 阅读 · 0 评论 -
探究Android中的注解
常用Annotation:Override重写函数Deprecated函数已经不推荐被使用SuppressWarnings 忽略某项 WarningDocumented 是否会保存到 Javadoc 文档中Target 可以用来修饰哪些程序元素,如 TYPE, METHOD, CONSTRUCTOR, FIELD, PARAMETER 等,未标注则表示可修饰所有Inherite...转载 2019-04-16 16:17:59 · 779 阅读 · 0 评论 -
Andriod开发经验谈:细节优化
一、Android中尽量不要采用静态变量存储关键数据原因:Android APP在运行后,放置在后台,一旦被回收后,再重新打开,app会恢复原有的activity,但是静态变量则会被初始化。Application也会被初始化。建议用文件存储,或者sp,或者contentProivder。二、关于Sharepreference1、sp是不能跨进程同步,不能跨进程读写数据。原...原创 2019-03-29 11:50:53 · 374 阅读 · 0 评论 -
Android 开发经验谈:多线程你了解多少?
i= i+1;如上代码很简单,在单线程中i就等于i+1,执行不会出问题。但是在多线程中就会有问题。在说多线程之前我从别人的博客里摘了一段文字:大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写...原创 2019-04-11 17:34:05 · 267 阅读 · 0 评论 -
Android lint检查
一、什么是Android lint 检查Android lint是一个静态代码分析工具,能够对项目中潜在的bug,可优化的代码,安全性,性能,可行性,可访问性,国际化等检查。二、lint工作流程针对我们的项目,通过lint.xml配置lint分析的选项,执行检查后,会针对要分析的issue生成报告。lintTool 把源码和lint.xml配置文件 打包成lint output...原创 2019-04-02 18:31:41 · 5151 阅读 · 0 评论 -
Android 开发经验谈:优化UI,优化卡顿
关于UI卡顿:简单的来说UI卡顿就是,微量级的anr。复杂的来说:原理:60fps ->16ms每秒60帧就能让人看起来不卡顿,也就是说程序的操作必须在16ms内加载完毕。导致卡顿的原因就是,程序页面太过复杂,而在这16ms内没有渲染完毕。在Android中造成卡顿的原因:Android系统每隔16ms会发出信号,就会触发UI渲染,每次渲染成功就会让UI流畅。...原创 2019-03-28 14:29:25 · 497 阅读 · 0 评论 -
Android开发:进程保活
概念:进程在内存中长存,怎么杀也杀不死。就算杀死了还能活起来。咱先了解一下:那咱的应用是怎么死的呢1、被用户主动kill掉2、被一些安全软件kill掉关于进程保活一、Android进程优先级1、Foreground process 前台进程当前用户操作的进程,系统内存足够的话不会回收,如果不足则回收。A. 拥有用户正在交互的 Activity(已调用onR...转载 2019-04-01 16:34:16 · 319 阅读 · 0 评论 -
Android 经验谈:从retrofit来学动态代理
个人感觉,retrofit中的动态代理比较典型,我就拿出来解读一下:先来阅读一下retrofit 的源码,看retrofit怎么来实现动态代理ApiService apiService = retrofit.create(ApiService.class);public <T> T create(final Class<T> service) { Ut...原创 2019-03-18 16:59:31 · 473 阅读 · 0 评论 -
Android开发经验谈:并发编程(线程与线程池)
一、线程在Android开发中,你不可能都在主线程中开发,毕竟要联网,下载数据,保存数据等操作,当然这就离不开线程。(当然你可以在Android4.0以前的手机里在主线程请求网络,我最早开发的时候,用的手机比较古老。。。)在Android中你可以随意创建线程,于是就会造成线程不可控,内存泄漏,创建线程消耗资源,线程太多了消耗资源等问题。具体线程怎么创建我就不在文章里描述了,毕竟这主要将...原创 2019-03-08 10:30:12 · 341 阅读 · 0 评论 -
android开发经验谈:你到底有多了解handler
记早年的一次面试:面试官:说说你对Handler的了解?我:new 一个handler,然后在某个线程里发送message,在handler的handleMessage里接收message,message不要new 用Message.obtain()获取池子里的,来避免新建。面试官:就这么多了么?我:。。。。。。。。。。。。。。。。。以前我对handler的理解很薄,在开发...原创 2019-03-01 15:30:12 · 284 阅读 · 0 评论