Fix V2Ray startup issues and add legacy storage support
Addressed directory creation failure and missing V2Ray files to prevent app crashes during VPN initialization. Enabled `requestLegacyExternalStorage` to ensure compatibility with file handling on newer Android versions.
This commit is contained in:
parent
8b079e8115
commit
eda9b1013f
|
@ -29,6 +29,7 @@
|
|||
<application
|
||||
android:allowBackup="true"
|
||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||
android:requestLegacyExternalStorage="true"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
android:usesCleartextTraffic="true"
|
||||
android:fullBackupContent="@xml/backup_rules"
|
||||
|
|
|
@ -0,0 +1,265 @@
|
|||
参数 含义 获取代码(获取结果之后的其他运算不做加入) 结果
|
||||
User-Agent 获取WebView默认User-Agent字符串,包含了设备信息、浏览器版本等信息 WebSettings.getDefaultUserAgent(context) "Mozilla/5.0 (Linux; Android 10; Pixel Build/QP1A.191005.007.A3; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/135.0.7049.113 Mobile Safari/537.36
|
||||
"
|
||||
os_ver 安卓版本号 Build.VERSION.RELEASE 10
|
||||
os_lang 获取语言 locale.getLanguage() zh
|
||||
vendor 设备制造商 Build.MANUFACTURER google
|
||||
model 设备型号 Build.MODEL pixel
|
||||
dpi 设备屏幕密度 context.getResources().getDisplayMetrics().density 26
|
||||
dpi_f 分辨率 " public static Point d(Context context) {
|
||||
try {
|
||||
Display defaultDisplay = ((WindowManager) context.getSystemService(""window"")).getDefaultDisplay();
|
||||
Point point = new Point();
|
||||
defaultDisplay.getRealSize(point);
|
||||
return point;
|
||||
} catch (Throwable unused) {
|
||||
return new Point();
|
||||
}
|
||||
}
|
||||
point.x
|
||||
point.y" 411x731
|
||||
resolution 分辨率 "
|
||||
public static Point d(Context context) {
|
||||
try {
|
||||
Display defaultDisplay = ((WindowManager) context.getSystemService(""window"")).getDefaultDisplay();
|
||||
Point point = new Point();
|
||||
defaultDisplay.getRealSize(point);
|
||||
return point;
|
||||
} catch (Throwable unused) {
|
||||
return new Point();
|
||||
}
|
||||
}
|
||||
point.x
|
||||
point.y" 1080x1920
|
||||
net 网络类型 " public static int a(Context context) {
|
||||
if (context == null) {
|
||||
return 0;
|
||||
}
|
||||
try {
|
||||
NetworkInfo activeNetworkInfo = ((ConnectivityManager) context.getApplicationContext().getSystemService(""connectivity"")).getActiveNetworkInfo();
|
||||
if (activeNetworkInfo == null) {
|
||||
return 0;
|
||||
}
|
||||
int type = activeNetworkInfo.getType();
|
||||
if (type == 1) {
|
||||
return 3;
|
||||
}
|
||||
if (type != 0) {
|
||||
return 0;
|
||||
}
|
||||
switch (activeNetworkInfo.getSubtype()) {
|
||||
}
|
||||
return 0;
|
||||
} catch (Throwable th) {
|
||||
sg.bigo.ads.common.t.a.a(0, ""NetworkUtil"", ""exception on get network info:"" + th.getMessage());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
" wifi
|
||||
tz 时区 "TimeZone.getDefault().getDisplayName(false, 0, Locale.ENGLISH)" gmt+08:00
|
||||
isp "初始化时为空,获取到READ_PHONE_STATE电话权限之后,获取值为运营商名称" " public static String d(Context context) {
|
||||
if (context == null) {
|
||||
return """";
|
||||
}
|
||||
if (""-1"".equals(d)) {
|
||||
d = """";
|
||||
if (!sg.bigo.ads.common.utils.c.a(context, ""android.permission.READ_PHONE_STATE"")) {
|
||||
return d;
|
||||
}
|
||||
try {
|
||||
d = ((TelephonyManager) context.getSystemService(""phone"")).getSimOperatorName();
|
||||
} catch (Exception unused) {
|
||||
}
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
" """"""
|
||||
country 国家,初始化后从配置文件里获取us作为国家代码 locale.getCountry() cn
|
||||
gaid 广告id " public static sg.bigo.ads.common.a a(Context context, long j) {
|
||||
if (Looper.myLooper() == Looper.getMainLooper()) {
|
||||
throw new IllegalStateException(""Google Play Services info can't be accessed from the main thread"");
|
||||
}
|
||||
try {
|
||||
context.getPackageManager().getPackageInfo(""com.android.vending"", 0);
|
||||
a aVar = new a(j);
|
||||
Intent intent = new Intent(""com.google.android.gms.ads.identifier.service.START"");
|
||||
intent.setPackage(""com.google.android.gms"");
|
||||
try {
|
||||
if (!context.bindService(intent, aVar, 1)) {
|
||||
throw new IOException(""Google Play connection failed"");
|
||||
}
|
||||
try {
|
||||
if (aVar.b) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
aVar.b = true;
|
||||
b bVar = new b(aVar.c.poll(aVar.a, TimeUnit.MILLISECONDS));
|
||||
String a2 = bVar.a();
|
||||
Boolean b2 = bVar.b();
|
||||
if (a2 != null && b2 != null) {
|
||||
return new sg.bigo.ads.common.a(a2, b2.booleanValue());
|
||||
}
|
||||
context.unbindService(aVar);
|
||||
return null;
|
||||
} catch (Exception e) {
|
||||
throw e;
|
||||
}
|
||||
} finally {
|
||||
context.unbindService(aVar);
|
||||
}
|
||||
} catch (Exception e2) {
|
||||
throw e2;
|
||||
}
|
||||
}
|
||||
" 168b51f4-76f0-448a-8a4e-ddd438588338
|
||||
hw_id "当设备是华为时,就去获取华为的oaid" " private static e a(Context context) {
|
||||
boolean bindService;
|
||||
e a = e.a(context);
|
||||
if (!a.a.isEmpty()) {
|
||||
return a;
|
||||
}
|
||||
Intent intent = new Intent(""com.uodis.opendevice.OPENIDS_SERVICE"");
|
||||
intent.setPackage(""com.huawei.hwid"");
|
||||
try {
|
||||
a.b = true;
|
||||
bindService = context.bindService(intent, a, 1);
|
||||
} catch (Exception unused) {
|
||||
} catch (Throwable th) {
|
||||
a.a();
|
||||
throw th;
|
||||
}
|
||||
if (bindService) {
|
||||
if (!bindService) {
|
||||
a.a();
|
||||
}
|
||||
return a;
|
||||
}
|
||||
if (bindService) {
|
||||
return null;
|
||||
}
|
||||
a.a();
|
||||
return null;
|
||||
}
|
||||
" """"""
|
||||
fire_id "当设备是亚马逊时,就去获取亚马逊的广告id" " public static sg.bigo.ads.common.a a(Context context) {
|
||||
String str = """";
|
||||
boolean z = true;
|
||||
if (""Amazon"".equalsIgnoreCase(Build.MANUFACTURER)) {
|
||||
try {
|
||||
ContentResolver contentResolver = context.getContentResolver();
|
||||
if (Settings.Secure.getInt(contentResolver, ""limit_ad_tracking"") == 0) {
|
||||
z = false;
|
||||
}
|
||||
str = Settings.Secure.getString(contentResolver, ""advertising_id"");
|
||||
} catch (Settings.SettingNotFoundException unused) {
|
||||
}
|
||||
}
|
||||
return new sg.bigo.ads.common.a(str, z);
|
||||
}
|
||||
" """"""
|
||||
af_id "如果加载了af sdk,就去获取appsflyer uid" " public static String a(Context context) {
|
||||
if (!TextUtils.isEmpty(a) || !b) {
|
||||
return a;
|
||||
}
|
||||
try {
|
||||
Class<?> cls = Class.forName(""com.appsflyer.AppsFlyerLib"");
|
||||
Object invoke = cls.getMethod(""getAppsFlyerUID"", Context.class).invoke(cls.getMethod(""getInstance"", new Class[0]).invoke(null, new Object[0]), context);
|
||||
if (invoke instanceof String) {
|
||||
a = (String) invoke;
|
||||
}
|
||||
} catch (Exception unused) {
|
||||
b = false;
|
||||
}
|
||||
return a;
|
||||
}
|
||||
" """"""
|
||||
cpu_core_num 获取cpu核心数 " public static int a() {
|
||||
if (a) {
|
||||
return c;
|
||||
}
|
||||
int a2 = sg.bigo.ads.common.x.a.a();
|
||||
c = a2;
|
||||
if (a2 != 0) {
|
||||
a = true;
|
||||
return a2;
|
||||
}
|
||||
try {
|
||||
c = new File(""/sys/devices/system/cpu/"").listFiles(new C0058a()).length;
|
||||
} catch (Throwable unused) {
|
||||
}
|
||||
if (c <= 1) {
|
||||
c = Runtime.getRuntime().availableProcessors();
|
||||
}
|
||||
a = true;
|
||||
sg.bigo.ads.common.x.a.a(c);
|
||||
return c;
|
||||
}
|
||||
|
||||
" 4
|
||||
cpu_clock_speed 获取cpu的最大频率 """/sys/devices/system/cpu/cpu"" + i3 + ""/cpufreq/cpuinfo_max_freq""" 2150
|
||||
total_memory 获取系统总内存大小 "
|
||||
public static long b(Context context) {
|
||||
ActivityManager.MemoryInfo d2 = d(context);
|
||||
if (d2 == null) {
|
||||
return 0L;
|
||||
}
|
||||
return f.a(d2.totalMem, 3);
|
||||
}
|
||||
" 3765
|
||||
free_memory 获取系统可用内存大小 " public static long a(Context context) {
|
||||
ActivityManager.MemoryInfo d2 = d(context);
|
||||
if (d2 == null) {
|
||||
return 0L;
|
||||
}
|
||||
return f.a(d2.availMem, 3);
|
||||
}
|
||||
|
||||
" 1268
|
||||
rom_free_in 获取内部存储空间的可用空间大小 " private static long f() {
|
||||
StatFs statFs = new StatFs(Environment.getDataDirectory().getPath());
|
||||
return statFs.getBlockSizeLong() * statFs.getAvailableBlocksLong();
|
||||
}
|
||||
" 16734564352
|
||||
rom_free_ext 获取外部存储空间的可用空间大小 " StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getPath());
|
||||
return statFs.getBlockSizeLong() * statFs.getAvailableBlocksLong();
|
||||
" 16734556160
|
||||
sim_country "获取设备当前网络的国家/地区代码
|
||||
如果网络国家代码为空,则获取SIM卡的国家代码
|
||||
需要READ_PHONE_STATE权限" " public static String e(Context context) {
|
||||
if (context == null) {
|
||||
return """";
|
||||
}
|
||||
if (""-1"".equals(e)) {
|
||||
e = """";
|
||||
if (!sg.bigo.ads.common.utils.c.a(context, ""android.permission.READ_PHONE_STATE"")) {
|
||||
return e;
|
||||
}
|
||||
try {
|
||||
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(""phone"");
|
||||
String networkCountryIso = telephonyManager.getNetworkCountryIso();
|
||||
e = networkCountryIso;
|
||||
if (TextUtils.isEmpty(networkCountryIso)) {
|
||||
e = telephonyManager.getSimCountryIso();
|
||||
}
|
||||
} catch (Exception unused) {
|
||||
}
|
||||
}
|
||||
return e;
|
||||
}
|
||||
" """"""
|
||||
system_country 国家代码 locale.getCountry() cn
|
||||
bat_stat "获取设备的电池状态
|
||||
BatteryManager.BATTERY_STATUS_UNKNOWN(1):未知状态
|
||||
BatteryManager.BATTERY_STATUS_CHARGING(2):正在充电
|
||||
BatteryManager.BATTERY_STATUS_DISCHARGING(3):正在放电
|
||||
BatteryManager.BATTERY_STATUS_NOT_CHARGING(4):未充电
|
||||
BatteryManager.BATTERY_STATUS_FULL(5):已充满" " registerReceiver = context.registerReceiver(null, new IntentFilter(""android.intent.action.BATTERY_CHANGED""));
|
||||
registerReceiver.getIntExtra(""status"", -1)" 2
|
||||
bat_num 获取设备的电池电量百分比0~100 " registerReceiver = context.registerReceiver(null, new IntentFilter(""android.intent.action.BATTERY_CHANGED""));
|
||||
registerReceiver.getIntExtra(""level"", -1)" 76
|
||||
bat_scale 获取电池电量的最大刻度 " registerReceiver = context.registerReceiver(null, new IntentFilter(""android.intent.action.BATTERY_CHANGED""));
|
||||
registerReceiver.getIntExtra(""scale"", -1)" 100
|
||||
lat_enable 是否限制gaid的获取 和上面获取gaid的代码一致 0
|
||||
hw_lat_enable 是否限制hw_id的获取 1
|
||||
fire_lat_enable 是否限制fire_id的获取 1
|
|
@ -78,10 +78,14 @@ public class V2rayUtil {
|
|||
}
|
||||
|
||||
// 检查并复制 config.json 文件
|
||||
|
||||
|
||||
v2rayConfig = new File("/data/v2ray/config.json");
|
||||
|
||||
File v2rayDirectory = v2rayConfig.getParentFile();
|
||||
if (v2rayDirectory != null && !v2rayDirectory.exists()) {
|
||||
Log.e("V2rayUtil", "Failed to find directory: " + v2rayDirectory.getAbsolutePath());
|
||||
return false; // 无法创建目录时直接返回
|
||||
}
|
||||
|
||||
if (!v2rayConfig.exists()) {
|
||||
InputStream configInputStream = context.getAssets().open("v2ray/" + abi + "/config.json");
|
||||
FileOutputStream configOutputStream = new FileOutputStream(v2rayConfig);
|
||||
|
|
104
err.log
104
err.log
|
@ -1,102 +1,2 @@
|
|||
2025-05-30 11:18:50.925 54389-54744 CustomVpnService com.example.studyapp W VPN is not active. Skipping packet processing.
|
||||
2025-05-30 11:18:50.929 300-315 ActivityManager system_server W Bringing down service while still waiting for start foreground: ServiceRecord{710855b u0 com.example.studyapp/.proxy.CustomVpnService}
|
||||
---------------------------- PROCESS ENDED (54389) for package com.example.studyapp ----------------------------
|
||||
2025-05-30 11:18:50.965 54389-54389 CustomVpnService com.example.studyapp I VPN 服务已停止
|
||||
2025-05-30 11:18:50.965 54389-54389 stopProxy com.example.studyapp D 服务已成功停止
|
||||
2025-05-30 11:18:50.966 54389-54389 Choreographer com.example.studyapp I Skipped 53 frames! The application may be doing too much work on its main thread.
|
||||
2025-05-30 11:18:50.970 54389-54389 CustomVpnService com.example.studyapp I VPN 服务已销毁
|
||||
2025-05-30 11:18:50.970 54389-54389 AndroidRuntime com.example.studyapp D Shutting down VM
|
||||
2025-05-30 11:18:50.971 54389-54389 AndroidRuntime com.example.studyapp E FATAL EXCEPTION: main (Ask Gemini)
|
||||
Process: com.example.studyapp, PID: 54389
|
||||
android.app.RemoteServiceException$ForegroundServiceDidNotStartInTimeException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{710855b u0 com.example.studyapp/.proxy.CustomVpnService}
|
||||
at android.app.ActivityThread.generateForegroundServiceDidNotStartInTimeException(ActivityThread.java:2005)
|
||||
at android.app.ActivityThread.throwRemoteServiceException(ActivityThread.java:1979)
|
||||
at android.app.ActivityThread.-$$Nest$mthrowRemoteServiceException(Unknown Source:0)
|
||||
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2241)
|
||||
at android.os.Handler.dispatchMessage(Handler.java:106)
|
||||
at android.os.Looper.loopOnce(Looper.java:201)
|
||||
at android.os.Looper.loop(Looper.java:288)
|
||||
at android.app.ActivityThread.main(ActivityThread.java:7930)
|
||||
at java.lang.reflect.Method.invoke(Native Method)
|
||||
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
|
||||
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
|
||||
Caused by: android.app.StackTrace: Last startServiceCommon() call for this service was made here
|
||||
at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1915)
|
||||
at android.app.ContextImpl.startForegroundService(ContextImpl.java:1870)
|
||||
at android.content.ContextWrapper.startForegroundService(ContextWrapper.java:822)
|
||||
at android.content.ContextWrapper.startForegroundService(ContextWrapper.java:822)
|
||||
at com.example.studyapp.MainActivity.handleVpnPermissionResult(MainActivity.java:241)
|
||||
at com.example.studyapp.MainActivity.onActivityResult(MainActivity.java:175)
|
||||
at com.example.studyapp.MainActivity.startProxyServer(MainActivity.java:143)
|
||||
at com.example.studyapp.MainActivity.startProxyVpn(MainActivity.java:127)
|
||||
at com.example.studyapp.MainActivity.lambda$onCreate$1$com-example-studyapp-MainActivity(MainActivity.java:86)
|
||||
at com.example.studyapp.MainActivity$$ExternalSyntheticLambda5.onClick(D8$$SyntheticClass:0)
|
||||
at android.view.View.performClick(View.java:7542)
|
||||
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1218)
|
||||
at android.view.View.performClickInternal(View.java:7519)
|
||||
at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
|
||||
at android.view.View$PerformClick.run(View.java:29476)
|
||||
at android.os.Handler.handleCallback(Handler.java:942)
|
||||
at android.os.Handler.dispatchMessage(Handler.java:99)
|
||||
at android.os.Looper.loopOnce(Looper.java:201)
|
||||
at android.os.Looper.loop(Looper.java:288)
|
||||
at android.app.ActivityThread.main(ActivityThread.java:7930)
|
||||
at java.lang.reflect.Method.invoke(Native Method)
|
||||
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
|
||||
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
|
||||
2025-05-30 11:18:50.973 300-4987 ActivityTaskManager system_server W Force finishing activity com.example.studyapp/.MainActivity
|
||||
2025-05-30 11:18:50.986 54389-54389 Process com.example.studyapp I Sending signal. PID: 54389 SIG: 9
|
||||
2025-05-30 11:18:51.022 300-10818 ActivityManager system_server I app.info.packageName:com.example.studyapp app.setKilled(true)
|
||||
2025-05-30 11:18:51.022 300-10818 ActivityManager system_server I Process com.example.studyapp (pid 54389) has died: fg TOP
|
||||
2025-05-30 11:18:51.022 300-986 WindowManager system_server I WIN DEATH: Window{ce188c0 u0 com.example.studyapp/com.example.studyapp.MainActivity}
|
||||
2025-05-30 11:18:51.022 300-986 InputManager-JNI system_server W Input channel object 'ce188c0 com.example.studyapp/com.example.studyapp.MainActivity (client)' was disposed without first being removed with the input manager!
|
||||
2025-05-30 11:18:51.054 300-319 WindowManager system_server W Failed to deliver inset state change to w=Window{ce188c0 u0 com.example.studyapp/com.example.studyapp.MainActivity EXITING} (Ask Gemini)
|
||||
android.os.DeadObjectException
|
||||
at android.os.BinderProxy.transactNative(Native Method)
|
||||
at android.os.BinderProxy.transact(BinderProxy.java:584)
|
||||
at android.view.IWindow$Stub$Proxy.insetsControlChanged(IWindow.java:473)
|
||||
at com.android.server.wm.WindowState.notifyInsetsControlChanged(WindowState.java:4015)
|
||||
at com.android.server.wm.InsetsStateController.lambda$notifyPendingInsetsControlChanged$4$com-android-server-wm-InsetsStateController(InsetsStateController.java:351)
|
||||
at com.android.server.wm.InsetsStateController$$ExternalSyntheticLambda2.run(Unknown Source:2)
|
||||
at com.android.server.wm.WindowAnimator.executeAfterPrepareSurfacesRunnables(WindowAnimator.java:345)
|
||||
at com.android.server.wm.RootWindowContainer.performSurfacePlacementNoTrace(RootWindowContainer.java:832)
|
||||
at com.android.server.wm.RootWindowContainer.performSurfacePlacement(RootWindowContainer.java:777)
|
||||
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:177)
|
||||
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:126)
|
||||
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:115)
|
||||
at com.android.server.wm.WindowSurfacePlacer$Traverser.run(WindowSurfacePlacer.java:57)
|
||||
at android.os.Handler.handleCallback(Handler.java:942)
|
||||
at android.os.Handler.dispatchMessage(Handler.java:99)
|
||||
at android.os.Looper.loopOnce(Looper.java:201)
|
||||
at android.os.Looper.loop(Looper.java:288)
|
||||
at android.os.HandlerThread.run(HandlerThread.java:67)
|
||||
at com.android.server.ServiceThread.run(ServiceThread.java:44)
|
||||
2025-05-30 11:18:51.054 300-319 WindowManager system_server W Exception thrown during dispatchAppVisibility Window{ce188c0 u0 com.example.studyapp/com.example.studyapp.MainActivity EXITING} (Ask Gemini)
|
||||
android.os.DeadObjectException
|
||||
at android.os.BinderProxy.transactNative(Native Method)
|
||||
at android.os.BinderProxy.transact(BinderProxy.java:584)
|
||||
at android.view.IWindow$Stub$Proxy.dispatchAppVisibility(IWindow.java:536)
|
||||
at com.android.server.wm.WindowState.sendAppVisibilityToClients(WindowState.java:3478)
|
||||
at com.android.server.wm.WindowContainer.sendAppVisibilityToClients(WindowContainer.java:1234)
|
||||
at com.android.server.wm.WindowToken.setClientVisible(WindowToken.java:392)
|
||||
at com.android.server.wm.ActivityRecord.setClientVisible(ActivityRecord.java:6865)
|
||||
at com.android.server.wm.ActivityRecord.onAnimationFinished(ActivityRecord.java:7687)
|
||||
at com.android.server.wm.ActivityRecord.postApplyAnimation(ActivityRecord.java:5512)
|
||||
at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:5472)
|
||||
at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:5476)
|
||||
at com.android.server.wm.AppTransitionController.handleClosingApps(AppTransitionController.java:1194)
|
||||
at com.android.server.wm.AppTransitionController.handleAppTransitionReady(AppTransitionController.java:304)
|
||||
at com.android.server.wm.RootWindowContainer.checkAppTransitionReady(RootWindowContainer.java:970)
|
||||
at com.android.server.wm.RootWindowContainer.performSurfacePlacementNoTrace(RootWindowContainer.java:834)
|
||||
at com.android.server.wm.RootWindowContainer.performSurfacePlacement(RootWindowContainer.java:777)
|
||||
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:177)
|
||||
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:126)
|
||||
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:115)
|
||||
at com.android.server.wm.WindowSurfacePlacer$Traverser.run(WindowSurfacePlacer.java:57)
|
||||
at android.os.Handler.handleCallback(Handler.java:942)
|
||||
at android.os.Handler.dispatchMessage(Handler.java:99)
|
||||
at android.os.Looper.loopOnce(Looper.java:201)
|
||||
at android.os.Looper.loop(Looper.java:288)
|
||||
at android.os.HandlerThread.run(HandlerThread.java:67)
|
||||
at com.android.server.ServiceThread.run(ServiceThread.java:44)
|
||||
2025-05-30 11:18:51.473 300-318 ActivityTaskManager system_server W Activity top resumed state loss timeout for ActivityRecord{86432f9 u0 com.example.studyapp/.MainActivity} t-1 f}}
|
||||
2025-05-30 15:22:09.569 18506-18506 V2rayUtil com.example.studyapp E Failed to create directory: /data/v2ray
|
||||
2025-05-30 15:22:09.569 18506-18506 V2Ray com.example.studyapp E V2Ray files are missing, cannot start.
|
Loading…
Reference in New Issue