CrackMe.apk
Download file
package androidx.appcompat.widget;
import android.graphics.Insets;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.DrawableContainer;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.InsetDrawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.ScaleDrawable;
import android.os.Build;
import androidx.appcompat.graphics.drawable.DrawableWrapper;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.graphics.drawable.WrappedDrawable;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class DrawableUtils {
private static final int[] CHECKED_STATE_SET = {16842912};
private static final int[] EMPTY_STATE_SET = new int[0];
public static final Rect INSETS_NONE = new Rect();
private DrawableUtils() {
}
public static Rect getOpticalBounds(Drawable drawable) {
if (Build.VERSION.SDK_INT >= 29) {
Insets opticalInsets = Api29Impl.getOpticalInsets(drawable);
return new Rect(opticalInsets.left, opticalInsets.top, opticalInsets.right, opticalInsets.bottom);
} else if (Build.VERSION.SDK_INT >= 18) {
return Api18Impl.getOpticalInsets(DrawableCompat.unwrap(drawable));
} else {
return INSETS_NONE;
}
}
static void fixDrawable(Drawable drawable) {
String name = drawable.getClass().getName();
if (Build.VERSION.SDK_INT == 21 && "android.graphics.drawable.VectorDrawable".equals(name)) {
forceDrawableStateChange(drawable);
} else if (Build.VERSION.SDK_INT >= 29 && Build.VERSION.SDK_INT < 31 && "android.graphics.drawable.ColorStateListDrawable".equals(name)) {
forceDrawableStateChange(drawable);
}
}
public static boolean canSafelyMutateDrawable(Drawable drawable) {
if (Build.VERSION.SDK_INT < 15 && (drawable instanceof InsetDrawable)) {
return false;
}
if (Build.VERSION.SDK_INT < 15 && (drawable instanceof GradientDrawable)) {
return false;
}
if (Build.VERSION.SDK_INT < 17 && (drawable instanceof LayerDrawable)) {
return false;
}
if (drawable instanceof DrawableContainer) {
Drawable.ConstantState constantState = drawable.getConstantState();
if (!(constantState instanceof DrawableContainer.DrawableContainerState)) {
return true;
}
for (Drawable canSafelyMutateDrawable : ((DrawableContainer.DrawableContainerState) constantState).getChildren()) {
if (!canSafelyMutateDrawable(canSafelyMutateDrawable)) {
return false;
}
}
return true;
} else if (drawable instanceof WrappedDrawable) {
return canSafelyMutateDrawable(((WrappedDrawable) drawable).getWrappedDrawable());
} else {
if (drawable instanceof DrawableWrapper) {
return canSafelyMutateDrawable(((DrawableWrapper) drawable).getWrappedDrawable());
}
if (drawable instanceof ScaleDrawable) {
return canSafelyMutateDrawable(((ScaleDrawable) drawable).getDrawable());
}
return true;
}
}
private static void forceDrawableStateChange(Drawable drawable) {
int[] state = drawable.getState();
if (state == null || state.length == 0) {
drawable.setState(CHECKED_STATE_SET);
} else {
drawable.setState(EMPTY_STATE_SET);
}
drawable.setState(state);
}
public static PorterDuff.Mode parseTintMode(int i, PorterDuff.Mode mode) {
if (i == 3) {
return PorterDuff.Mode.SRC_OVER;
}
if (i == 5) {
return PorterDuff.Mode.SRC_IN;
}
if (i == 9) {
return PorterDuff.Mode.SRC_ATOP;
}
switch (i) {
case 14:
return PorterDuff.Mode.MULTIPLY;
case 15:
return PorterDuff.Mode.SCREEN;
case 16:
return PorterDuff.Mode.ADD;
default:
return mode;
}
}
static class Api18Impl {
private static final Field sBottom;
private static final Method sGetOpticalInsets;
private static final Field sLeft;
private static final boolean sReflectionSuccessful;
private static final Field sRight;
private static final Field sTop;
/* JADX WARNING: Removed duplicated region for block: B:43:0x004c */
/* JADX WARNING: Removed duplicated region for block: B:44:0x0059 */
static {
/*
r0 = 1
r1 = 0
r2 = 0
java.lang.String r3 = "android.graphics.Insets"
java.lang.Class r3 = java.lang.Class.forName(r3) // Catch:{ NoSuchMethodException -> 0x0044, ClassNotFoundException -> 0x0040, NoSuchFieldException -> 0x003c }
java.lang.Class<android.graphics.drawable.Drawable> r4 = android.graphics.drawable.Drawable.class
java.lang.String r5 = "getOpticalInsets"
java.lang.Class[] r6 = new java.lang.Class[r1] // Catch:{ NoSuchMethodException -> 0x0044, ClassNotFoundException -> 0x0040, NoSuchFieldException -> 0x003c }
java.lang.reflect.Method r4 = r4.getMethod(r5, r6) // Catch:{ NoSuchMethodException -> 0x0044, ClassNotFoundException -> 0x0040, NoSuchFieldException -> 0x003c }
java.lang.String r5 = "left"
java.lang.reflect.Field r5 = r3.getField(r5) // Catch:{ NoSuchMethodException -> 0x003a, ClassNotFoundException -> 0x0038, NoSuchFieldException -> 0x0036 }
java.lang.String r6 = "top"
java.lang.reflect.Field r6 = r3.getField(r6) // Catch:{ NoSuchMethodException -> 0x0034, ClassNotFoundException -> 0x0032, NoSuchFieldException -> 0x0030 }
java.lang.String r7 = "right"
java.lang.reflect.Field r7 = r3.getField(r7) // Catch:{ ClassNotFoundException | NoSuchFieldException | NoSuchMethodException -> 0x002e }
java.lang.String r8 = "bottom"
java.lang.reflect.Field r3 = r3.getField(r8) // Catch:{ ClassNotFoundException | NoSuchFieldException | NoSuchMethodException -> 0x0048 }
r8 = 1
goto L_0x004a
L_0x002e:
r7 = r2
goto L_0x0048
L_0x0030:
r6 = r2
goto L_0x0047
L_0x0032:
r6 = r2
goto L_0x0047
L_0x0034:
r6 = r2
goto L_0x0047
L_0x0036:
r5 = r2
goto L_0x003e
L_0x0038:
r5 = r2
goto L_0x0042
L_0x003a:
r5 = r2
goto L_0x0046
L_0x003c:
r4 = r2
r5 = r4
L_0x003e:
r6 = r5
goto L_0x0047
L_0x0040:
r4 = r2
r5 = r4
L_0x0042:
r6 = r5
goto L_0x0047
L_0x0044:
r4 = r2
r5 = r4
L_0x0046:
r6 = r5
L_0x0047:
r7 = r6
L_0x0048:
r3 = r2
r8 = 0
L_0x004a:
if (r8 == 0) goto L_0x0059
sGetOpticalInsets = r4
sLeft = r5
sTop = r6
sRight = r7
sBottom = r3
sReflectionSuccessful = r0
goto L_0x0065
L_0x0059:
sGetOpticalInsets = r2
sLeft = r2
sTop = r2
sRight = r2
sBottom = r2
sReflectionSuccessful = r1
L_0x0065:
return
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.appcompat.widget.DrawableUtils.Api18Impl.<clinit>():void");
}
private Api18Impl() {
}
static Rect getOpticalInsets(Drawable drawable) {
if (Build.VERSION.SDK_INT < 29 && sReflectionSuccessful) {
try {
Object invoke = sGetOpticalInsets.invoke(drawable, new Object[0]);
if (invoke != null) {
return new Rect(sLeft.getInt(invoke), sTop.getInt(invoke), sRight.getInt(invoke), sBottom.getInt(invoke));
}
} catch (IllegalAccessException | InvocationTargetException unused) {
}
}
return DrawableUtils.INSETS_NONE;
}
}
static class Api29Impl {
private Api29Impl() {
}
static Insets getOpticalInsets(Drawable drawable) {
return drawable.getOpticalInsets();
}
}
}
Download file