Skip to content

Instantly share code, notes, and snippets.


Daniel Lew dlew

View GitHub Profile
dlew /
Created Nov 9, 2018
Simple AndroidX Migration Script
#!/usr/bin/env bash
# I've found that the "Migrate to AndroidX" converter in Android Studio doesn't work very
# well, so I wrote my own script to do the simple job of converting package names.
# You can download a CSV of package names here:
# It'll run faster on a clean build because then there are fewer files to scan over.
# Uses `gsed` because I'm on a Mac. Can easily replace with `sed` if you don't have `gsed`.
dlew / thing.kt
Last active Jan 31, 2021
Gson -> Moshi name snafu detector
View thing.kt
fun verifySerializedNameMatchesJsonName() {
// Reflections library
.flatMap { clz ->
// FieldUtils is in Apache Commons
FieldUtils.getAllFieldsList(clz).filter { !Modifier.isStatic(it.modifiers) }
.forEach { field ->
val serializedNameAnnotation = field.declaredAnnotations.find { it is SerializedName } as? SerializedName
dlew / themes-debug.xml
Last active Aug 1, 2020
With the new theming in AppCompat, a lot of assets are tinted automatically for you via theme attributes. That has often led me to wonder "where the hell did this color come from?" You can replace your normal theme with this debug theme to help figure out the source of that color.
View themes-debug.xml
<!-- You can change the parent around to whatever you normally use -->
<style name="DebugColors" parent="Theme.AppCompat">
<!-- System colors -->
<item name="android:windowBackground">@color/__debugWindowBackground</item>
<item name="android:colorPressedHighlight">#FF4400</item>
<item name="android:colorLongPressedHighlight">#FF0044</item>
<item name="android:colorFocusedHighlight">#44FF00</item>
<item name="android:colorActivatedHighlight">#00FF44</item>
dlew / build.gradle
Last active Sep 11, 2019
Sample for Crashlytics
View build.gradle
// Follow the five numbered instructions for setting up Crashlytics
buildscript {
repositories {
maven { url '' }
// 1. Add the Crashlytics Maven repository to your build script.
maven { url '' }
dependencies {

Keybase proof

I hereby claim:

  • I am dlew on github.
  • I am danlew ( on keybase.
  • I have a public key ASD8v3oTeKIyAZP1WwjzP1Wxej0F_V6CqXZOdQ9A61iewAo

To claim this, I am signing this object:

dlew / gist:3100299
Created Jul 12, 2012
Easier findVewById()
View gist:3100299
public static <T extends View> T findView(Activity activity, int id) {
return (T) activity.findViewById(id);
public static <T extends View> T findView(View view, int id) {
return (T) view.findViewById(id);
View gist:6554307
public class LazyListManagerUtils {
public static <T> List<T> add(List<T> list, T item) {
if (list == null) {
list = new ArrayList<T>();
else if (!list.contains(item)) {
dlew /
Created Nov 26, 2014
import android.content.Context;
import android.os.Bundle;
import rx.Observable;
import rx.subjects.BehaviorSubject;
import java.util.Map;
dlew / gist:3fee09af5ff946997551
Last active Dec 24, 2017
Android library artifact tasks
View gist:3fee09af5ff946997551
if ('libraryVariants')) {
android.libraryVariants.all { variant ->
Task javadocTask = task("generate${}Javadoc", type: Javadoc) {
group = 'artifact'
description "Generates Javadoc for $"
// Source files from the variant
source = variant.javaCompiler.source
// Classpath from the variant + android.jar