APK Tool Studio {{ currentTabLabel }} • {{ userUsername }}
{{ authMessage }}
{{ toastTitle }} {{ toastMessage }}

Dashboard

Overview of your APK Tool workspace

You have reached one or more usage limits. Upgrade Plan
Decompile
{{ limits.decompile_usage || 0 }} / {{ limits.decompile_limit || 0 }}
Remaining: {{ Math.max(0, (limits.decompile_limit || 0) - (limits.decompile_usage || 0)) }}
Compile
{{ limits.compile_usage || 0 }} / {{ limits.compile_limit || 0 }}
Remaining: {{ Math.max(0, (limits.compile_limit || 0) - (limits.compile_usage || 0)) }}
Key Generation
{{ limits.generate_key_usage || 0 }} / {{ limits.generate_key_limit || 0 }}
Remaining: {{ Math.max(0, (limits.generate_key_limit || 0) - (limits.generate_key_usage || 0)) }}
Sign APK
{{ limits.sign_apk_usage || 0 }} / {{ limits.sign_apk_limit || 0 }}
Remaining: {{ Math.max(0, (limits.sign_apk_limit || 0) - (limits.sign_apk_usage || 0)) }}

My Projects

Manage your decompiled APK projects

Upload & Create New Project

Upload an APK to auto-create and decompile a new project workspace.

Drop your APK here or click to browse

Supported: .apk files
Selected: {{ uploadFile.name }}
{{ uploadStatus }}{{ uploadProgress }}%
{{ proj.project_name }}

Last updated:

{{ new Date(proj.updated_at).toLocaleString() }}

No projects found. Create a new project to get started.

Project Editor

{{ workflow.project_name }} - Edit, Build, and Sign your APK

{{ step.num }} {{ step.label }}
AI Settings (Gemini)

Add your own Google Gemini API key to unlock AI error-fixing and AI-generated launcher icons. Your key is only used server-side to call Gemini on your behalf.

Key saved ({{ aiMaskedKey }})
1. Project Info
Project Decompiled & Ready: {{ workflow.project_display }}

Source APK: {{ basename(workflow.source_apk) }}

2. Edit Strings

Edit app strings, Firebase values, and upload google-services.json to auto-fill.

{{ firebaseFile.name }}
Saving strings...{{ stringSaving ? 'Saving…' : 'Saved' }}
{{ row.name }} Firebase
No matching strings found.
5. Build APK

Compile the edited project into an unsigned APK.

Built: {{ basename(workflow.unsigned_apk) }} Download
{{ buildStatus }}{{ buildProgress }}%
Build Failed

Use Gemini to analyze the build error{{ editorFile ? ' against the currently open file (' + basename(editorFile.path) + ')' : '' }} and suggest a fix.

Add a Gemini API key above first.
AI Explanation
{{ aiFix.explanation }}
6. Select or Create Keystore

Select an existing key or generate a new signing key for your APK.

Or Create New Keystore
{{ keystoreStatus }}{{ keystoreProgress }}%
Currently Selected Keystore
Alias: {{ workflow.keystore_alias }} {{ basename(workflow.keystore_path) }}
7. Sign APK

Sign the APK with your keystore to produce the final release.

Please build the APK first.
Please select or create a keystore first (Step 6).
Align
Sign
Verify
Signed: {{ basename(workflow.signed_apk) }} Download Signed APK
{{ signStatus }}{{ signProgress }}%
8. Cloud Debug Logs (recommended)

Injects a tiny crash/error reporter into the app during build. Once enabled and rebuilt, the app reports its own crashes straight to this server over the internet from ANY Android phone it's installed on — no USB, no ADB, no network configuration, and no port forwarding required.

Cloud logging has been successfully injected into this project. Rebuild and reinstall the APK for debugging to become active.
Step 1 — Download Debugger APK

Install the Debugger Companion APK on any Android phone. This companion application securely receives crashes, Java exceptions, native crashes, logs, stack traces, ANRs, and debugging events from every rebuilt application connected to your account.

Download Debugger APK
Backend changes detected — a newer build is available.

Reinstall the rebuilt APK or open the Debugger Companion App and tap Check for Update to receive the latest logging changes. Devices with automatic update checks enabled will notify you within a minute.

Step 2 — Scan QR Code

Open the Debugger Companion APK, tap Scan QR Code, and point the camera at the QR code below. Pairing takes only a few seconds. Once connected, every rebuilt application will automatically stream crash reports, exceptions, logs, and debugging information to this device over the internet.

Camera unavailable? Copy this pairing code and paste it into the Connect screen inside the Debugger Companion APK.

9. Developer Tools
{{ l }}
No network requests captured yet. They'll appear here once the rebuilt app makes an HTTP(S) call - this covers both Java code (HttpURLConnection / OkHttp / Retrofit) and, for WebView-based apps, the page's own fetch()/XHR calls. If this stays empty after using the app for a bit, re-check the "Cloud Debug Logs" enable step's result message - it reports whether any hookable call sites were actually found in this app's code.
{{ l }}
No device logs received yet. They'll appear here in realtime once the rebuilt app is installed somewhere and runs.

Connect an Android device via USB (with USB debugging enabled) or wireless ADB to this server/PC, install the APK directly, and watch its logs in realtime.

On the phone: Settings > Developer options > Wireless debugging > turn it on, note the IP:port shown there (both devices must be on the same Wi-Fi/network). Some Android versions require pairing first with a pairing code - if connect is refused, use "Pair device with pairing code" on the phone and pair from a terminal first, then connect here.

No devices detected yet. Use "Connect Wireless ADB" above, or (if you have shell access to this server) plug a device into USB with USB debugging enabled, then Refresh.
{{ l.text }}
No log output yet.
My Keystores

All keystores you've generated.

No keystores found.
AliasFileCreatedActions
{{ ks.key_alias }} {{ basename(ks.file_name) }} {{ new Date(ks.created_at).toLocaleDateString() }}
Registered Users
Create New User
UserEmailRoleStatusLimitsActions
{{ user.username }} {{ user.email }} {{ user.user_type }} {{ user.email_verified ? '✅ Verified' : '⏳ Pending' }} D:{{ user.decompile_usage }}/{{ user.decompile_limit }}
C:{{ user.compile_usage }}/{{ user.compile_limit }}
K:{{ user.generate_key_usage }}/{{ user.generate_key_limit }}
S:{{ user.sign_apk_usage }}/{{ user.sign_apk_limit }}
No users found.
Edit Limits for {{ editingUser.username }}