diff --git a/.Jules/palette.md b/.Jules/palette.md new file mode 100644 index 0000000..e69de29 diff --git a/app/src/main/java/com/bytedance/shadowhook/sample/MainActivity.java b/app/src/main/java/com/bytedance/shadowhook/sample/MainActivity.java index 90c3219..cb6b173 100644 --- a/app/src/main/java/com/bytedance/shadowhook/sample/MainActivity.java +++ b/app/src/main/java/com/bytedance/shadowhook/sample/MainActivity.java @@ -25,10 +25,15 @@ import androidx.appcompat.app.AppCompatActivity; +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.View; +import android.widget.TextView; +import android.widget.Toast; import com.bytedance.shadowhook.ShadowHook; import com.bytedance.shadowhook.systest.SysTest; @@ -50,37 +55,47 @@ protected void onCreate(Bundle savedInstanceState) { public void onUnitTestHookSymAddrClick(View view) { NativeHandler.nativeHookSymAddr(Build.VERSION.SDK_INT); + Toast.makeText(this, "Hook symbol address (unit test) done", Toast.LENGTH_SHORT).show(); } public void onUnitTestHookSymNameClick(View view) { NativeHandler.nativeHookSymName(Build.VERSION.SDK_INT); + Toast.makeText(this, "Hook symbol name (unit test) done", Toast.LENGTH_SHORT).show(); } public void onUnitTestUnhookClick(View view) { NativeHandler.nativeUnhook(); + Toast.makeText(this, "Unhook (unit test) done", Toast.LENGTH_SHORT).show(); } public void onUnitTestLoadClick(View view) { - if(!hookee2Loaded) { + if (!hookee2Loaded) { hookee2Loaded = true; System.loadLibrary("hookee2"); + Toast.makeText(this, "Load libhookee2.so done", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(this, "libhookee2.so already loaded", Toast.LENGTH_SHORT).show(); } } public void onUnitTestRunClick(View view) { NativeHandler.nativeRun(hookee2Loaded); + Toast.makeText(this, "Run (unit test) done", Toast.LENGTH_SHORT).show(); } public void onSystemTestHookClick(View view) { SysTest.hook(); + Toast.makeText(this, "Hook (system test) done", Toast.LENGTH_SHORT).show(); } public void onSystemTestUnhookClick(View view) { SysTest.unhook(); + Toast.makeText(this, "Unhook (system test) done", Toast.LENGTH_SHORT).show(); } public void onSystemTestRunClick(View view) { SysTest.run(); + Toast.makeText(this, "Run (system test) done", Toast.LENGTH_SHORT).show(); } public void onGetRecordsClick(View view) { @@ -91,6 +106,7 @@ public void onGetRecordsClick(View view) { Log.i(tag, line); } } + Toast.makeText(this, "Get records done. Check logcat.", Toast.LENGTH_SHORT).show(); } public void onDumpRecordsClick(View view) { @@ -113,5 +129,18 @@ public void onDumpRecordsClick(View view) { } } } + Toast.makeText(this, "Dump records done. Check logcat.", Toast.LENGTH_SHORT).show(); + } + + public void onLogcatCommandClick(View view) { + if (view instanceof TextView) { + String text = ((TextView) view).getText().toString(); + ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("logcat command", text); + if (clipboard != null) { + clipboard.setPrimaryClip(clip); + Toast.makeText(this, "Command copied to clipboard", Toast.LENGTH_SHORT).show(); + } + } } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c74fc8e..441fe77 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -16,7 +16,11 @@ android:orientation="vertical"> + android:text="adb logcat -b main -s shadowhook_tag" + android:onClick="onLogcatCommandClick" + android:clickable="true" + android:focusable="true" + android:contentDescription="Tap to copy logcat command" /> diff --git a/build.gradle b/build.gradle index 606ebdd..abac1e7 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ ext { compileSdkVersion = 34 targetSdkVersion = 34 buildToolsVersion = '34.0.0' - javaVersion = JavaVersion.VERSION_1_7 + javaVersion = JavaVersion.VERSION_1_8 ndkVersion = "23.2.8568313" cmakeVersion = "3.22.1" abiFilters = "armeabi-v7a,arm64-v8a" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 927b535..2fdb227 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Dec 30 21:41:31 CST 2021 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME