Johnny Shieh

人如果没有梦想,跟咸鱼有什么分别


  • 首页

  • 分类

  • 归档

  • 标签

  • 读书

  • 小伙伴

  • 关于

  • 搜索

Android ProGuard 代码混淆那些事儿

发表于 2017-08-02 | 分类于 Android | | 阅读次数

Android 开发中为了代码安全一般都会使用 ProGuard 进行代码混淆,它可以把类名、属性名和方法名变为毫无意义的 a, b, c 等,但是有些代码是不需要混淆的,这时需要配置 proguard-rules.pro 文件。这是许多开发者对代码混淆的认识,但是 ProGuard 更深入的内容呢,如何配置混淆规则呢,下面我就分享下 Android 中 ProGuard 那些事。

先敲敲黑板,划下重点:本文内容重点在第三节 – 自定义要保留的代码

ProGuard 简介

ProGuard 官网地址:https://www.guardsquare.com/en/proguard

ProGuard is a Java class file shrinker, optimizer, obfuscator, and preverifier. The shrinking step detects and removes unused classes, fields, methods and attributes. The optimization step analyzes and optimizes the bytecode of the methods. The obfuscation step renames the remaining classes, fields, and methods using short meaningless names. These first steps make the code base smaller, more efficient, and harder to reverse-engineer. The final preverification step adds preverification information to the classes, which is required for Java Micro Edition and for Java 6 and higher.

ProGuard 的功能有四个:压缩、优化、混淆以及预校验。压缩环节会检测并移除无用的类、字段、方法和属性。优化环节会分析并优化方法的字节码。混淆环节会用无意义的短变量去重命名其余的类、字段以及方法。这些环节可以使得代码更精简,更高效,也跟难被逆向工程。预校验是针对 J2ME 和 Java 6 以上的,在 Android 开发中不需要。

阅读全文 »

Kotlin 写 Android 单元测试(二),JUnit 4 测试框架和 kotlin.test 库的使用

发表于 2017-07-12 | 分类于 单元测试 | | 阅读次数

Kotlin 写 Android 单元测试系列文章:

Kotlin 写 Android 单元测试(一),单元测试是什么以及为什么需要

Kotlin 写 Android 单元测试(二),JUnit 4 测试框架和 kotlin.test 库的使用

Kotlin 写 Android 单元测试(三),Mockito mocking 框架的使用

Kotlin 写 Android 单元测试(四),Robolectric 在 JVM 上测试安卓相关代码

未完待续…

上篇文章介绍了单元测试的概念和为什么要使用单元测试,提到当方法的输出结果是直接的返回结果时,可以用 Junit 4 测试框架来测试,这也是 Java 中最基础的测试框架。下面来介绍 JUnit 4 测试框架中的基本概念,以及 Kotlin 中提供的 kotlin.test 库的使用。

JUnit 4 框架

gradle 引入

目前 JUnit 4 的最稳定的版本为 4.12,JUnit 5 还没有正式发布。

1
2
3
4
5
6
7
8
9
dependencies {
testCompile 'junit:junit:4.12'
}
android {
sourceSets {
test.java.srcDirs += 'src/test/kotlin' // 如果不是默认(src/test/java)的话,加上测试代码的路径
}
}

一般运行 Android 项目的测试命令为:

1
./gradle testDebugUnitTest
阅读全文 »

「小狗钱钱」读书笔记

发表于 2017-07-05 | 分类于 读书笔记 | | 阅读次数

在 帅比张 的熏陶下,开始接触投资理财的一些东西,收益匪浅,非常感谢张哥。在张哥的小密圈里,偶然看到有人推荐这本《小狗钱钱》,读完后感触很大,非常适合作为理财的入门书籍。这里把自己阅读这本书时,产生的一些触动和想法记录下来。

下面是文章中提到的人物:

吉娅:书里的小女孩,正在上小学

钱钱:一个会说话的狗

梦想相册与梦想储蓄罐

大部分人都希望自己可以实现财富自由,我也不例外。但是如何去实现这个梦想呢?小狗钱钱对吉娅的第一个要求是,首先列出“你想变得富有的 10 条理由”,然后从中挑选出 3 个最重要的理由,并准备一个相册,贴上与这 3 个梦想相关的图片。这种行为称作‘视觉化’,把普通的文字变成生动的画面。钱钱语录,每一个有所成就的人的成功秘诀就是,还未成功的时候不停地想象着自己实现梦想时的情形。这样可以让自己牢牢记住自己的梦想,每天为梦想做出一点努力。我也常常梦想着未来美好的场景,但是在时间的冲刷下,慢慢变得不清晰,不自觉中被其他琐事或游戏冲淡。所以细细思考后,我发现梦想相册是非常有用的,每天看着梦想相册,可以不断强化自己的愿望,不断补充行动的动力,不断朝着梦想前进。

阅读全文 »

Kotlin 写 Android 单元测试(一),单元测试是什么以及为什么需要

发表于 2017-07-05 | 分类于 单元测试 | | 阅读次数

Kotlin 写 Android 单元测试系列文章:

Kotlin 写 Android 单元测试(一),单元测试是什么以及为什么需要

Kotlin 写 Android 单元测试(二),JUnit 4 测试框架和 kotlin.test 库的使用

Kotlin 写 Android 单元测试(三),Mockito mocking 框架的使用

Kotlin 写 Android 单元测试(四),Robolectric 在 JVM 上测试安卓相关代码

未完待续…

越来越多的开发者开始使用 Kotlin 开发 Android 项目,Kotlin 逐渐成为 Android 开发的第一语言,公司项目中也开始用 Kotlin 写单元测试,在项目中以单元测试作为开始引入 Kotlin 语言的入口是个不错的选择,大家可以尝试下。但是现在网上关于如何使用 Kotlin 语言写单元测试的文档很少,所以写下这个系列文章记录自己使用 Kotlin 写 Android 项目的单元测试的一些经验。

有些人可以对单元测试的概念比较模糊,更多的人则认为单元测试是完全没有必要的,所以下面介绍什么是单元测试以及为什么需要写单元测试。

什么是单元测试

单元测试的定义

在 WiKi 上的定义是:在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。

简单点说就是对程序单元进行测试,在面向过程开发中,一个单元就是一个函数;在面向对象开发中,一个单元就是类的一个方法。

下面使用 Junit 4 中的 Calculator 例子来说明。

阅读全文 »

Java 设计模式之代理模式

发表于 2017-06-29 | 分类于 设计模式 | | 阅读次数

代理模式是开发中非常常见的一种设计模式,属于结构型模式。代理模式的动机简单点说就是,有时不方便或者不能直接访问一个对象时,可以通过一个代理对象来实现间接访问。在现实中有很多类似的例子:不想走那么远去火车站买票,就去近一点的代售点买票。不方便约明星谈合作,就和明星的经纪人谈。没有带现金,于是用手机微信作为代理买单。下面就具体分析代理模式以及动态代理的原理。

代理模式(Proxy Pattern)

定义

给某个对象提供一个代理,并由代理对象控制原对象的引用。属于对象结构型模式。

结构

代理模式主要包括三个角色:

  1. Subject,对象的接口

  2. RealSubject,实际对象

  3. ProxySubject,代理对象,持有实际对象的引用

阅读全文 »
1…567…16
Johnny Shieh

Johnny Shieh

我本微末,心向天空

76 日志
13 分类
43 标签
GitHub Weibo Gmail 简书
  • 热门系列
  • Dagger 完全解析(6)
  • AspectJ in Android(3)
  • Kotlin 写 Android 单元测试(4)
  • Kotlin 协程完全解析(5)
© 2015 - 2019 Johnny Shieh
访客数 访问量