a.java 源代码
package com.apm.insight.l;
import android.app.ActivityManager;
import android.content.Context;
import android.os.Build;
import android.os.Debug;
import android.os.Process;
import android.os.SystemClock;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Field;
import java.util.List;
import org.json.JSONObject;
public final class a {
private static String f6604a;
private static Class<?> f6605b;
private static Field f6606c;
private static Field f6607d;
private static boolean f6608e;
private static long a(int i6) {
if (i6 < 0) {
return 0L;
}
return i6 * 1024;
}
private static void b(@NonNull JSONObject jSONObject, ActivityManager activityManager) {
JSONObject jSONObject2 = new JSONObject();
ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);
jSONObject2.put("availMem", memoryInfo.availMem);
jSONObject2.put("lowMemory", memoryInfo.lowMemory);
jSONObject2.put("threshold", memoryInfo.threshold);
jSONObject2.put("totalMem", n.a(memoryInfo));
jSONObject.put("sys_memory_info", jSONObject2);
}
@NonNull
public static String c(Context context) {
if (!TextUtils.isEmpty(f6604a)) {
return f6604a;
}
try {
int myPid = Process.myPid();
ActivityManager activityManager = (ActivityManager) context.getSystemService("activity");
if (activityManager != null) {
for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : activityManager.getRunningAppProcesses()) {
if (runningAppProcessInfo.pid == myPid) {
String str = runningAppProcessInfo.processName;
f6604a = str;
return str;
}
}
}
} catch (Throwable unused) {
}
String a7 = a();
f6604a = a7;
if (a7 == null) {
return "";
}
return a7;
}
@NonNull
public static String d(Context context) {
Class<?> g6 = g(context);
if (f6606c == null && g6 != null) {
try {
f6606c = g6.getDeclaredField("VERSION_NAME");
} catch (NoSuchFieldException unused) {
}
}
Field field = f6606c;
if (field != null) {
try {
return String.valueOf(field.get(null));
} catch (Throwable unused2) {
return "";
}
}
return "";
}
public static int e(Context context) {
Class<?> g6 = g(context);
if (f6607d == null && g6 != null) {
try {
f6607d = g6.getDeclaredField("VERSION_CODE");
} catch (NoSuchFieldException unused) {
}
}
Field field = f6607d;
if (field != null) {
try {
return ((Integer) field.get(null)).intValue();
} catch (Throwable unused2) {
return -1;
}
}
return -1;
}
private static boolean f(@NonNull Context context) {
List<ActivityManager.RunningAppProcessInfo> runningAppProcesses;
String packageName = context.getPackageName();
try {
ActivityManager activityManager = (ActivityManager) context.getSystemService("activity");
if (activityManager != null && (runningAppProcesses = activityManager.getRunningAppProcesses()) != null) {
for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) {
if (runningAppProcessInfo.importance == 100) {
return packageName.equals(runningAppProcessInfo.pkgList[0]);
}
}
}
} catch (Throwable unused) {
}
return false;
}
@Nullable
private static Class<?> g(Context context) {
if (f6605b == null && !f6608e) {
try {
f6605b = Class.forName(context.getPackageName() + ".BuildConfig");
} catch (ClassNotFoundException unused) {
}
f6608e = true;
}
return f6605b;
}
@Nullable
public static ActivityManager.ProcessErrorStateInfo a(Context context, int i6) {
ActivityManager activityManager = (ActivityManager) context.getSystemService("activity");
if (activityManager == null) {
return null;
}
int myPid = Process.myPid();
int i7 = 0;
while (i7 < i6) {
List<ActivityManager.ProcessErrorStateInfo> processesInErrorState = activityManager.getProcessesInErrorState();
if (processesInErrorState != null) {
for (ActivityManager.ProcessErrorStateInfo processErrorStateInfo : processesInErrorState) {
if (processErrorStateInfo.pid == myPid && processErrorStateInfo.condition == 2) {
return processErrorStateInfo;
}
}
}
i7++;
if (i6 == i7 || com.apm.insight.b.f.a()) {
break;
}
SystemClock.sleep(200L);
}
return null;
}
public static boolean b(Context context) {
String c6 = c(context);
if (c6 != null && c6.contains(":")) {
return false;
}
if (c6 == null || !c6.equals(context.getPackageName())) {
return c6 != null && c6.equals(context.getApplicationInfo().processName);
}
return true;
}
@Nullable
private static String a() {
BufferedReader bufferedReader;
try {
bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream("/proc/" + Process.myPid() + "/cmdline"), "iso-8859-1"));
} catch (Throwable unused) {
bufferedReader = null;
}
try {
StringBuilder sb = new StringBuilder();
while (true) {
int read = bufferedReader.read();
if (read <= 0) {
String sb2 = sb.toString();
k.a(bufferedReader);
return sb2;
}
sb.append((char) read);
}
} catch (Throwable unused2) {
k.a(bufferedReader);
return null;
}
}
public static void a(@NonNull Context context, @NonNull JSONObject jSONObject) {
try {
a(jSONObject);
ActivityManager activityManager = (ActivityManager) context.getSystemService("activity");
if (activityManager != null) {
b(jSONObject, activityManager);
}
a(jSONObject, activityManager);
} catch (Throwable unused) {
}
}
public static void a(String str) {
f6604a = str;
}
private static void a(@NonNull JSONObject jSONObject) {
String memoryStat;
Debug.MemoryInfo memoryInfo = new Debug.MemoryInfo();
Debug.getMemoryInfo(memoryInfo);
JSONObject jSONObject2 = new JSONObject();
jSONObject2.put("dalvikPrivateDirty", a(memoryInfo.dalvikPrivateDirty));
jSONObject2.put("dalvikPss", a(memoryInfo.dalvikPss));
jSONObject2.put("dalvikSharedDirty", a(memoryInfo.dalvikSharedDirty));
jSONObject2.put("nativePrivateDirty", a(memoryInfo.nativePrivateDirty));
jSONObject2.put("nativePss", a(memoryInfo.nativePss));
jSONObject2.put("nativeSharedDirty", a(memoryInfo.nativeSharedDirty));
jSONObject2.put("otherPrivateDirty", a(memoryInfo.otherPrivateDirty));
jSONObject2.put("otherPss", a(memoryInfo.otherPss));
jSONObject2.put("otherSharedDirty", memoryInfo.otherSharedDirty);
if (Build.VERSION.SDK_INT >= 23) {
try {
memoryStat = memoryInfo.getMemoryStat("summary.graphics");
if (!TextUtils.isEmpty(memoryStat)) {
jSONObject2.put("summary.graphics", a(Integer.parseInt(memoryStat)));
}
} catch (Throwable unused) {
}
}
jSONObject2.put("totalPrivateClean", c.a(memoryInfo));
jSONObject2.put("totalPrivateDirty", memoryInfo.getTotalPrivateDirty());
jSONObject2.put("totalPss", a(memoryInfo.getTotalPss()));
jSONObject2.put("totalSharedClean", c.b(memoryInfo));
jSONObject2.put("totalSharedDirty", a(memoryInfo.getTotalSharedDirty()));
jSONObject2.put("totalSwappablePss", a(c.c(memoryInfo)));
jSONObject.put("memory_info", jSONObject2);
}
private static void a(@NonNull JSONObject jSONObject, ActivityManager activityManager) {
JSONObject jSONObject2 = new JSONObject();
com.apm.insight.entity.a.a(jSONObject, "filters", "native_heap_leak", String.valueOf(Debug.getNativeHeapAllocatedSize() > 209715200));
jSONObject2.put("native_heap_size", Debug.getNativeHeapSize());
jSONObject2.put("native_heap_alloc_size", Debug.getNativeHeapAllocatedSize());
jSONObject2.put("native_heap_free_size", Debug.getNativeHeapFreeSize());
Runtime runtime = Runtime.getRuntime();
long maxMemory = runtime.maxMemory();
long freeMemory = runtime.freeMemory();
long j6 = runtime.totalMemory();
jSONObject2.put("max_memory", maxMemory);
jSONObject2.put("free_memory", freeMemory);
jSONObject2.put("total_memory", j6);
com.apm.insight.entity.a.a(jSONObject, "filters", "java_heap_leak", String.valueOf(((float) (j6 - freeMemory)) > ((float) maxMemory) * 0.95f));
if (activityManager != null) {
jSONObject2.put("memory_class", activityManager.getMemoryClass());
jSONObject2.put("large_memory_class", activityManager.getLargeMemoryClass());
}
jSONObject.put("app_memory_info", jSONObject2);
}
public static boolean a(Context context) {
return context == null ? com.apm.insight.runtime.a.b.d().f() : com.apm.insight.runtime.a.b.d().f() || f(context);
}
}