Initial commit
This commit is contained in:
249
sources/com/alibaba/android/arouter/utils/ClassUtils.java
Normal file
249
sources/com/alibaba/android/arouter/utils/ClassUtils.java
Normal file
@@ -0,0 +1,249 @@
|
||||
package com.alibaba.android.arouter.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.alibaba.android.arouter.thread.DefaultPoolExecutor;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class ClassUtils {
|
||||
private static final String a = "code_cache" + File.separator + "secondary-dexes";
|
||||
|
||||
private static SharedPreferences a(Context context) {
|
||||
return context.getSharedPreferences("multidex.version", Build.VERSION.SDK_INT < 11 ? 0 : 4);
|
||||
}
|
||||
|
||||
public static List<String> b(Context context) throws PackageManager.NameNotFoundException, IOException {
|
||||
ApplicationInfo applicationInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), 0);
|
||||
File file = new File(applicationInfo.sourceDir);
|
||||
ArrayList arrayList = new ArrayList();
|
||||
arrayList.add(applicationInfo.sourceDir);
|
||||
String str = file.getName() + ".classes";
|
||||
if (!a()) {
|
||||
int i = a(context).getInt("dex.number", 1);
|
||||
File file2 = new File(applicationInfo.dataDir, a);
|
||||
for (int i2 = 2; i2 <= i; i2++) {
|
||||
File file3 = new File(file2, str + i2 + ".zip");
|
||||
if (!file3.isFile()) {
|
||||
throw new IOException("Missing extracted secondary dex file '" + file3.getPath() + "'");
|
||||
}
|
||||
arrayList.add(file3.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
if (ARouter.a()) {
|
||||
arrayList.addAll(a(applicationInfo));
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
public static Set<String> a(Context context, final String str) throws PackageManager.NameNotFoundException, IOException, InterruptedException {
|
||||
final HashSet hashSet = new HashSet();
|
||||
List<String> b = b(context);
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(b.size());
|
||||
for (final String str2 : b) {
|
||||
DefaultPoolExecutor.a().execute(new Runnable() { // from class: com.alibaba.android.arouter.utils.ClassUtils.1
|
||||
/* JADX WARN: Code restructure failed: missing block: B:30:0x0057, code lost:
|
||||
|
||||
if (r0 == null) goto L20;
|
||||
*/
|
||||
@Override // java.lang.Runnable
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct code enable 'Show inconsistent code' option in preferences
|
||||
*/
|
||||
public void run() {
|
||||
/*
|
||||
r4 = this;
|
||||
r0 = 0
|
||||
java.lang.String r1 = r1 // Catch: java.lang.Throwable -> L4f
|
||||
java.lang.String r2 = ".zip"
|
||||
boolean r1 = r1.endsWith(r2) // Catch: java.lang.Throwable -> L4f
|
||||
if (r1 == 0) goto L26
|
||||
java.lang.String r1 = r1 // Catch: java.lang.Throwable -> L4f
|
||||
java.lang.StringBuilder r2 = new java.lang.StringBuilder // Catch: java.lang.Throwable -> L4f
|
||||
r2.<init>() // Catch: java.lang.Throwable -> L4f
|
||||
java.lang.String r3 = r1 // Catch: java.lang.Throwable -> L4f
|
||||
r2.append(r3) // Catch: java.lang.Throwable -> L4f
|
||||
java.lang.String r3 = ".tmp"
|
||||
r2.append(r3) // Catch: java.lang.Throwable -> L4f
|
||||
java.lang.String r2 = r2.toString() // Catch: java.lang.Throwable -> L4f
|
||||
r3 = 0
|
||||
dalvik.system.DexFile r0 = dalvik.system.DexFile.loadDex(r1, r2, r3) // Catch: java.lang.Throwable -> L4f
|
||||
goto L2e
|
||||
L26:
|
||||
dalvik.system.DexFile r1 = new dalvik.system.DexFile // Catch: java.lang.Throwable -> L4f
|
||||
java.lang.String r2 = r1 // Catch: java.lang.Throwable -> L4f
|
||||
r1.<init>(r2) // Catch: java.lang.Throwable -> L4f
|
||||
r0 = r1
|
||||
L2e:
|
||||
java.util.Enumeration r1 = r0.entries() // Catch: java.lang.Throwable -> L4f
|
||||
L32:
|
||||
boolean r2 = r1.hasMoreElements() // Catch: java.lang.Throwable -> L4f
|
||||
if (r2 == 0) goto L4c
|
||||
java.lang.Object r2 = r1.nextElement() // Catch: java.lang.Throwable -> L4f
|
||||
java.lang.String r2 = (java.lang.String) r2 // Catch: java.lang.Throwable -> L4f
|
||||
java.lang.String r3 = r2 // Catch: java.lang.Throwable -> L4f
|
||||
boolean r3 = r2.startsWith(r3) // Catch: java.lang.Throwable -> L4f
|
||||
if (r3 == 0) goto L32
|
||||
java.util.Set r3 = r3 // Catch: java.lang.Throwable -> L4f
|
||||
r3.add(r2) // Catch: java.lang.Throwable -> L4f
|
||||
goto L32
|
||||
L4c:
|
||||
if (r0 == 0) goto L5c
|
||||
goto L59
|
||||
L4f:
|
||||
r1 = move-exception
|
||||
java.lang.String r2 = "ARouter"
|
||||
java.lang.String r3 = "Scan map file in dex files made error."
|
||||
android.util.Log.e(r2, r3, r1) // Catch: java.lang.Throwable -> L62
|
||||
if (r0 == 0) goto L5c
|
||||
L59:
|
||||
r0.close() // Catch: java.lang.Throwable -> L5c
|
||||
L5c:
|
||||
java.util.concurrent.CountDownLatch r0 = r4
|
||||
r0.countDown()
|
||||
return
|
||||
L62:
|
||||
r1 = move-exception
|
||||
if (r0 == 0) goto L68
|
||||
r0.close() // Catch: java.lang.Throwable -> L68
|
||||
L68:
|
||||
java.util.concurrent.CountDownLatch r0 = r4
|
||||
r0.countDown()
|
||||
throw r1
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: com.alibaba.android.arouter.utils.ClassUtils.AnonymousClass1.run():void");
|
||||
}
|
||||
});
|
||||
}
|
||||
countDownLatch.await();
|
||||
Log.d("ARouter::", "Filter " + hashSet.size() + " classes by packageName <" + str + ">");
|
||||
return hashSet;
|
||||
}
|
||||
|
||||
private static List<String> a(ApplicationInfo applicationInfo) {
|
||||
String[] strArr;
|
||||
ArrayList arrayList = new ArrayList();
|
||||
if (Build.VERSION.SDK_INT >= 21 && (strArr = applicationInfo.splitSourceDirs) != null) {
|
||||
arrayList.addAll(Arrays.asList(strArr));
|
||||
Log.d("ARouter::", "Found InstantRun support");
|
||||
} else {
|
||||
try {
|
||||
File file = new File((String) Class.forName("com.android.tools.fd.runtime.Paths").getMethod("getDexFileDirectory", String.class).invoke(null, applicationInfo.packageName));
|
||||
if (file.exists() && file.isDirectory()) {
|
||||
for (File file2 : file.listFiles()) {
|
||||
if (file2 != null && file2.exists() && file2.isFile() && file2.getName().endsWith(".dex")) {
|
||||
arrayList.add(file2.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
Log.d("ARouter::", "Found InstantRun support");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("ARouter::", "InstantRun support error, " + e.getMessage());
|
||||
}
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
private static boolean b() {
|
||||
try {
|
||||
String property = System.getProperty("ro.yunos.version");
|
||||
String property2 = System.getProperty("java.vm.name");
|
||||
if (property2 == null || !property2.toLowerCase().contains("lemur")) {
|
||||
if (property == null) {
|
||||
return false;
|
||||
}
|
||||
if (property.trim().length() <= 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} catch (Exception unused) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* JADX WARN: Code restructure failed: missing block: B:24:0x004e, code lost:
|
||||
|
||||
if (r2 < 1) goto L24;
|
||||
*/
|
||||
/* JADX WARN: Code restructure failed: missing block: B:6:0x001b, code lost:
|
||||
|
||||
if (java.lang.Integer.valueOf(java.lang.System.getProperty("ro.build.version.sdk")).intValue() >= 21) goto L7;
|
||||
*/
|
||||
/* JADX WARN: Removed duplicated region for block: B:11:0x0061 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:15:0x0064 */
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct code enable 'Show inconsistent code' option in preferences
|
||||
*/
|
||||
private static boolean a() {
|
||||
/*
|
||||
r0 = 0
|
||||
r1 = 0
|
||||
boolean r2 = b() // Catch: java.lang.Throwable -> L51
|
||||
r3 = 1
|
||||
if (r2 == 0) goto L1f
|
||||
java.lang.String r1 = "'YunOS'"
|
||||
java.lang.String r2 = "ro.build.version.sdk"
|
||||
java.lang.String r2 = java.lang.System.getProperty(r2) // Catch: java.lang.Throwable -> L51
|
||||
java.lang.Integer r2 = java.lang.Integer.valueOf(r2) // Catch: java.lang.Throwable -> L51
|
||||
int r2 = r2.intValue() // Catch: java.lang.Throwable -> L51
|
||||
r4 = 21
|
||||
if (r2 < r4) goto L52
|
||||
L1d:
|
||||
r0 = 1
|
||||
goto L52
|
||||
L1f:
|
||||
java.lang.String r1 = "'Android'"
|
||||
java.lang.String r2 = "java.vm.version"
|
||||
java.lang.String r2 = java.lang.System.getProperty(r2) // Catch: java.lang.Throwable -> L51
|
||||
if (r2 == 0) goto L52
|
||||
java.lang.String r4 = "(\\d+)\\.(\\d+)(\\.\\d+)?"
|
||||
java.util.regex.Pattern r4 = java.util.regex.Pattern.compile(r4) // Catch: java.lang.Throwable -> L51
|
||||
java.util.regex.Matcher r2 = r4.matcher(r2) // Catch: java.lang.Throwable -> L51
|
||||
boolean r4 = r2.matches() // Catch: java.lang.Throwable -> L51
|
||||
if (r4 == 0) goto L52
|
||||
java.lang.String r4 = r2.group(r3) // Catch: java.lang.Throwable -> L51
|
||||
int r4 = java.lang.Integer.parseInt(r4) // Catch: java.lang.Throwable -> L51
|
||||
r5 = 2
|
||||
java.lang.String r2 = r2.group(r5) // Catch: java.lang.Throwable -> L51
|
||||
int r2 = java.lang.Integer.parseInt(r2) // Catch: java.lang.Throwable -> L51
|
||||
if (r4 > r5) goto L1d
|
||||
if (r4 != r5) goto L52
|
||||
if (r2 < r3) goto L52
|
||||
goto L1d
|
||||
L51:
|
||||
L52:
|
||||
java.lang.StringBuilder r2 = new java.lang.StringBuilder
|
||||
r2.<init>()
|
||||
java.lang.String r3 = "VM with name "
|
||||
r2.append(r3)
|
||||
r2.append(r1)
|
||||
if (r0 == 0) goto L64
|
||||
java.lang.String r1 = " has multidex support"
|
||||
goto L66
|
||||
L64:
|
||||
java.lang.String r1 = " does not have multidex support"
|
||||
L66:
|
||||
r2.append(r1)
|
||||
java.lang.String r1 = r2.toString()
|
||||
java.lang.String r2 = "ARouter::"
|
||||
android.util.Log.i(r2, r1)
|
||||
return r0
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: com.alibaba.android.arouter.utils.ClassUtils.a():boolean");
|
||||
}
|
||||
}
|
95
sources/com/alibaba/android/arouter/utils/DefaultLogger.java
Normal file
95
sources/com/alibaba/android/arouter/utils/DefaultLogger.java
Normal file
@@ -0,0 +1,95 @@
|
||||
package com.alibaba.android.arouter.utils;
|
||||
|
||||
import android.util.Log;
|
||||
import com.alibaba.android.arouter.facade.template.ILogger;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class DefaultLogger implements ILogger {
|
||||
private static boolean b = false;
|
||||
private static boolean c = false;
|
||||
private String a;
|
||||
|
||||
public DefaultLogger(String str) {
|
||||
this.a = "ARouter";
|
||||
this.a = str;
|
||||
}
|
||||
|
||||
@Override // com.alibaba.android.arouter.facade.template.ILogger
|
||||
public void a(String str, String str2) {
|
||||
if (b) {
|
||||
StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3];
|
||||
if (android.text.TextUtils.isEmpty(str)) {
|
||||
str = a();
|
||||
}
|
||||
Log.d(str, str2 + a(stackTraceElement));
|
||||
}
|
||||
}
|
||||
|
||||
@Override // com.alibaba.android.arouter.facade.template.ILogger
|
||||
public void b(String str, String str2) {
|
||||
if (b) {
|
||||
StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3];
|
||||
if (android.text.TextUtils.isEmpty(str)) {
|
||||
str = a();
|
||||
}
|
||||
Log.e(str, str2 + a(stackTraceElement));
|
||||
}
|
||||
}
|
||||
|
||||
@Override // com.alibaba.android.arouter.facade.template.ILogger
|
||||
public void c(String str, String str2) {
|
||||
if (b) {
|
||||
StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3];
|
||||
if (android.text.TextUtils.isEmpty(str)) {
|
||||
str = a();
|
||||
}
|
||||
Log.w(str, str2 + a(stackTraceElement));
|
||||
}
|
||||
}
|
||||
|
||||
@Override // com.alibaba.android.arouter.facade.template.ILogger
|
||||
public void d(String str, String str2) {
|
||||
if (b) {
|
||||
StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3];
|
||||
if (android.text.TextUtils.isEmpty(str)) {
|
||||
str = a();
|
||||
}
|
||||
Log.i(str, str2 + a(stackTraceElement));
|
||||
}
|
||||
}
|
||||
|
||||
public String a() {
|
||||
return this.a;
|
||||
}
|
||||
|
||||
public static String a(StackTraceElement stackTraceElement) {
|
||||
StringBuilder sb = new StringBuilder("[");
|
||||
if (c) {
|
||||
String name = Thread.currentThread().getName();
|
||||
String fileName = stackTraceElement.getFileName();
|
||||
String className = stackTraceElement.getClassName();
|
||||
String methodName = stackTraceElement.getMethodName();
|
||||
long id = Thread.currentThread().getId();
|
||||
int lineNumber = stackTraceElement.getLineNumber();
|
||||
sb.append("ThreadId=");
|
||||
sb.append(id);
|
||||
sb.append(" & ");
|
||||
sb.append("ThreadName=");
|
||||
sb.append(name);
|
||||
sb.append(" & ");
|
||||
sb.append("FileName=");
|
||||
sb.append(fileName);
|
||||
sb.append(" & ");
|
||||
sb.append("ClassName=");
|
||||
sb.append(className);
|
||||
sb.append(" & ");
|
||||
sb.append("MethodName=");
|
||||
sb.append(methodName);
|
||||
sb.append(" & ");
|
||||
sb.append("LineNumber=");
|
||||
sb.append(lineNumber);
|
||||
}
|
||||
sb.append(" ] ");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
14
sources/com/alibaba/android/arouter/utils/MapUtils.java
Normal file
14
sources/com/alibaba/android/arouter/utils/MapUtils.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package com.alibaba.android.arouter.utils;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class MapUtils {
|
||||
public static boolean a(Map<?, ?> map) {
|
||||
return map == null || map.isEmpty();
|
||||
}
|
||||
|
||||
public static boolean b(Map<?, ?> map) {
|
||||
return !a(map);
|
||||
}
|
||||
}
|
43
sources/com/alibaba/android/arouter/utils/PackageUtils.java
Normal file
43
sources/com/alibaba/android/arouter/utils/PackageUtils.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package com.alibaba.android.arouter.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageInfo;
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class PackageUtils {
|
||||
private static String a;
|
||||
private static int b;
|
||||
|
||||
private static PackageInfo a(Context context) {
|
||||
try {
|
||||
return context.getPackageManager().getPackageInfo(context.getPackageName(), 16384);
|
||||
} catch (Exception unused) {
|
||||
ARouter.c.b("ARouter::", "Get package info error.");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean b(Context context) {
|
||||
PackageInfo a2 = a(context);
|
||||
if (a2 != null) {
|
||||
String str = a2.versionName;
|
||||
int i = a2.versionCode;
|
||||
SharedPreferences sharedPreferences = context.getSharedPreferences("SP_AROUTER_CACHE", 0);
|
||||
if (str.equals(sharedPreferences.getString("LAST_VERSION_NAME", null)) && i == sharedPreferences.getInt("LAST_VERSION_CODE", -1)) {
|
||||
return false;
|
||||
}
|
||||
a = str;
|
||||
b = i;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void c(Context context) {
|
||||
if (android.text.TextUtils.isEmpty(a) || b == 0) {
|
||||
return;
|
||||
}
|
||||
context.getSharedPreferences("SP_AROUTER_CACHE", 0).edit().putString("LAST_VERSION_NAME", a).putInt("LAST_VERSION_CODE", b).apply();
|
||||
}
|
||||
}
|
48
sources/com/alibaba/android/arouter/utils/TextUtils.java
Normal file
48
sources/com/alibaba/android/arouter/utils/TextUtils.java
Normal file
@@ -0,0 +1,48 @@
|
||||
package com.alibaba.android.arouter.utils;
|
||||
|
||||
import android.net.Uri;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class TextUtils {
|
||||
public static boolean a(CharSequence charSequence) {
|
||||
return charSequence == null || charSequence.length() == 0;
|
||||
}
|
||||
|
||||
public static String a(StackTraceElement[] stackTraceElementArr) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (StackTraceElement stackTraceElement : stackTraceElementArr) {
|
||||
sb.append(" at ");
|
||||
sb.append(stackTraceElement.toString());
|
||||
sb.append("\n");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static Map<String, String> a(Uri uri) {
|
||||
String encodedQuery = uri.getEncodedQuery();
|
||||
if (encodedQuery == null) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
LinkedHashMap linkedHashMap = new LinkedHashMap();
|
||||
int i = 0;
|
||||
do {
|
||||
int indexOf = encodedQuery.indexOf(38, i);
|
||||
if (indexOf == -1) {
|
||||
indexOf = encodedQuery.length();
|
||||
}
|
||||
int indexOf2 = encodedQuery.indexOf(61, i);
|
||||
if (indexOf2 > indexOf || indexOf2 == -1) {
|
||||
indexOf2 = indexOf;
|
||||
}
|
||||
String substring = encodedQuery.substring(i, indexOf2);
|
||||
if (!android.text.TextUtils.isEmpty(substring)) {
|
||||
linkedHashMap.put(Uri.decode(substring), Uri.decode(indexOf2 == indexOf ? "" : encodedQuery.substring(indexOf2 + 1, indexOf)));
|
||||
}
|
||||
i = indexOf + 1;
|
||||
} while (i < encodedQuery.length());
|
||||
return Collections.unmodifiableMap(linkedHashMap);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user