Skip to content

Instantly share code, notes, and snippets.

Daniel Lew dlew

View GitHub Profile
View dependencies.gradle
allprojects {
repositories {
mavenLocal()
maven {
url 'https://plugins.gradle.org/m2/'
}
maven {
url = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
}
View RxValve.java
import java.util.Queue;
import java.util.concurrent.atomic.*;
import rx.*;
import rx.Observable.Operator;
import rx.exceptions.MissingBackpressureException;
import rx.internal.operators.*;
import rx.internal.util.*;
import rx.internal.util.atomic.SpscAtomicArrayQueue;
@pyricau
pyricau / IMMLeaks.java
Last active Apr 9, 2019
"Fix" for InputMethodManager leaking the last focused view: https://code.google.com/p/android/issues/detail?id=171190
View IMMLeaks.java
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.ContextWrapper;
import android.os.Bundle;
import android.os.Looper;
import android.os.MessageQueue;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver;
@jakeouellette
jakeouellette / resourceinjection.gradle
Last active Aug 29, 2015
Inject XML resources after variants are merged
View resourceinjection.gradle
// Here's a trick to get XML injected into the APK.
// Be careful not to merge-conflict with existing parameters, as this occurs after the mergeResources step, and the behavior is likely undefined.
// was added to app/build.gradle after applying android plugin.
android.applicationVariants.all { variant ->
// Supports both 0.12.+ and 1.+ of Android gradle plugin by getting all processResourceTasks:
def tasks = []
// Multidex has multiple process resource tasks
if (variant.hasProperty('outputs')) {
for (output in variant.outputs) {
@benjchristensen
benjchristensen / DebounceBuffer.java
Last active May 14, 2018
DebounceBuffer: Use publish(), debounce() and buffer() together to capture bursts of events.
View DebounceBuffer.java
import java.util.List;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.Subscriber;
import rx.schedulers.Schedulers;
public class DebounceBuffer {
public static void main(String args[]) {
@dmarcato
dmarcato / strip_play_services.gradle
Last active Jan 25, 2019
Gradle task to strip unused packages on Google Play Services library
View strip_play_services.gradle
def toCamelCase(String string) {
String result = ""
string.findAll("[^\\W]+") { String word ->
result += word.capitalize()
}
return result
}
afterEvaluate { project ->
Configuration runtimeConfiguration = project.configurations.getByName('compile')
@tyvsmith
tyvsmith / dex-count.sh
Created Jul 22, 2013
"`classes.dex` method count helpers. Requires smali/baksmali from https://code.google.com/p/smali/ and dexdump from the build-tools in the Android SDK be on your PATH." Use this to keep track of methods and fields in your apk. They are both limited to 65536. Example use: $ source dex-count.sh; $ dex-field-count classes.dex; Original method scrip…
View dex-count.sh
function dex-method-count() {
cat $1 | head -c 92 | tail -c 4 | hexdump -e '1/4 "%d\n"'
}
function dex-method-count-by-package() {
dir=$(mktemp -d -t dex)
baksmali $1 -o $dir
for pkg in `find $dir/* -type d`; do
smali $pkg -o $pkg/classes.dex
count=$(dex-method-count $pkg/classes.dex)
You can’t perform that action at this time.