diff --git a/app/build.gradle b/app/build.gradle index 1586aec..3a46911 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,6 +14,13 @@ android { versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + // 指定支持的 ABI 类型(如果需要限制支持的 ABI) + externalNativeBuild { + cmake { + arguments "-DANDROID_ABI=arm64-v8a" + } + } } buildTypes { @@ -21,15 +28,28 @@ android { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } + debug { + // 禁用符号剥离 + ndk { + debugSymbolLevel 'none' + } + } } compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } + + // 添加 CMake 支持 + externalNativeBuild { + cmake { + // 指定 CMakeLists.txt 的路径 + path file("src/main/cpp/CMakeLists.txt") + } + } } dependencies { - implementation libs.appcompat implementation libs.material implementation libs.activity @@ -37,6 +57,7 @@ dependencies { testImplementation libs.junit androidTestImplementation libs.ext.junit androidTestImplementation libs.espresso.core + // Retrofit 核心库 implementation 'com.squareup.retrofit2:retrofit:2.9.0' @@ -45,5 +66,4 @@ dependencies { // 如果需要 RxJava 支持(可选) implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0' - } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e72fe2a..d15518c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,6 +13,7 @@ + diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt new file mode 100644 index 0000000..8b523d0 --- /dev/null +++ b/app/src/main/cpp/CMakeLists.txt @@ -0,0 +1,28 @@ + cmake_minimum_required(VERSION 3.10.2) # 指定最低版本 + project("native_lib") # 定义项目名称 + + # 设置源文件列表 + set(SOURCE_FILES + infoct.cpp # 确保路径正确 + ) + set(CMAKE_ANDROID_ARCH_ABI arm64-v8a) + set(CMAKE_BUILD_TYPE Debug) # 确保构建为 Debug 模式 + set(CMAKE_NO_STRIP ON) # 禁止符号剥离 + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}) + + + # 包含头文件目录 + include_directories(${CMAKE_SOURCE_DIR})# 确保 fk_common_struct.h 可用 + + # 生成共享库 + add_library( # 设置生成的库名称 + native + SHARED + ${SOURCE_FILES} + ) + + # 链接系统库(例如 log 日志和 libc 等) + target_link_libraries( + native + log # 用于 __android_log_print + ) \ No newline at end of file diff --git a/app/src/main/cpp/fk_common_struct.h b/app/src/main/cpp/fk_common_struct.h new file mode 100644 index 0000000..049f8b2 --- /dev/null +++ b/app/src/main/cpp/fk_common_struct.h @@ -0,0 +1,67 @@ +// + +#define CMD_BASE 0xCBAABC10 + +#define FK_ADD_UID (CMD_BASE + 1) +#define FK_REMOVE_UID (CMD_BASE + 2) +#define FK_REMOVE_ALL_UID (CMD_BASE + 3) +#define FK_SET_ANTI_DEBUG_STATUS (CMD_BASE + 4) + +#define FK_GET_POWER (CMD_BASE + 10) +#define FK_GET_POWER2 (CMD_BASE + 12) +#define FK_RELEASE_POWER2 (CMD_BASE + 13) + + +#define FK_HAS_POWER (CMD_BASE + 20) + +#define FK_SET_CURRENT_NS_BOOT_ID (CMD_BASE + 30) +#define FK_SET_CURRENT_UNAME (CMD_BASE + 31) + +#define FK_SET_CURRENT_RAMSIZE (CMD_BASE + 51) +#define FK_SET_CURRENT_SYSTEM_UPTIME_OFFSET (CMD_BASE + 52) +#define FK_SET_CURRENT_DISK_INFO (CMD_BASE + 53) + + +#define FK_RESET_IO_REDIRECT (CMD_BASE + 100) +#define FK_ADD_REDIRECT_ITEM (CMD_BASE + 101) +#define FK_REMOVE_REDIRECT_ITEM (CMD_BASE + 102) + +#define FK_RESET_FILE_PATH_MOCK (CMD_BASE + 110) +#define FK_ADD_FILE_PATH_MOCK (CMD_BASE + 111) + +#define FK_CMD_MAX_VAL (CMD_BASE + 10000) + +#define FK_OP_SUCCESS 0 +#define FK_OP_FAILED 1000 + +#define ARRAY_LENGTH(x) (sizeof(x) / sizeof(x[0])) + +// +#define FILE_PATH_MOCK_INFO_MAX 32 +struct file_path_mock_info { + char filepath[256]; + int status; // 0 + long atime; + long mtime; + long ctime; + long long rom_size; + long long free_size; + long long avail_size; +}; + +#define FK_DISK_INFO_MAX 8 +struct fk_disk_info { + long long rom_size; + long long free_size; + long long avail_size; +}; + +#define BLACK_UID_MAX 32 + + +#define REDIRECT_ITEM_MAX 32 +struct io_redirect_item { + int status; // 0 for not used, 1 for used + char key[PATH_MAX]; + char value[PATH_MAX]; +}; \ No newline at end of file diff --git a/app/src/main/cpp/infoct.cpp b/app/src/main/cpp/infoct.cpp new file mode 100644 index 0000000..54158e2 --- /dev/null +++ b/app/src/main/cpp/infoct.cpp @@ -0,0 +1,305 @@ +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include "fk_common_struct.h" + +#define MY_LOG_TAG "DeviceTool-native" + +#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, MY_LOG_TAG,__VA_ARGS__) // 定义LOGE类型 + + +extern "C" +JNIEXPORT jlongArray + +JNICALL +Java_com_android_devicetool_Native_getSysInfo(JNIEnv *env, jclass clazz) { + struct sysinfo s_info; + sysinfo(&s_info); + + jlongArray ret = env->NewLongArray(6); + jlong sysInfoArr[6] = {0}; + + sysInfoArr[0] = s_info.totalram * s_info.mem_unit; + sysInfoArr[1] = s_info.freeram * s_info.mem_unit; + sysInfoArr[2] = s_info.sharedram * s_info.mem_unit; + sysInfoArr[3] = s_info.bufferram * s_info.mem_unit; + sysInfoArr[4] = s_info.totalswap * s_info.mem_unit; + sysInfoArr[5] = s_info.freeswap * s_info.mem_unit; + + env->SetLongArrayRegion(ret, 0, 6, (jlong *) sysInfoArr); + + return ret; +} + + +extern "C" +JNIEXPORT void JNICALL +Java_com_android_devicetool_Native_getPower(JNIEnv +*env, +jclass clazz +) { +prctl(FK_GET_POWER, 0, 0, 0); +} + + +static unsigned char hexCharToByte(char high, char low) { + unsigned char highValue, lowValue; + + if (isdigit(high)) { + highValue = high - '0'; + } else { + highValue = toupper(high) - 'A' + 10; + } + + if (isdigit(low)) { + lowValue = low - '0'; + } else { + lowValue = toupper(low) - 'A' + 10; + } + + return (highValue << 4) | lowValue; +} + +// 函数实现 +static size_t hexStrToByteArray(const char *hexStr, unsigned char *byteArray) { + size_t len = strlen(hexStr); + + if (len % 2 != 0) { + return 0; // 输入长度无效 + } + + size_t byteArraySize = len / 2; + + for (size_t i = 0; i < byteArraySize; i++) { + byteArray[i] = hexCharToByte(hexStr[2 * i], hexStr[2 * i + 1]); + } + + return byteArraySize; +} + +extern "C" +JNIEXPORT void JNICALL +Java_com_example_studyapp_device_Native_setBootId(JNIEnv +*env, +jclass clazz, jstring +boot_id_hex_str) { +if (boot_id_hex_str == NULL) { +env-> +ThrowNew(env +->FindClass("java/lang/IllegalArgumentException"), "boot_id_hex_str is NULL"); +return; +} + +const char *c_boot_id_hex_str = env->GetStringUTFChars(boot_id_hex_str, 0); +if (c_boot_id_hex_str == NULL) { +env-> +ThrowNew(env +->FindClass("java/lang/OutOfMemoryError"), "Unable to allocate memory for string."); +return; +} + +size_t length = strlen(c_boot_id_hex_str); +if (length != 32) { +env-> +ReleaseStringUTFChars(boot_id_hex_str, c_boot_id_hex_str +); +env-> +ThrowNew(env +->FindClass("java/lang/IllegalArgumentException"), "Invalid boot_id length, expected 32."); +return; +} + +unsigned char boot_id[16] = {0}; +if (! +hexStrToByteArray(c_boot_id_hex_str, boot_id +)) { +env-> +ReleaseStringUTFChars(boot_id_hex_str, c_boot_id_hex_str +); +env-> +ThrowNew(env +->FindClass("java/lang/IllegalArgumentException"), "hexStrToByteArray failed."); +return; +} + +if (prctl(FK_SET_CURRENT_NS_BOOT_ID, boot_id, 0, 0) != 0) { +env-> +ReleaseStringUTFChars(boot_id_hex_str, c_boot_id_hex_str +); +env-> +ThrowNew(env +->FindClass("java/lang/RuntimeException"), "prctl call failed."); +return; +} + +env-> +ReleaseStringUTFChars(boot_id_hex_str, c_boot_id_hex_str +); +} + +extern "C" +JNIEXPORT void JNICALL +Java_com_android_devicetool_Native_deviceInfoChange(JNIEnv +*env, +jclass clazz +) { + + +prctl(FK_RESET_IO_REDIRECT); +prctl(FK_RESET_FILE_PATH_MOCK); +prctl(FK_REMOVE_ALL_UID); + +prctl(FK_ADD_UID, + +getuid() + +); +prctl(FK_ADD_UID, 2000); + +struct new_utsname my_utsname = { + .sysname = "Linux", + .nodename = "localhost", + .release = "5.9.0-42", + .version = "#46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020", + .machine = "aarch64", + .domainname = "(none)" +}; + +struct sysinfo s_info; +sysinfo(&s_info); +//4179690496 +// 990355536 +prctl(FK_SET_CURRENT_UNAME, my_utsname); + +long long my_ramsize = 4179690496l * s_info.mem_unit; +prctl(FK_SET_CURRENT_RAMSIZE, &my_ramsize); +prctl(FK_SET_CURRENT_SYSTEM_UPTIME_OFFSET, 1000); + + +struct fk_disk_info tmp_disk_info = { + .avail_size = 110735782912, + .free_size = 100752560128, + .rom_size = 130041423872l +}; +// 修改磁盘大小 +// statfs "/data" +// statfs "/sdcard" + +prctl(FK_SET_CURRENT_DISK_INFO, tmp_disk_info); + + +struct file_path_mock_info tmp_file_path_mock_info = { + .filepath = "/proc/cpuinfo", + .atime = 0, + .ctime = 0, + .mtime = 0 +}; + +// 修改文件时间 +int tmpret = prctl(FK_ADD_FILE_PATH_MOCK, tmp_file_path_mock_info); +LOGE("FK_ADD_FILE_PATH_MOCK tmpret : %d", tmpret); + +// 路径重定向 +tmpret = prctl(FK_ADD_REDIRECT_ITEM, "/proc/cpuinfo", "/proc/meminfo"); +LOGE("FK_ADD_REDIRECT_ITEM tmpret : %d", tmpret); + +} + +extern "C" +JNIEXPORT jboolean +JNICALL + Java_com_android_devicetool_Native_cpuInfoChange(JNIEnv * env, jclass, jstring +redirectPath) { +prctl(FK_RESET_IO_REDIRECT); +prctl(FK_RESET_FILE_PATH_MOCK); +prctl(FK_REMOVE_ALL_UID); + +prctl(FK_ADD_UID, 2000); + +struct file_path_mock_info tmp_file_path_mock_info = { + .filepath = "/proc/cpuinfo", + .atime = 0, + .ctime = 0, + .mtime = 0 +}; +const char *newPath = env->GetStringUTFChars(redirectPath, nullptr); +LOGE("cpuinfo(newPath) : %s", newPath); + +int ret = prctl(FK_ADD_FILE_PATH_MOCK, tmp_file_path_mock_info); +if (ret == -1) +return false; + +ret = prctl(FK_ADD_REDIRECT_ITEM, "/proc/cpuinfo", newPath); + +return ret != -1; +} + +extern "C" +JNIEXPORT void JNICALL +Java_com_android_devicetool_Native_deviceInfoShow(JNIEnv +*env, +jclass clazz +) { +struct sysinfo s_info; +sysinfo(&s_info); + +LOGE("s_info.totalram %ld", s_info.totalram); +LOGE("s_info.freeram %ld", s_info.freeram); +LOGE("s_info.sharedram %ld", s_info.sharedram); +LOGE("s_info.bufferram %ld", s_info.bufferram); +LOGE("s_info.mem_unit %ld", s_info.mem_unit); +LOGE("s_info.uptime %ld", s_info.uptime); + +struct statfs my_data; +statfs("/data", &my_data); + +LOGE("/data rom_size %ld", my_data.f_blocks * my_data.f_bsize); +LOGE("/data free_size %ld", my_data.f_bfree * my_data.f_bsize); +LOGE("/data avail_size %ld", my_data.f_bavail * my_data.f_bsize); + + +struct stat64 mystat; +int stat_ret = stat64("/proc/cpuinfo", &mystat); +LOGE("stat64 /proc/cpuinfo %d", stat_ret); +LOGE("/proc/cpuinfo st_atim %ld", mystat.st_atim.tv_sec); +LOGE("/proc/cpuinfo st_mtim %ld", mystat.st_mtim.tv_sec); +LOGE("/proc/cpuinfo st_ctim %ld", mystat.st_ctim.tv_sec); + + +} +extern "C" +JNIEXPORT void JNICALL +Java_com_android_devicetool_Native_deviceInfoReset(JNIEnv +*env, +jclass clazz +) { +prctl(FK_RESET_IO_REDIRECT); +prctl(FK_RESET_FILE_PATH_MOCK); +prctl(FK_REMOVE_ALL_UID); + +prctl(FK_SET_CURRENT_UNAME, 0); +prctl(FK_SET_CURRENT_RAMSIZE, 0); +prctl(FK_SET_CURRENT_SYSTEM_UPTIME_OFFSET, 0); +prctl(FK_SET_CURRENT_DISK_INFO, NULL); +} +extern "C" +JNIEXPORT void JNICALL +Java_com_android_devicetool_Native_enableBypassAntiDebug(JNIEnv +*env, +jclass clazz, jint +uid) { +prctl(FK_REMOVE_ALL_UID); +prctl(FK_ADD_UID, uid); +prctl(FK_SET_ANTI_DEBUG_STATUS, 1); +} \ No newline at end of file diff --git a/app/src/main/java/com/example/studyapp/MainActivity.java b/app/src/main/java/com/example/studyapp/MainActivity.java index 3946452..31f8262 100644 --- a/app/src/main/java/com/example/studyapp/MainActivity.java +++ b/app/src/main/java/com/example/studyapp/MainActivity.java @@ -30,6 +30,7 @@ import androidx.core.content.ContextCompat; import androidx.appcompat.app.AppCompatActivity; import com.example.studyapp.autoJS.AutoJsUtil; +import com.example.studyapp.device.ChangeDeviceInfo; import com.example.studyapp.proxy.CustomVpnService; import com.example.studyapp.utils.ReflectionHelper; @@ -94,6 +95,20 @@ public class MainActivity extends AppCompatActivity { Toast.makeText(this, "Disconnect button not found", Toast.LENGTH_SHORT).show(); } + Button modifyDeviceInfoButton = findViewById(R.id.modifyDeviceInfoButton); + if (modifyDeviceInfoButton != null) { + modifyDeviceInfoButton.setOnClickListener(v -> ChangeDeviceInfo.changeDeviceInfo(getPackageName(),this)); + } else { + Toast.makeText(this, "modifyDeviceInfo button not found", Toast.LENGTH_SHORT).show(); + } + + Button resetDeviceInfoButton = findViewById(R.id.resetDeviceInfoButton); + if (resetDeviceInfoButton != null) { + resetDeviceInfoButton.setOnClickListener(v -> ChangeDeviceInfo.resetChangedDeviceInfo(getPackageName(),this)); + } else { + Toast.makeText(this, "resetDeviceInfo button not found", Toast.LENGTH_SHORT).show(); + } + } private void startProxyVpn(Context context) { diff --git a/app/src/main/java/com/example/studyapp/device/ChangeDeviceInfo.java b/app/src/main/java/com/example/studyapp/device/ChangeDeviceInfo.java index 78d39c7..80d365d 100644 --- a/app/src/main/java/com/example/studyapp/device/ChangeDeviceInfo.java +++ b/app/src/main/java/com/example/studyapp/device/ChangeDeviceInfo.java @@ -20,7 +20,7 @@ import java.lang.reflect.Method; public class ChangeDeviceInfo { - public void changeDeviceInfo(String current_pkg_name,Context context) { + public static void changeDeviceInfo(String current_pkg_name,Context context) { // 指定包名优先级高于全局 callVCloudSettings_put(current_pkg_name + "_android_id", "my123456",context); callVCloudSettings_put(current_pkg_name + "_screen_brightness", "100",context); @@ -118,26 +118,36 @@ public class ChangeDeviceInfo { } - private void callVCloudSettings_put(String key, String value, Context context) { + private static void callVCloudSettings_put(String key, String value, Context context) { if (context == null) { throw new IllegalArgumentException("Context cannot be null"); } try { + // 获取类对象 Class clazz = Class.forName("android.provider.VCloudSettings$Global"); Method putStringMethod = clazz.getDeclaredMethod("putString", ContentResolver.class, String.class, String.class); putStringMethod.setAccessible(true); + + // 调用方法 putStringMethod.invoke(null, context.getContentResolver(), key, value); + Log.d("Debug", "putString executed successfully."); } catch (ClassNotFoundException e) { - throw new RuntimeException("Class VCloudSettings$Global not found", e); + Log.e("Reflection Error", "Class not found", e); } catch (NoSuchMethodException e) { - throw new RuntimeException("Method putString not found", e); - } catch (IllegalAccessException | InvocationTargetException e) { - throw new RuntimeException("Failed to invoke putString via reflection", e); + Log.e("Reflection Error", "Method not found", e); + } catch (InvocationTargetException e) { + Throwable cause = e.getTargetException(); // 获取异常的根原因 + if (cause instanceof SecurityException) { + Log.e("Reflection Error", "SecurityException: Permission denied. You need WRITE_SECURE_SETTINGS.", cause); + } else { + Log.e("Reflection Error", "InvocationTargetException during putString invocation", e); + } + } catch (Exception e) { + Log.e("Reflection Error", "Unexpected error during putString invocation", e); } } - - private void resetChangedDeviceInfo(String current_pkg_name,Context context) { + public static void resetChangedDeviceInfo(String current_pkg_name,Context context) { try { Native.setBootId("00000000000000000000000000000000"); } catch (Exception e) { diff --git a/app/src/main/jniLibs/arm64-v8a/libnative.so b/app/src/main/jniLibs/arm64-v8a/libnative.so new file mode 100644 index 0000000..255178e Binary files /dev/null and b/app/src/main/jniLibs/arm64-v8a/libnative.so differ diff --git a/err.log b/err.log index 44e5434..70a54f7 100644 --- a/err.log +++ b/err.log @@ -1,14 +1,72 @@ -2025-05-29 15:19:05.558 65246-65246 AndroidRuntime com.example.studyapp D Shutting down VM -2025-05-29 15:19:05.559 65246-65246 AndroidRuntime com.example.studyapp E FATAL EXCEPTION: main (Ask Gemini) - Process: com.example.studyapp, PID: 65246 - java.lang.IllegalArgumentException: Service not registered: com.example.studyapp.MainActivity$1@992d8bc - at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:2015) - at android.app.ContextImpl.unbindService(ContextImpl.java:2076) - at android.content.ContextWrapper.unbindService(ContextWrapper.java:889) - at android.content.ContextWrapper.unbindService(ContextWrapper.java:889) - at com.example.studyapp.MainActivity.stopProxy(MainActivity.java:186) - at com.example.studyapp.MainActivity.lambda$onCreate$2$com-example-studyapp-MainActivity(MainActivity.java:94) - at com.example.studyapp.MainActivity$$ExternalSyntheticLambda5.onClick(D8$$SyntheticClass:0) +2025-05-29 18:31:01.362 12214-12253 OpenGLRenderer com.example.studyapp I Davey! duration=9184238016ms; Flags=0, FrameTimelineVsyncId=72708, IntendedVsync=4113925334671, Vsync=4113925334671, InputEventId=-1041137076, HandleInputStart=4113926523074, AnimationStart=4113931604430, PerformTraversalsStart=4113931816166, DrawStart=4113932196473, FrameDeadline=9188320516271553, FrameInterval=4113926504409, FrameStartTime=16666667, SyncQueued=4113937541186, SyncStart=4113937854706, IssueDrawCommandsStart=4113937950366, SwapBuffers=4113939236526, FrameCompleted=9188351942323312, DequeueBufferDuration=23040, QueueBufferDuration=465177, GpuCompleted=9188351942323312, SwapBuffersCompleted=4113940226083, DisplayPresentTime=0, CommandSubmissionCompleted=4113939236526, +2025-05-29 18:31:02.682 12214-12233 OpenGLRenderer com.example.studyapp I Davey! duration=9184238019ms; Flags=0, FrameTimelineVsyncId=72966, IntendedVsync=4115242001364, Vsync=4115242001364, InputEventId=-866436489, HandleInputStart=4115243018485, AnimationStart=4115247485342, PerformTraversalsStart=4115247717785, DrawStart=4115248097217, FrameDeadline=9188352142352764, FrameInterval=4115243003028, FrameStartTime=16666667, SyncQueued=4115258519494, SyncStart=4115258606988, IssueDrawCommandsStart=4115258749020, SwapBuffers=4115260557520, FrameCompleted=9188353261370630, DequeueBufferDuration=18082, QueueBufferDuration=241775, GpuCompleted=9188353261370630, SwapBuffersCompleted=4115261043694, DisplayPresentTime=0, CommandSubmissionCompleted=4115260557520, +2025-05-29 18:31:02.750 12214-12228 xample.studyapp com.example.studyapp I Compiler allocated 4413KB to compile void android.view.ViewRootImpl.performTraversals() +2025-05-29 18:31:02.831 12214-12233 OpenGLRenderer com.example.studyapp I Davey! duration=9184238017ms; Flags=0, FrameTimelineVsyncId=73029, IntendedVsync=4115392001367, Vsync=4115392001367, InputEventId=-471849332, HandleInputStart=4115392772438, AnimationStart=4115398737358, PerformTraversalsStart=4115398960759, DrawStart=4115399244823, FrameDeadline=9188353392352789, FrameInterval=4115392759023, FrameStartTime=16666667, SyncQueued=4115407484419, SyncStart=4115407640741, IssueDrawCommandsStart=4115407725318, SwapBuffers=4115409246546, FrameCompleted=9188353409823715, DequeueBufferDuration=18082, QueueBufferDuration=240608, GpuCompleted=9188353409823715, SwapBuffersCompleted=4115409741762, DisplayPresentTime=0, CommandSubmissionCompleted=4115409246546, +2025-05-29 18:31:03.812 1922-2017 MemInfoService com.android.expansiontools D memScan: [MemEntity(id=null, pid=12214, user=u0_a103, name=Script helper, pkg=com.example.studyapp, res=187, time=0, total=5083, ts=1748514663424, pr=10, ni=-10, virt=14336, shr=102, s=S, cpu=0.0, mem=5.6, args=com.example.studyapp)] +2025-05-29 18:31:04.312 12214-12253 OpenGLRenderer com.example.studyapp I Davey! duration=9184238014ms; Flags=0, FrameTimelineVsyncId=73190, IntendedVsync=4116892001397, Vsync=4116892001397, InputEventId=-382612953, HandleInputStart=4116893008865, AnimationStart=4116893016156, PerformTraversalsStart=4116893021114, DrawStart=4116893357966, FrameDeadline=9188353542352792, FrameInterval=4116892979992, FrameStartTime=16666667, SyncQueued=4116903203825, SyncStart=4116903234739, IssueDrawCommandsStart=4116903293069, SwapBuffers=4116906054086, FrameCompleted=9188354906737413, DequeueBufferDuration=12832, QueueBufferDuration=189279, GpuCompleted=9188354906737413, SwapBuffersCompleted=4116906448392, DisplayPresentTime=0, CommandSubmissionCompleted=4116906054086, +2025-05-29 18:31:04.352 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.353 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.354 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.354 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.355 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.356 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.356 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.357 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.358 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.358 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.359 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.360 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.360 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.361 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.361 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.362 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.363 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.363 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.364 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.365 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.366 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.366 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.367 12214-12214 Debug com.example.studyapp D putString executed successfully. +2025-05-29 18:31:04.377 12214-12214 ShellUtils com.example.studyapp D Executing command: setprop ro.product.brand google +2025-05-29 18:31:04.394 12214-12214 ShellUtils com.example.studyapp D Executing command: setprop ro.product.model raven +2025-05-29 18:31:04.406 12214-12214 ShellUtils com.example.studyapp D Executing command: setprop ro.product.manufacturer google +2025-05-29 18:31:04.425 12214-12214 ShellUtils com.example.studyapp D Executing command: setprop ro.product.device raven +2025-05-29 18:31:04.455 12214-12214 ShellUtils com.example.studyapp D Executing command: setprop ro.product.name raven +2025-05-29 18:31:04.468 12214-12214 ShellUtils com.example.studyapp D Executing command: setprop ro.build.version.incremental 9325679 +2025-05-29 18:31:04.477 12214-12214 ShellUtils com.example.studyapp E Unsafe command, aborting. +2025-05-29 18:31:04.478 12214-12214 ShellUtils com.example.studyapp D Executing command: setprop ro.board.platform acr980m +2025-05-29 18:31:04.488 12214-12214 System.err com.example.studyapp W java.lang.UnsatisfiedLinkError: dlopen failed: library "libnative.so" not found +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at java.lang.Runtime.loadLibrary0(Runtime.java:1077) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at java.lang.Runtime.loadLibrary0(Runtime.java:998) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at java.lang.System.loadLibrary(System.java:1670) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at com.example.studyapp.device.Native.(Native.java:6) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at com.example.studyapp.device.Native.setBootId(Native Method) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at com.example.studyapp.device.ChangeDeviceInfo.changeDeviceInfo(ChangeDeviceInfo.java:103) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at com.example.studyapp.MainActivity.lambda$onCreate$3$com-example-studyapp-MainActivity(MainActivity.java:100) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at com.example.studyapp.MainActivity$$ExternalSyntheticLambda7.onClick(D8$$SyntheticClass:0) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at android.view.View.performClick(View.java:7542) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1218) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at android.view.View.performClickInternal(View.java:7519) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at android.view.View$PerformClick.run(View.java:29476) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at android.os.Handler.handleCallback(Handler.java:942) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at android.os.Handler.dispatchMessage(Handler.java:99) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at android.os.Looper.loopOnce(Looper.java:201) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at android.os.Looper.loop(Looper.java:288) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at android.app.ActivityThread.main(ActivityThread.java:7930) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at java.lang.reflect.Method.invoke(Native Method) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) +2025-05-29 18:31:04.489 12214-12214 System.err com.example.studyapp W at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) +2025-05-29 18:31:04.489 12214-12214 xample.studyapp com.example.studyapp E No implementation found for void com.example.studyapp.device.Native.setBootId(java.lang.String) (tried Java_com_example_studyapp_device_Native_setBootId and Java_com_example_studyapp_device_Native_setBootId__Ljava_lang_String_2) +--------- beginning of crash +2025-05-29 18:31:04.489 12214-12214 AndroidRuntime com.example.studyapp D Shutting down VM +2025-05-29 18:31:04.489 12214-12214 AndroidRuntime com.example.studyapp E FATAL EXCEPTION: main (Ask Gemini) + Process: com.example.studyapp, PID: 12214 + java.lang.UnsatisfiedLinkError: No implementation found for void com.example.studyapp.device.Native.setBootId(java.lang.String) (tried Java_com_example_studyapp_device_Native_setBootId and Java_com_example_studyapp_device_Native_setBootId__Ljava_lang_String_2) + at com.example.studyapp.device.Native.setBootId(Native Method) + at com.example.studyapp.device.ChangeDeviceInfo.changeDeviceInfo(ChangeDeviceInfo.java:103) + at com.example.studyapp.MainActivity.lambda$onCreate$3$com-example-studyapp-MainActivity(MainActivity.java:100) + at com.example.studyapp.MainActivity$$ExternalSyntheticLambda7.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) @@ -22,85 +80,17 @@ 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-29 15:19:05.560 301-56098 ActivityTaskManager system_server W Force finishing activity com.example.studyapp/.MainActivity -2025-05-29 15:19:05.566 65246-65246 Process com.example.studyapp I Sending signal. PID: 65246 SIG: 9 ----------------------------- PROCESS ENDED (65246) for package com.example.studyapp ---------------------------- -2025-05-29 15:19:05.600 301-317 ActivityManager system_server W Exception when unbinding service com.example.studyapp/.proxy.CustomVpnService (Ask Gemini) - android.os.DeadObjectException - at android.os.BinderProxy.transactNative(Native Method) - at android.os.BinderProxy.transact(BinderProxy.java:584) - at android.app.IApplicationThread$Stub$Proxy.scheduleUnbindService(IApplicationThread.java:1346) - at com.android.server.am.ActiveServices.removeConnectionLocked(ActiveServices.java:4923) - at com.android.server.am.ActiveServices.unbindServiceLocked(ActiveServices.java:3173) - at com.android.server.am.ActivityManagerService.unbindService(ActivityManagerService.java:12798) - at android.app.ContextImpl.unbindService(ContextImpl.java:2079) - at com.android.server.connectivity.Vpn$1.interfaceRemoved(Vpn.java:2076) - at com.android.server.NetworkManagementService.lambda$notifyInterfaceRemoved$3(NetworkManagementService.java:353) - at com.android.server.NetworkManagementService$$ExternalSyntheticLambda6.sendCallback(Unknown Source:2) - at com.android.server.NetworkManagementService.invokeForAllObservers(NetworkManagementService.java:314) - at com.android.server.NetworkManagementService.notifyInterfaceRemoved(NetworkManagementService.java:353) - at com.android.server.NetworkManagementService.-$$Nest$mnotifyInterfaceRemoved(Unknown Source:0) - at com.android.server.NetworkManagementService$NetdUnsolicitedEventListener.lambda$onInterfaceRemoved$6$com-android-server-NetworkManagementService$NetdUnsolicitedEventListener(NetworkManagementService.java:620) - at com.android.server.NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda0.run(Unknown Source:4) - 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-29 15:19:05.600 301-317 ActivityManager system_server W Bringing down service while still waiting for start foreground: ServiceRecord{7871f79 u0 com.example.studyapp/.proxy.CustomVpnService} -2025-05-29 15:19:05.623 301-326 ActivityManager system_server W Failed to update http proxy for: com.example.studyapp -2025-05-29 15:19:05.637 301-1242 ActivityManager system_server I app.info.packageName:com.example.studyapp app.setKilled(true) -2025-05-29 15:19:05.637 301-1242 ActivityManager system_server I Process com.example.studyapp (pid 65246) has died: fg +50 TOP -2025-05-29 15:19:05.637 301-986 WindowManager system_server I WIN DEATH: Window{d550fa0 u0 com.example.studyapp/com.example.studyapp.MainActivity} -2025-05-29 15:19:05.637 301-986 InputManager-JNI system_server W Input channel object 'd550fa0 com.example.studyapp/com.example.studyapp.MainActivity (client)' was disposed without first being removed with the input manager! -2025-05-29 15:19:05.660 301-321 WindowManager system_server W Failed to deliver inset state change to w=Window{d550fa0 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-29 15:19:05.661 301-321 WindowManager system_server W Exception thrown during dispatchAppVisibility Window{d550fa0 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-29 15:19:06.061 301-320 ActivityTaskManager system_server W Activity top resumed state loss timeout for ActivityRecord{e2942a u0 com.example.studyapp/.MainActivity} t-1 f}} +2025-05-29 18:31:04.491 300-11157 ActivityTaskManager system_server W Force finishing activity com.example.studyapp/.MainActivity +2025-05-29 18:31:04.498 300-316 ActivityManager system_server I Showing crash dialog for package com.example.studyapp u0 +2025-05-29 18:31:04.514 300-316 CoreBackPreview system_server D Window{a2bd234 u0 Application Error: com.example.studyapp}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.WindowOnBackInvokedDispatcher$OnBackInvokedCallbackWrapper@77359ff, mPriority=0} +2025-05-29 18:31:04.992 300-318 ActivityTaskManager system_server W Activity top resumed state loss timeout for ActivityRecord{ff3be4e u0 com.example.studyapp/.MainActivity} t118 f}} +2025-05-29 18:31:04.996 300-318 ActivityTaskManager system_server W Activity pause timeout for ActivityRecord{ff3be4e u0 com.example.studyapp/.MainActivity} t118 f}} +2025-05-29 18:31:09.354 300-384 InputDispatcher system_server W Window fd7dd4f com.example.studyapp/com.example.studyapp.MainActivity (server) is unresponsive: fd7dd4f com.example.studyapp/com.example.studyapp.MainActivity (server) is not responding. Waited 5002ms for MotionEvent +2025-05-29 18:31:09.354 300-384 InputDispatcher system_server W Canceling events for fd7dd4f com.example.studyapp/com.example.studyapp.MainActivity (server) because it is unresponsive +2025-05-29 18:31:09.354 300-384 WindowManager system_server I ANR in Window{fd7dd4f u0 com.example.studyapp/com.example.studyapp.MainActivity}. Reason:fd7dd4f com.example.studyapp/com.example.studyapp.MainActivity (server) is not responding. Waited 5002ms for MotionEvent +2025-05-29 18:31:09.395 300-12566 ActivityManager system_server I Crashing app skipping ANR: com.android.server.am.ProcessErrorStateRecord@d90e124 Input dispatching timed out (fd7dd4f com.example.studyapp/com.example.studyapp.MainActivity (server) is not responding. Waited 5002ms for MotionEvent) +2025-05-29 18:31:09.395 300-12566 ActivityManager system_server D Completed ANR of com.example.studyapp in 8ms, latency 0ms +2025-05-29 18:31:14.378 1922-2017 MemInfoService com.android.expansiontools D memScan: [MemEntity(id=null, pid=12214, user=u0_a103, name=Script helper, pkg=com.example.studyapp, res=183, time=3, total=5178, ts=1748514674151, pr=20, ni=0, virt=14336, shr=102, s=S, cpu=0.0, mem=5.5, args=com.example.studyapp)] +2025-05-29 18:31:15.031 300-318 ActivityTaskManager system_server W Activity destroy timeout for ActivityRecord{ff3be4e u0 com.example.studyapp/.MainActivity} t118 f}} +2025-05-29 18:31:15.031 300-318 InputManager-JNI system_server W Input channel object 'fd7dd4f com.example.studyapp/com.example.studyapp.MainActivity (client)' was disposed without first being removed with the input manager! +2025-05-29 18:31:24.950 1922-2017 MemInfoService com.android.expansiontools D memScan: [MemEntity(id=null, pid=12214, user=u0_a103, name=Script helper, pkg=com.example.studyapp, res=183, time=3, total=5119, ts=1748514684704, pr=20, ni=0, virt=14336, shr=102, s=S, cpu=0.0, mem=5.5, args=com.example.studyapp)] diff --git a/gradle.properties b/gradle.properties index 4387edc..d97a91d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,4 +18,5 @@ android.useAndroidX=true # Enables namespacing of each library's R class so that its R class includes only the # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file +android.nonTransitiveRClass=true +org.gradle.java.home=C:/Program Files/Java/jdk-21 \ No newline at end of file