Android

使用 Jenkins 构建 Android 应用

本文介绍了在 Linux 上配置 Jenkins 构建 Android 应用的方法。下面的说明中,假定已安装 Jenkins,并具有 root 权限。 1. 下载并配置 Android SDK 1.1. 下载 Android SDK 在本文的示例中,会把 Android SDK 下载到 /opt/android-sdk 目录,可以根据需要修改。首先在 /opt 下建立 android-sdk 目录…
Read more

Android RadioGroup 源码分析

  Android 的 RadioGroup 可用于容纳 RadioButton,并为其中的 RadioButton 提供统一的行为管理(选中/取消选中)和事件监听(OnCheckedChangeListener)。RadioGroup 可以很方便地管理 RadioButton,但也仅限于 RadioButton,RadioGroup 无法为其他 View 提供类似的功能。   最近在做一个类似 …
Read more

使用 Apktool 逆向 Android APK

Apktool 是对 smali/baksmali 的一个封装,smali 和 baksmali 可以看做是 Android 的 assembler 和 disassembler,Apktool 在其基础上提供了更便捷的使用方法。 1. 建立测试工程   首先来建立一个测试工程。新建一个 Android APP 工程,只包含一个 TextView,在 MainActivity 中创建一个名为 na…
Read more

去除 Android API Level 21 及以上 Button 的点击效果

  Android 提供的 Button 默认带有点击效果,在 API Level 21 及以上,即使单独设置了 background,点击按钮时仍会有一个类似上浮的效果。可以通过使用 Widget.AppCompat.Button.Borderless 的 style 来去除点击效果,如:

  Widget.AppCompat.B…
Read more

Android工程中同名属性冲突的问题和解决方法

  最近的一个 Lib 被提了一个属性冲突的 Issue,大意是在和其他 Lib 同时使用时,两个 Lib 定义了相同名称的属性,导致冲突。找来冲突的 Lib 试了一下,并没有复现,根据这个 Issue,Build tools 24.0.1 进行了部分修复,但相同名称的属性仍有发生冲突的可能性,具体情况整理如下。 1. 建立冲突的情景   创建一个 App,然后通过 File/New/New Mo…
Read more

对Fragment进行依赖注入的时机和方式

  在使用 Dagger2 对 Android 应用进行依赖注入时,有时需要先注入 Activity ,然后 Fragment 从 Activity 中获取被注入的 Component 实例,再对自己(Fragment)进行注入。Fragment 的生命周期和 Activity 不同,注入时需要考虑注入的时机。 1. 在 onCreate() 时注入   Fernando Cejas 在 Tast…
Read more