Tencent/GT
GT (Great Tit) is a portable debugging tool for bug hunting and performance tuning on smartphones anytime and anywhere just as listening music with Walkman. GT can act as the Integrated Debug Environment by directly running on smartphones.
Stale and unlicensed — last commit 3y ago
weakest axisno license — legally unclear; last commit was 3y ago…
no license — can't legally use code; no CI workflows detected…
Documented and popular — useful reference codebase to read through.
no license — can't legally use code; last commit was 3y ago…
- ✓9 active contributors
- ✓Distributed ownership (top contributor 42% of recent commits)
- ✓Tests present
Show all 6 evidence items →Show less
- ⚠Stale — last commit 3y ago
- ⚠No license — legally unclear to depend on
- ⚠No CI workflows detected
What would change the summary?
- →Use as dependency Concerns → Mixed if: publish a permissive license (MIT, Apache-2.0, etc.)
- →Fork & modify Concerns → Mixed if: add a LICENSE file
- →Deploy as-is Concerns → Mixed if: add a LICENSE file
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Great to learn from" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/tencent/gt)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/tencent/gt on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: Tencent/GT
Generated by RepoPilot · 2026-05-09 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/Tencent/GT shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
AVOID — Stale and unlicensed — last commit 3y ago
- 9 active contributors
- Distributed ownership (top contributor 42% of recent commits)
- Tests present
- ⚠ Stale — last commit 3y ago
- ⚠ No license — legally unclear to depend on
- ⚠ No CI workflows detected
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live Tencent/GT
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/Tencent/GT.
What it runs against: a local clone of Tencent/GT — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in Tencent/GT | Confirms the artifact applies here, not a fork |
| 2 | Default branch master exists | Catches branch renames |
| 3 | 5 critical file paths still exist | Catches refactors that moved load-bearing code |
| 4 | Last commit ≤ 1157 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of Tencent/GT. If you don't
# have one yet, run these first:
#
# git clone https://github.com/Tencent/GT.git
# cd GT
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of Tencent/GT and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "Tencent/GT(\\.git)?\\b" \\
&& ok "origin remote is Tencent/GT" \\
|| miss "origin remote is not Tencent/GT (artifact may be from a fork)"
# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
&& ok "default branch master exists" \\
|| miss "default branch master no longer exists"
# 4. Critical files exist
test -f "APT_Eclipse_Plugin/src/com/tencent/wstt/apt/Activator.java" \\
&& ok "APT_Eclipse_Plugin/src/com/tencent/wstt/apt/Activator.java" \\
|| miss "missing critical file: APT_Eclipse_Plugin/src/com/tencent/wstt/apt/Activator.java"
test -f "APT_Eclipse_Plugin/src/com/tencent/wstt/apt/data/TestTaskManager.java" \\
&& ok "APT_Eclipse_Plugin/src/com/tencent/wstt/apt/data/TestTaskManager.java" \\
|| miss "missing critical file: APT_Eclipse_Plugin/src/com/tencent/wstt/apt/data/TestTaskManager.java"
test -f "APT_Eclipse_Plugin/src/com/tencent/wstt/apt/adb/DDMSUtil.java" \\
&& ok "APT_Eclipse_Plugin/src/com/tencent/wstt/apt/adb/DDMSUtil.java" \\
|| miss "missing critical file: APT_Eclipse_Plugin/src/com/tencent/wstt/apt/adb/DDMSUtil.java"
test -f "APT_Eclipse_Plugin/src/com/tencent/wstt/apt/chart/AbstractRealTimeLineChart.java" \\
&& ok "APT_Eclipse_Plugin/src/com/tencent/wstt/apt/chart/AbstractRealTimeLineChart.java" \\
|| miss "missing critical file: APT_Eclipse_Plugin/src/com/tencent/wstt/apt/chart/AbstractRealTimeLineChart.java"
test -f "APT_Eclipse_Plugin/src/com/tencent/wstt/apt/cmdparse/CMDExecute.java" \\
&& ok "APT_Eclipse_Plugin/src/com/tencent/wstt/apt/cmdparse/CMDExecute.java" \\
|| miss "missing critical file: APT_Eclipse_Plugin/src/com/tencent/wstt/apt/cmdparse/CMDExecute.java"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 1157 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~1127d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/Tencent/GT"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
GT (Great Tit) is an integrated debugging environment that runs directly on Android and iOS smartphones, enabling performance testing (CPU, memory, network, power, frame rate), log/crash viewing, network packet capture, and runtime parameter debugging without a PC. It consists of an Android console app with embedded SDK, an iOS framework, and an Eclipse plugin (APT) for PC-side analysis. Monorepo structure: android/ and ios/ directories house platform implementations; APT_Eclipse_Plugin/ is the desktop IDE integration with src/com/tencent/wstt/apt/ containing actions (DumpHprofAction, GCAction), ADB integration (DDMSUtil, AdbDeviceListener), and charting (AbstractRealTimeLineChart). Android app uses Gradle with centralized version config in rootProject.ext.
👥Who it's for
Mobile app developers and QA engineers at scale (Tencent-backed) who need on-device performance profiling, debugging, and log analysis during development and testing phases, particularly those working on Android/iOS apps requiring real-time CPU/memory/network metrics without connecting to a computer.
🌱Maturity & risk
Actively maintained as of v3.1.0 with presence across Android, iOS, and tooling ecosystems; codebase is substantial (2.6MB Java, 2.5MB JS, 1.2MB Objective-C) suggesting production use at Tencent scale. However, last visible commit age and CI/CD setup are not evident from file listing, and GitHub stars/activity metrics are not provided—assess via live repo check.
Dependency risk is moderate: relies on ddmlib, JFreeChart, and support-v4/appcompat-v7 libraries that may have maintenance gaps; Eclipse plugin (APT) targets legacy IDE; minSdkVersion constraints visible but no clear version bump strategy documented. Main risk is potential fragmentation across three platforms (Android/iOS/Eclipse) with separate codebases.
Active areas of work
Version 3.1.0 released (per badge in README); no specific PR/milestone data visible in file listing. Infer: likely ongoing support for newer Android API levels, iOS updates, and Eclipse plugin maintenance, but exact active work items require live repo inspection.
🚀Get running
Clone: git clone https://github.com/Tencent/GT.git. For Android: navigate to android/ directory and run ./gradlew build (Gradle-based). For iOS: open ios/ directory and build via Xcode. For Eclipse plugin: import APT_Eclipse_Plugin/ as Eclipse project.
Daily commands:
Android: cd android && ./gradlew assembleDebug then install via adb install. Eclipse plugin: import into Eclipse, build plugin.xml manifest. iOS: xcodebuild -workspace ios/GT.xcworkspace -scheme GT -configuration Debug.
🗺️Map of the codebase
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/Activator.java— Eclipse plugin entry point and lifecycle manager; essential for understanding how GT integrates with Eclipse IDEAPT_Eclipse_Plugin/src/com/tencent/wstt/apt/data/TestTaskManager.java— Central manager for test tasks and performance profiling sessions; core orchestration logic for all performance monitoring workflowsAPT_Eclipse_Plugin/src/com/tencent/wstt/apt/adb/DDMSUtil.java— Device communication layer via ADB and DDMS; handles all phone-to-IDE data transfer for real-time metricsAPT_Eclipse_Plugin/src/com/tencent/wstt/apt/chart/AbstractRealTimeLineChart.java— Foundation for real-time performance visualization; base class for CPU, memory, and custom metric chartsAPT_Eclipse_Plugin/src/com/tencent/wstt/apt/cmdparse/CMDExecute.java— Command execution engine that parses and runs ADB shell commands; bridges IDE requests to device-side diagnosticsAPT_Eclipse_Plugin/plugin.xml— Eclipse plugin manifest declaring all UI views, perspectives, and action handlers; defines the IDE integration surfaceAPT_Eclipse_Plugin/src/com/tencent/wstt/apt/file/APTLogFileParse.java— Log file parser and processor; converts device diagnostics into structured data for display and analysis
🛠️How to make changes
Add a new real-time performance metric chart
- Extend AbstractRealTimeLineChart.java with custom chart class for your metric (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/chart/AbstractRealTimeLineChart.java) - Create a DataProvider subclass to fetch metric samples from device (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/chart/DataProvider.java) - Create an Observer subclass to subscribe to metric updates (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/chart/Observer.java) - Register the new chart in plugin UI by adding command handler in plugin.xml (
APT_Eclipse_Plugin/plugin.xml) - Add new ADB shell command parser in cmdparse package if needed (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/cmdparse/CMDExecute.java)
Add device command parsing for a new diagnostic metric
- Create new utility class in cmdparse package extending command parsing pattern (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/cmdparse/GetCpuByTopCmdUtil.java) - Implement regex-based output parsing and data model mapping (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/cmdparse/DumpsysMemInfoPkgParseUtil.java) - Register new command in CMDExecute.java's command dispatcher (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/cmdparse/CMDExecute.java) - Add corresponding data model class in data package if needed (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/data/TestTask.java)
Create a new specialized analysis tab (like SMAP or Stub Analysis)
- Create analysis UI tab class extending standard Eclipse TabItem pattern (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/smap/APTSMAPSCTabItem.java) - Implement data extraction utility class for your analysis type (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/smap/SmapsUtil.java) - Create view menu action handler for launching your analysis (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/action/StartTestAction.java) - Register UI elements in plugin.xml under views or editors extension point (
APT_Eclipse_Plugin/plugin.xml)
Export or persist performance test results to custom file format
- Create new export utility extending WriteFileUtil pattern (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/file/WriteFileUtil.java) - Use APTLogFileParse to read stored metrics if importing (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/file/APTLogFileParse.java) - Add export action handler and wire to UI menu (
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/action/StartTestAction.java)
🪤Traps & gotchas
DDMS/ddmlib depends on deprecated Android tooling (ddmlib-r16.jar is old)—may break on latest Android Studio/SDK. Eclipse plugin targets legacy IDE version (check MANIFEST.MF for Eclipse version requirements). SDK minSdkVersion and targetSdkVersion must align across android/ modules. ADB communication assumes localhost socket or USB connection—network ADB setup not obvious. iOS Framework requires Xcode project configuration that is not visible in file listing.
💡Concepts to learn
- DDMS (Dalvik Debug Monitor Service) — GT's Eclipse plugin communicates with Android devices via DDMS protocol for heap dumps, thread inspection, and metric collection; understanding DDMS is essential for extending PC-side tooling.
- ADB (Android Debug Bridge) Socket Communication — Core transport for console-to-device communication; GT uses ADB forwarding to send commands and receive real-time metrics from the target app.
- Real-time Chart Rendering (JFreeChart) — APT Eclipse plugin visualizes CPU/memory trends using JFreeChart; understanding series-based live charting is needed for adding new metric dashboards.
- Eclipse RCP (Rich Client Platform) — APT plugin is an RCP extension; knowledge of plugin.xml manifest, workbench commands, and SWT UI framework is necessary for extending the console IDE.
- Heap Profiling and HPROF Format — GT's DumpHprofAction triggers Android runtime to generate HPROF dumps; understanding memory format and analysis is critical for memory debugging features.
- Performance Counter Aggregation Patterns — GT collects CPU %, memory usage, frame rate, network bytes in real-time on device and streams to console; understanding sliding-window aggregation and metric buffering improves metric accuracy.
- iOS Framework Embedding and Instrumentation — Unlike Android's console-only model, iOS GT is a framework compiled into apps; understanding static linking, system framework hooking, and Objective-C runtime is essential for iOS contributors.
🔗Related repos
facebook/flipper— Modern alternative for Android/iOS debugging with plugin architecture; Flipper is newer, better maintained, and supports real-time inspection similarly to GT.perfetto/perfetto— System-wide performance profiler for Android with trace recording and visualization; complements GT's on-device metrics with kernel-level profiling.android/platform_frameworks_base— Android Framework source; contains ART runtime instrumentation and system services that GT hooks into for CPU/memory metrics via DDMS.Tencent/matrix— Sibling Tencent open-source project for Android performance monitoring; integrates well with GT for comprehensive diagnostics.AndroidCommunity/awesome-android-performance— Curated list of Android performance tools and libraries; positions GT within broader ecosystem and comparison context.
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Migrate APT_Eclipse_Plugin from deprecated Eclipse APIs to modern IDE support
The APT_Eclipse_Plugin directory contains an Eclipse plugin using outdated Eclipse RCP framework (META-INF/MANIFEST.MF, plugin.xml). This is unmaintained technology. A valuable PR would migrate core debugging functionality from APT_Eclipse_Plugin/src/com/tencent/wstt/apt/adb (DDMSUtil.java, AdbDeviceListener.java) and APT_Eclipse_Plugin/src/com/tencent/wstt/apt/chart into reusable Android Studio/IntelliJ plugins or standalone libraries, removing technical debt and enabling modern IDE integrations.
- [ ] Extract core ADB communication logic from APT_Eclipse_Plugin/src/com/tencent/wstt/apt/adb/*.java into a standalone library module
- [ ] Create an Android Studio plugin module wrapping the extracted ADB utilities (replacing deprecated DDMS approach with current Android Gradle Plugin APIs)
- [ ] Deprecate and document the legacy APT_Eclipse_Plugin in README with migration guide to new plugin
Add comprehensive unit tests for cmdparse utilities
The APT_Eclipse_Plugin/src/com/tencent/wstt/apt/cmdparse/ directory contains critical parsing logic (AdbDevicesParseUtil.java, DumpsysCpuInfoParseUtil.java, DumpsysMemInfoPkgParseUtil.java, GetAndroidVersionUtil.java) with no visible test coverage. These parsers are error-prone as they parse shell output formats that vary across Android versions. Unit tests would catch regressions and improve reliability.
- [ ] Create APT_Eclipse_Plugin/src/test/java/com/tencent/wstt/apt/cmdparse/ directory structure
- [ ] Write unit tests for AdbDevicesParseUtil.java covering multiple adb devices output formats
- [ ] Write unit tests for DumpsysCpuInfoParseUtil.java and DumpsysMemInfoPkgParseUtil.java with mock outputs from Android 5.0-14.0
- [ ] Add test configuration to build.properties or create gradle test task
Create GitHub Actions CI workflow for multi-version Android compatibility testing
The repo has no visible CI/CD pipeline (.github/workflows/ missing). The codebase targets wide Android version ranges (minSdkVersion varies across modules) and uses deprecated libraries (jfreechart-1.0.14.jar, ddmlib-r16.jar from libs/). A workflow would catch build failures, lint issues, and compatibility regressions across SDK versions automatically on each PR.
- [ ] Create .github/workflows/android-build.yml to build and lint against multiple compileSdkVersions (29, 30, 31, 33, 34)
- [ ] Add build step validating APT_Eclipse_Plugin compiles without warnings using Eclipse PDE build or gradle-eclipse-compiler
- [ ] Add Android lint checks for all modules and report deprecated API usage (ddmlib, jfreechart versions in libs/)
- [ ] Include dependency audit step to flag outdated support library versions (android.support.* vs androidx)
🌿Good first issues
- Add unit tests for APT_Eclipse_Plugin/src/com/tencent/wstt/apt/adb/DDMSUtil.java—currently no test files visible for core ADB integration logic.
- Document the custom protocol used between Android GT SDK and console app in a PROTOCOL.md file—essential for cross-platform contributors and plugin developers.
- Create example Android app in android/examples/ demonstrating GT SDK integration, metric reporting, and custom plugin development with runnable demo code.
⭐Top contributors
Click to expand
Top contributors
- @r551 — 31 commits
- @brianxcli — 30 commits
- @yoyoqin — 5 commits
- @svengong — 2 commits
- @zhouhaijun — 2 commits
📝Recent commits
Click to expand
Recent commits
6e115aa— update readme.md (svengong)3906183— update readme.md (svengong)3258205— show user tag in the report (p_xcli)887b86e— Merge pull request #43 from coolegos/master (brianxcli)7f268b7— fix bug (coolegos)9266b11— Update README.md (brianxcli)abd4967— Update README.md (brianxcli)349e177— Merge branch 'master' of https://github.com/Tencent/GT (brianxcli)80b7e76— abi 增加支持 (brianxcli)7e4c79b— Update build.gradle (brianxcli)
🔒Security observations
The Tencent GT codebase presents moderate security concerns primarily related to outdated dependencies and disabled security configurations. The use of deprecated Android Support libraries and disabled ProGuard/R8
- High · Outdated Support Library Dependencies —
build.gradle (Dependencies section). The gradle dependencies use android.support libraries which are deprecated and no longer maintained. Support libraries were deprecated in favor of AndroidX starting from Android P. Using outdated libraries exposes the application to known security vulnerabilities and compatibility issues. Fix: Migrate from android.support libraries to AndroidX equivalents. Replace 'com.android.support:support-v4' and 'com.android.support:appcompat-v7' with 'androidx.appcompat:appcompat' and 'androidx.legacy:legacy-support-v4' respectively. - High · Deprecated Build Tools Version —
build.gradle (buildToolsVersion). The project uses legacy build system practices without specifying modern versions. buildToolsVersion is referenced from rootProject.ext but older versions may contain unpatched security vulnerabilities. Fix: Update buildToolsVersion to at least 33.0.0 or higher. Ensure compileSdkVersion is set to API level 33 or higher for latest security patches. - Medium · ProGuard Disabled in Release Builds —
build.gradle (buildTypes.release section). ProGuard/R8 minification is disabled in release builds (minifyEnabled false). This means the compiled APK will contain unobfuscated code, making reverse engineering and code theft significantly easier. Fix: Enable minification by setting 'minifyEnabled true' and configure appropriate ProGuard/R8 rules in proguard-rules.pro to protect sensitive code while maintaining functionality. - Medium · Lint Security Checks Disabled —
build.gradle (lintOptions section). Lint checks are configured to not abort on errors (abortOnError false) and checkReleaseBuilds is false. This allows potentially dangerous code patterns and security issues to slip through into production builds undetected. Fix: Enable lint security checks by setting 'abortOnError true' and 'checkReleaseBuilds true'. Review and fix any lint warnings related to security before committing. - Medium · Overly Permissive File Compilation —
build.gradle (dependencies section). The dependency declaration uses 'compile fileTree(include: ["*.jar"], dir: "libs")' which automatically includes all JAR files in the libs directory without explicit versioning or verification. This increases risk of including outdated or malicious dependencies. Fix: Replace fileTree with explicit dependency declarations. Specify exact versions for all JAR dependencies and use a dependency management system. Remove unused JARs from the libs directory. - Low · ADB Command Execution Utilities Present —
APT_Eclipse_Plugin/src/com/tencent/wstt/apt/cmdparse/CMDExecute.java. The codebase contains ADB command execution utilities (CMDExecute.java, various AdbDeviceListener classes) which execute system commands. While necessary for a debugging tool, this requires careful input validation to prevent command injection. Fix: Ensure all command parameters passed to system execution are properly validated and sanitized. Use parameterized command execution rather than string concatenation. Review CMDExecute.java for proper input handling. - Low · Network Packet Capture Functionality —
Project-wide (referenced in README). The tool mentions 'capturing network packets' which could expose sensitive data from applications. Network capture should be properly secured and limited to development environments only. Fix: Implement proper access controls and encryption for captured network data. Add clear warnings about sensitive data exposure. Ensure network capture functionality is only available in debug builds or requires explicit user authorization. - Low · Legacy Eclipse Plugin Architecture —
APT_Eclipse_Plugin/ directory. The project includes an Eclipse Plugin (APT_Eclipse_Plugin) which uses outdated technology. Modern IDE integration should consider current IDE versions and may introduce compatibility or security issues. Fix: Consider modernizing to Android Studio/Gradle plugin infrastructure if still maintaining this project. If keeping Eclipse plugin, verify it doesn't include outdated dependencies with known vulnerabilities.
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.