- 博客(63)
- 资源 (49)
- 收藏
- 关注

原创 Android项目快速开发集成框架
EasyFrame — Android快速集成开发框架(欢迎star)EasyFrame简介EasyFrame是一个Android开发的工具集合框架,一句代码集成到你项目中,该集成了一个开发app常使用的工具,包含有 网络请求,常用的工具类,日志输出,加载界面的状态,权限管理等,RecyclerView集成等 具体详情请看下面的介绍。详细文档请前往wiki特性EasyFrame主要有这些功能:[
2017-10-28 11:38:09
1157
2

原创 Android 持续搜集关于Android使用工具
以下各种使用工具纯属个人搜集使用,再此自己做个记录。我也不想单独写自己会的,因为网上的大神们都写得很详细, 也感谢他们的无私精神!在这里我只是把这些都搜集起来,做他们的搬运工吧!希望也能帮得上正在使用这些工具的人。 这篇文章会慢慢的增加,如果其中有一些没提到的,也希望大家给我留言并加上链接地址,让大家共同的学习、成长! GITHUB1.作者: paul_hch 简单的注册创建项目2.作者:
2017-09-19 16:54:17
578

原创 Android jousp爬虫项目
好久没写博客了,这几个月比较忙,公司的项目改过去改过来都不知道更改了多少版本了。哎!开发者的悲哀。趁最近这段比较闲,就自己写了一个关于养生的应用程序。数据的来源主要是爬取了几个关于养生网的网站,目的也就是为了练习练习jousp爬取网页数据。当然也可以用正则表达式,但是一看到很多的符号有些人又看不懂(当然我也是不怎么明白)。初步认识还是jousp比较简单,缺点就是当网页的层级越多时,你就要查找得多。
2017-07-04 16:11:21
1178

原创 手把手教你用git和SourceTree上传项目到github细解
一.引言我想大家现在都很熟悉github了,也能运用github上开源的项目到自己的项目中。但是我们也很想把自己的一些项目也放到github中开源供大家使用。这2天我就在研究这个东西,也查过很多资料都不是系统的,也走了很多的弯路毕竟一个初学者学习这几个软件,刚开始也不知道这两者有什么联系,纯粹靠自己瞎摸索,终于成功的上传到我的github里,好了闲话少说,干正事了,我会一步一步细解并贴出图片或
2016-10-19 17:08:25
22371
4
原创 android 正序、倒序查找本地文件其中的字符串
正序 fun readTxt(path: String): String { var str = "" var isr: InputStreamReader? = null var br: BufferedReader? = null try { val urlFile = File(path) isr = InputStreamReader
2020-10-27 17:03:29
631
原创 Android 环境配置与常用工具介绍
Android逆向- 环境配置与常用工具介绍1. 在开发语言上,需要能够读懂Java,Smali,C++,arm代码,这是对逆向人员的考验。2. 传统的java语言运行时通过jvm将源文件编译成Java字节码运行,Google开发了一个虚拟机运行Android程序,这个虚拟机就是Dalvik,当晚餐源代码开发后,首先将Java源码转换成字节码,然后通过Dx工具,将字节码文件转换成.dex文件,...
2020-09-24 09:40:05
317
原创 Caused by: java.lang.IllegalStateException: Cannot pool recycled bitmap
Caused by: java.lang.IllegalStateException: Cannot pool recycled bitmapat com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool.put(LruBitmapPool.java:108)at com.bumptech.glide.load.resource.bitmap.BitmapResource.recycle(BitmapResource.java:57)at
2020-07-02 14:20:17
1667
1
原创 Android 逆向代码调试及smali文件结构
Smali语法详解apk文件通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件。smali语言是Davlik的寄存器语言,语法上和汇编语言相似,Dalvik VM与JVM的最大的区别之一就是Dalvik VM是基于寄存器的。基于寄存器的意思是,在smali里的所有操作都必须经过寄存器来进行。寄存器是什么在smali所有的操作都必须经过寄存器来进行:...
2020-04-15 21:50:13
2057
原创 Android 逆向环境配置与常用工具介绍
Android逆向- 环境配置与常用工具介绍1. 在开发语言上,需要能够读懂Java,Smali,C++,arm代码,这是对逆向人员的考验。2. 传统的java语言运行时通过jvm将源文件编译成Java字节码运行,Google开发了一个虚拟机运行Android程序,这个虚拟机就是Dalvik,当晚餐源代码开发后,首先将Java源码转换成字节码,然后通过Dx工具,将字节码文件转换成.dex文件,...
2020-04-15 21:48:28
440
原创 微信登录 api.handleIntent(intent, this)返回false
纯属记录发生的问题,算是很小的问题,稍不注意还是容易查找半天。如果在微信登录WXEntryActivity界面中的api.handleIntent(intent, this)一直返回false,大家应该都把集成微信仔细检查了几遍还是找不出问题原因。那就不应该是微信本身的问题而是你当前这个类自己写的代码有错误或者漏写。。查找问题:在logcat中选择Error,筛选MicroMsg.SDK.WX...
2020-03-20 15:34:13
1216
原创 Kotlin异常
java异常与kotlin异常处理详解kotlin中的try是个表达式,是没有checked exception的。。是运行时异常fun main(args: Array<String>) { val a="1" val result:Int?=try{ a.toInt() }catch (ex:NumberFormatException){...
2020-03-04 22:56:13
227
原创 星投影
kotlin星投影详解(star projection)class Star<out T>{}class Star2<in T>{ fun setValue(t:T){ }}class Star3<T>(private var t:T){ fun setValue(t:T){ } fun getValue():...
2020-03-04 22:54:05
479
原创 Kotlin协变与逆变
kotlin的协变(out)与逆变(in)详解关于协变与逆变的来源Java中List<String> list =new ArrayList()List<Object> list2=list //编译失败list2.add(new Date()) //list2可以增加进来是object对象interface Collection<E>{ ...
2020-03-04 22:52:26
441
原创 java与kotlin互调
Java与Koltin互调fun main(args: Array<String>) { val list=ArrayList<String>() list.add("hello") list.add("world") list.add("hello world") for (item in list){ print...
2020-03-04 22:46:07
398
原创 关键字组合详解
关键字(lateinit)详解lateinit(延迟初始化)延迟初始化属性:Kotlin要求非空类型的属性必须要在构造方法中进行初始化。有时这种要求不太方便,比如可以通过依赖注入或是单元测试情况下进行属性的赋值。通过lateinit关键字满足以下条件lateinit只能用在类体中声明的var属性上,不能用在primary constructor声明的属性上属性不能拥有自定义的set...
2020-03-04 22:45:03
921
原创 Kotlin集合
Kotlin中的可变集合与不可变集合详解可变集合:map使用fun main(args: Array<String>) { val map = mapOf<String, String>("a" to "aa", "b" to "bb") for ((key, value) in map) { println("key:$key,valu...
2020-03-04 22:34:45
351
原创 高阶函数与lambda表达式
高阶函数与lambda表达式Lambda表达式格式要求:一个lambda表达式总是被一对花括号所包围。其参数(如果有的话)位于->之前(参数类型是可以省略的)执行体位于 —>之后val multiply: (Int, Int) -> Int = { a, b -> a * b } //multiply变量接收2个Int参数,并返回一个Int参数,在{}中执行方...
2020-03-04 22:31:31
441
原创 Kotlin委托详解
Kotlin 的类委托及委托属性详解类委托属性委托by延迟属性(lazy)-可观测属性(Observable)-非空属性(Delegate.notnull)-map属性(Map<String, Any?>)-提供委托(provideDelegate )类委托class MyDelegation{ operat...
2020-03-04 22:30:54
452
原创 Kotlin数据类详解
数据类(data class)数据类需要满足以下要求:主构造函数至少有一个参数所有的主构造方法参数都需要被标记为val或者var数据类不能是抽象的、open的、sealed的以及inner的。对于数据类,编译器会自动生成如下内容:equals/hashcodetoString()方法,形成为Person(name=…,age=…,address=…)针对属性的componen...
2020-03-04 22:29:52
565
原创 嵌套类与内部类
嵌套类与内部类详解嵌套类(Nested Class)嵌套类不能访问外部类其他成员,只能访问另外一个嵌套类。例:class OuterClass{ prvate val str:String="hello world" class NestedClass{ fun nestedMethod()="welcme" fun nestedMeth...
2020-03-04 22:29:27
632
原创 Kotlin枚举类详解
枚举类详解每个枚举常量都是一个对象。枚举常量用逗号分隔。因为每一个枚举都是枚举类的实例enum class Season{ SPRING,SUMMER,AUTUMN,WINTER}enum class Season2(val temperature:Int){ SPRING(10),SUMMER(10),AUTUMN(10),WINTER(-10) //每个枚举常量都是一...
2020-03-04 22:28:02
1105
原创 Kotlin对象表达式
对象表达式(Object expression),对象声明,伴生对象(companion object)详解对象表达式(Object expression)Java当中匿名内部类在很多场景下大量使用。Kotlin的对象表达式就是为了解决匿名内部类的一些缺陷而产生的。匿名内部类是没有名字的类匿名内部类一定是继承了某个父类,或是实现了某个接口Java运行时将该匿名内部类当做它所实现的接...
2020-03-04 22:24:47
779
原创 Kotlin扩展详解
kotlin的扩展详解扩展函数class ExtensionTest{ //扩展接收者类 fun add(a:Int,b:Int)=a+b}fun ExtensionTest.substract(a:Int,b:Int)=a-b //扩展函数fun main(args: Array<String>) { val extensionTest=ExtensionT...
2020-03-04 22:24:10
718
原创 Kotlin继承
Kotlin 继承在kotlin中,所有类在默认情况下都是无法被继承的,所有类默认情况下都是final的,如需该类被继承加open关键字,方法需被重写也要加open关键字。包括属性重写open class Parent(name: String, age: Int) {}class Child(name: String, age: Int) : Parent(name, age) {}...
2020-03-04 22:23:40
375
原创 kotlin 函数以及作用域函数
kotlin 函数详解构造方法在Kotlin中,一个类可以有一个primary构造方法以及一个或多个Secondary构造方法,primary构造方法是类头(class header)的一部分,它位于类名后面,可以拥有若干参数,如果primary构造方法没有任何注解或是可见性关键字修饰,那么construction关键字可省略。class Myclass constructor(user...
2020-03-04 22:21:48
617
原创 android逆向分析常用命令归纳
adb的常用命令adb devices 设备连接。adb version adb的版本。adb start-server。设备开始服务adb wait-for-device 等待设备连接成功。adb -s get-state 获取设备的连接状态如:adb -s 99eb07a9 get-stat 。adb get-serialno 获取连接到的手机的序列号。adb kill-ser...
2019-09-30 10:36:50
309
原创 Error Launching activity:Activity class {com.xxx/com.xxx.MainActivity} does not.
记录这篇报错的笔记,我顶着很大的压力。前思后想,为了警示以后不犯类似错误,最后一咬牙一狠心一跺脚,写出来共勉。供大家在发现错误的时候能及时改正并不浪费时间,,知道码农的时间很宝贵的哈。。。检查在AndroidManifest.xml文件中查看主Activity的名字前是否有’.'符号。就是路径名是否正确点击能否跳进你的MainActivity。这个一般都不会错,可以忽略。检查app的buil...
2019-08-14 13:24:54
2927
2
原创 Android数据库OrmLite、LitePal、GreenDao的区别
在以前的项目中用过数据储存第三方库,我觉得有必要记下来供大家参考学习下,有可能还有很多人在面对项目中要使用数据存储时还不知道该具体使用哪个三方库,以下介绍三种开源的Android数据库框架,当看了这篇文章后大家可以明确的使用哪个库更适合运用在项目中。What is ORM?对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一...
2019-04-26 10:33:14
2354
原创 android 数据库GreenDao的详细用法
Android几种常用存储数据库的区别,想查看的朋友请移步前言使用GreenDao主要有几大核心的类:1.DaoMaster:它保存了sqlitedatabase对象以及操作DAO classes。其提供了一些创建和删除table的静态方法,其内部类OpenHelper和DevOpenHelper实现了SQLiteOpenHelper并创建数据库的框架。2.DaoSession:会话层。操...
2019-04-26 10:29:17
1864
原创 C语言预处理命令总结
以#号开头的命令称为预处理命令。包含标准库的头文件建议用尖括号,包含自定义的头文件建议用双引号。如:#include <stdio.h>#include "myHeader.h"宏定义是预处理命令的一种,它允许用一个标识符来表示一个字符串。宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的替换。字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不
2017-12-05 14:32:42
2312
原创 C语言指针总结
指针(Pointer)就是内存的地址,C语言允许用一个变量来存放指针,这种变量称为指针变量。指针变量可以存放基本类型数据的地址,也可以存放数组、函数以及其他指针变量的地址。程序在运行过程中需要的是数据和指令的地址,变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符:在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址;程序被
2017-12-05 14:30:15
818
原创 线程之间的通信
接着上一篇继续看,这篇主要讲线程之间的通信,如果没看之前的请点击多线程详解,线程的同步,先看几个方法:wait()与notify()和notifyAll() wait():当前线程挂起并放弃CPU、同步资源,让别的线程可以访问并修改共享资源,而当前线程排队等候再次对资源访问。notify():唤醒正在排队等待同步资源的线程中优先级最高者结束等待。notifyAll():唤醒正在排队等待资源的
2017-10-26 10:13:50
650
原创 线程的同步
如果有读者看了上一篇文章的栗子会出现线程安全的问题,如果还没有看上篇请点击多线程详解,这一篇是承接上一篇接着讲的。 那为什么会出现线程安全问题呢?原因是:由于一个线程在操作共享数据过程中,未执行完毕的情况下,另外的线程参与进来了,导致共享数据存在了安全问题。解决的办法:必须让一个线程操作共享数据完毕后,其它线程才有机会参与共享数据的操作。这就出现了线程的同步机制。同步代码块 synchroni
2017-10-26 10:11:57
435
原创 多线程详解
基本概念程序:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程:是程序的一次执行过程,或是正在运行的一个程序。动态过程:有它自身的产生、存在和消亡的过程。如:window任务管理器进程中的运行的360安全卫士、运行中的QQ音乐。程序是静态的,进程则是动态的。线程:进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个程序可同一时间执行多个线程,就是支
2017-10-26 10:03:51
426
原创 Android 朋友圈九宫格展示图片
现在有很多列表都会展示图片,有的像社交软件似的九宫格,然而我这个是当图片是一张时,就会显示一张,2张时会平铺,大于3张就会像九宫格那样。当然这里你也可以设置一排显示多少张。其中也有点击放大图片。 效果图 列数 图片 一列 二列 三列 其它 联系方式 方法 方法名 描述 setIsClick(boolean isclick) 是否点击监听
2017-09-19 17:14:57
5875
2
原创 Found libBaiduMapSDK_base_v4_3_0.so error
No implementation found for int com.baidu.platform.comjni.engine.JNIEngine.initClass(java.lang.Object, int) (tried Java_com_baidu_platform_comjni_engine_JNIEngine_initClass and Java_com_baidu_platfo
2017-04-18 10:07:32
10889
4
原创 手把手教你android studio terminal 命令获取SHA1和MD5、SHA256值
在开发项目时,我们会获取项目的SHA1值或者MD5来作为第三方集成需要的值。而我们集成的时候又有开发版和发布版,这就需要我们获取2个不同的SHA1值等。现在我就用android studio中的terminal输入命令来获取。如果有些android studio没装terminal插件的,那就依次打开File->settings->Plugins->Browse repositories...
2017-04-06 16:52:46
13492
原创 C语言中%d,%s,%x,%f,%.100f,%的意思
格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。 格式字符有d,o,x,u,c,s,f,e,g等。 如%d整型输出,%ld长整型输出,%o以八进制数形式输出整数,%x以十六进制数形式输出整数,%u以十进制数输出unsigned型数据(无符号数)。注意:%d与%u有无符号的数值范围,也就是极限的值,不然
2017-02-13 11:04:26
458782
18
Ripple是一个类似雷达搜索引擎,波纹很好看
2016-06-08
androidx viewpager 源码把EFAULT_OFFSCREEN_PAGES 改为0
2020-09-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人