├── .appveyor.yml ├── .gitignore ├── .gitmodules ├── .travis.yml ├── LICENSE ├── README.md ├── apkstudio.pro ├── build ├── linux.sh ├── osx.sh └── windows.bat ├── docs └── index.html ├── resources ├── about.html ├── all.qrc ├── apkstudio.desktop ├── checkerboard.png ├── dark.qss ├── dark.theme ├── fugue │ ├── android.png │ ├── application-terminal.png │ ├── binocular.png │ ├── color.png │ ├── edit-replace.png │ ├── edit-signiture.png │ └── gear.png ├── html.def ├── icon.icns ├── icon.ico ├── icon.png ├── icon.psd ├── icons8 │ ├── icons8-android-os-48.png │ ├── icons8-folder-48.png │ ├── icons8-gear-48.png │ ├── icons8-hammer-48.png │ └── icons8-software-installer-48.png ├── java.def ├── light.qss ├── light.theme ├── numbers.def ├── properties.def ├── screenshot.png ├── screenshot.psd ├── smali.def ├── splash.png ├── splash.psd ├── strings.def ├── xml.def ├── yaml.def └── yml.def └── sources ├── adbinstallworker.cpp ├── adbinstallworker.h ├── apkdecompiledialog.cpp ├── apkdecompiledialog.h ├── apkdecompileworker.cpp ├── apkdecompileworker.h ├── apkrecompileworker.cpp ├── apkrecompileworker.h ├── apksignworker.cpp ├── apksignworker.h ├── appearancesettingswidget.cpp ├── appearancesettingswidget.h ├── binarysettingswidget.cpp ├── binarysettingswidget.h ├── findreplacedialog.cpp ├── findreplacedialog.h ├── flickcharm.cpp ├── flickcharm.h ├── hexedit.cpp ├── hexedit.h ├── imageviewerwidget.cpp ├── imageviewerwidget.h ├── main.cpp ├── mainwindow.cpp ├── mainwindow.h ├── processutils.cpp ├── processutils.h ├── settingsdialog.cpp ├── settingsdialog.h ├── signingconfigdialog.cpp ├── signingconfigdialog.h ├── signingconfigwidget.cpp ├── signingconfigwidget.h ├── sourcecodeedit.cpp ├── sourcecodeedit.h ├── splashwindow.cpp ├── splashwindow.h ├── themedsyntaxhighlighter.cpp ├── themedsyntaxhighlighter.h ├── versionresolveworker.cpp └── versionresolveworker.h /.appveyor.yml: -------------------------------------------------------------------------------- 1 | environment: 2 | matrix: 3 | - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 4 | QTDIR: C:\Qt\5.10.1\msvc2015 5 | VCARCH: x86 6 | - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 7 | QTDIR: C:\Qt\5.10.1\msvc2015_64 8 | VCARCH: x64 9 | 10 | install: 11 | - git submodule update --init --recursive 12 | 13 | init: 14 | - call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %VCARCH% 15 | 16 | before_build: 17 | - set PATH="%QTDIR%\bin";%PATH% 18 | 19 | build_script: 20 | - call "%APPVEYOR_BUILD_FOLDER%\build\windows.bat" 21 | 22 | artifacts: 23 | path: deploy\*.zip 24 | name: archives 25 | 26 | deploy: 27 | artifact: archives 28 | auth_token: 29 | secure: ix7WdDQD0JcTBi17m9okMiMff3BKaGuKnRroi6m+dvsB4xxtnInfYuwgAD3Uayuw 30 | description: 'Deployed from continuous integration.' 31 | force_update: true 32 | on: 33 | branch: master 34 | appveyor_repo_tag: true 35 | provider: GitHub 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # C++ objects and libs 2 | *.slo 3 | *.lo 4 | *.o 5 | *.a 6 | *.la 7 | *.lai 8 | *.so 9 | *.dll 10 | *.dylib 11 | 12 | # Qt-es 13 | object_script.*.Release 14 | object_script.*.Debug 15 | *_plugin_import.cpp 16 | /.qmake.cache 17 | /.qmake.stash 18 | *.pro.user 19 | *.pro.user.* 20 | *.qbs.user 21 | *.qbs.user.* 22 | *.moc 23 | moc_*.cpp 24 | moc_*.h 25 | qrc_*.cpp 26 | ui_*.h 27 | *.qmlc 28 | *.jsc 29 | Makefile* 30 | *build-* 31 | 32 | # Qt unit tests 33 | target_wrapper.* 34 | 35 | # QtCreator 36 | *.autosave 37 | 38 | # QtCreator Qml 39 | *.qmlproject.user 40 | *.qmlproject.user.* 41 | 42 | # QtCreator CMake 43 | CMakeLists.txt.user* 44 | 45 | # QtCreator 4.8< compilation database 46 | compile_commands.json 47 | 48 | # QtCreator local machine specific files for imported projects 49 | *creator.user* 50 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "Qt-Frameless-Window-DarkStyle"] 2 | path = Qt-Frameless-Window-DarkStyle 3 | url = https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle 4 | [submodule "QHexView"] 5 | path = QHexView 6 | url = https://github.com/Dax89/QHexView.git 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: cpp 2 | 3 | matrix: 4 | include: 5 | - os: linux 6 | dist: xenial 7 | sudo: required 8 | addons: 9 | apt: 10 | packages: 11 | - libgl1-mesa-dev 12 | - os: osx 13 | osx_image: xcode9.3 14 | 15 | before_install: | 16 | if [[ $TRAVIS_OS_NAME == "linux" ]]; then 17 | sudo add-apt-repository ppa:beineri/opt-qt-5.12.3-xenial -y 18 | sudo apt-get update -q 19 | fi 20 | if [[ $TRAVIS_OS_NAME == "osx" ]]; then 21 | brew update 22 | fi 23 | 24 | install: | 25 | if [[ $TRAVIS_OS_NAME == "linux" ]]; then 26 | sudo apt install qt512base -y 27 | source /opt/qt512/bin/qt512-env.sh 28 | fi 29 | if [[ $TRAVIS_OS_NAME == "osx" ]]; then 30 | brew install qt 31 | brew link --force qt 32 | fi 33 | 34 | script: 35 | - if [[ $TRAVIS_OS_NAME == "linux" ]]; then chmod +x $TRAVIS_BUILD_DIR/build/linux.sh; $TRAVIS_BUILD_DIR/build/linux.sh; fi 36 | - if [[ $TRAVIS_OS_NAME == "osx" ]]; then chmod +x $TRAVIS_BUILD_DIR/build/osx.sh; $TRAVIS_BUILD_DIR/build/osx.sh; fi 37 | 38 | deploy: 39 | provider: releases 40 | api_key: 41 | secure: R/e46wWF2V7B0sx1WEu04Y9c4rmtXw/b80APFfO98+ZhDKBWSDR/ZMzN1KKALhgrRobqUrqONc4KSXpX4s06RfiokDw6X0Q3j9nWNvPg+yk7n0cMw3AH/+u45n83rKeIlYM0pFsklXd7FJyaYW2YThhsTAk1Y7YQ+2uLrWGJl+g= 42 | file_glob: true 43 | file: deploy/* 44 | skip_cleanup: true 45 | on: 46 | tags: true 47 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | APK Studio 4 | 5 |
6 | APK Studio 7 |

8 | 9 | Open-source, cross platform [Qt](https://www.qt.io/) based IDE for reverse-engineering [Android](https://android.com/) application packages. It features a friendly IDE-like layout including code editor with syntax highlighting support for \*.smali code files. 10 | 11 | [![Screenshot](https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/master/resources/screenshot.png)](https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/master/resources/screenshot.png) 12 | 13 |

14 | 15 | AppVeyor 16 | 17 | 18 | Travis CI 19 | 20 | 21 | Release 22 | 23 | 24 | Downloads 25 | 26 |

27 | 28 | If you are just willing to quickly decompile an [Android](https://android.com/) app, you can make use of [DeAPK - Online APK Decompiler](https://deapk.vaibhavpandey.com/) which lets you decompile an Android app using [apktool](https://github.com/ibotpeaches/apktool) and [jadx](https://github.com/skylot/jadx). 29 | 30 | ### Unmaintained 31 | 32 | ⚠️ This project is not being actively maintained until further notice. ⚠️ 33 | 34 | ### Features 35 | - Cross platform, run on **Linux**, **Mac OS X** & **Windows** 36 | - Decompile/recompile/sign & install APKs 37 | - Built-in code editor (\*.java; \*.smali; \*.xml; \*.yml) w/ syntax highlighting 38 | - Built-in viewer for image (\*.gif; \*.jpg; \*.jpeg; \*.png) files 39 | - Built-in hex editor for binary files 40 | 41 | ### Downloads 42 | Please head over to [Releases](https://github.com/vaibhavpandeyvpz/apkstudio/releases) page for downloading. **Important:** Make sure to have `JAVA_HOME` environment variable pointing to a valid java installation for *jadx* to be able to run. 43 | 44 | ### Building 45 | Information on building from source is provided in the [Wiki](https://github.com/vaibhavpandeyvpz/apkstudio/wiki). 46 | 47 | ### Credits 48 | - [iBotPeaches](https://github.com/iBotPeaches) for [apktool](https://ibotpeaches.github.io/Apktool) 49 | - [patrickfav](https://github.com/patrickfav) for [uber-apk-signer](https://github.com/patrickfav/uber-apk-signer) 50 | - [skylot](https://github.com/skylot) for [jadx](https://github.com/skylot/jadx) 51 | - [probonopd](https://github.com/probonopd) for [linuxdeployqt](https://github.com/probonopd/linuxdeployqt) 52 | - [Jürgen Skrotzky](https://github.com/Jorgen-VikingGod) for [Qt-Frameless-Window-DarkStyle](https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle) 53 | - [Antonio Davide](https://github.com/Dax89) for [QHexView](https://github.com/Dax89/QHexView) 54 | - [p.yusukekamiyamane](https://p.yusukekamiyamane.com/) for [Fugue](https://p.yusukekamiyamane.com/) icons 55 | - [Icons8](https://icons8.com/) for various icons 56 | - [Surendrajat](https://github.com/Surendrajat) for maintaining project while I couldn't 57 | 58 | **Note**: If you encounter any problems, make sure to check **Console** output at the bottom of the IDE to get the output of command which was actually executed by program. Report any issues related to APK Studio [here](https://github.com/vaibhavpandeyvpz/apkstudio/issues) on Github. Please note, an issue with [apktool](http://ibotpeaches.github.io/Apktool/) is not an issue with **APK Studio**. Please verify the context of issue before opening a ticket. 59 | 60 | --- 61 | 62 | ##### Disclaimer 63 | Same as [apktool](http://ibotpeaches.github.io/Apktool/), **APK Studio** is neither intended for piracy nor other non-legal uses. It could be used for localizing, adding some features or support for custom platforms, analyzing applications & much more. 64 | -------------------------------------------------------------------------------- /apkstudio.pro: -------------------------------------------------------------------------------- 1 | include(QHexView/QHexView.pri) 2 | 3 | QT += core gui widgets 4 | 5 | TARGET = ApkStudio 6 | TEMPLATE = app 7 | 8 | CONFIG += c++11 9 | 10 | HEADERS += \ 11 | Qt-Frameless-Window-DarkStyle/DarkStyle.h \ 12 | sources/adbinstallworker.h \ 13 | sources/apkdecompiledialog.h \ 14 | sources/apkdecompileworker.h \ 15 | sources/apkrecompileworker.h \ 16 | sources/apksignworker.h \ 17 | sources/appearancesettingswidget.h \ 18 | sources/binarysettingswidget.h \ 19 | sources/findreplacedialog.h \ 20 | sources/flickcharm.h \ 21 | sources/hexedit.h \ 22 | sources/imageviewerwidget.h \ 23 | sources/mainwindow.h \ 24 | sources/processutils.h \ 25 | sources/settingsdialog.h \ 26 | sources/signingconfigdialog.h \ 27 | sources/signingconfigwidget.h \ 28 | sources/sourcecodeedit.h \ 29 | sources/splashwindow.h \ 30 | sources/themedsyntaxhighlighter.h \ 31 | sources/versionresolveworker.h 32 | 33 | SOURCES += \ 34 | Qt-Frameless-Window-DarkStyle/DarkStyle.cpp \ 35 | sources/flickcharm.cpp \ 36 | sources/hexedit.cpp \ 37 | sources/imageviewerwidget.cpp \ 38 | sources/main.cpp \ 39 | sources/adbinstallworker.cpp \ 40 | sources/apkdecompiledialog.cpp \ 41 | sources/apkdecompileworker.cpp \ 42 | sources/apkrecompileworker.cpp \ 43 | sources/apksignworker.cpp \ 44 | sources/appearancesettingswidget.cpp \ 45 | sources/binarysettingswidget.cpp \ 46 | sources/findreplacedialog.cpp \ 47 | sources/mainwindow.cpp \ 48 | sources/processutils.cpp \ 49 | sources/settingsdialog.cpp \ 50 | sources/signingconfigdialog.cpp \ 51 | sources/signingconfigwidget.cpp \ 52 | sources/sourcecodeedit.cpp \ 53 | sources/splashwindow.cpp \ 54 | sources/themedsyntaxhighlighter.cpp \ 55 | sources/versionresolveworker.cpp 56 | 57 | RESOURCES += \ 58 | Qt-Frameless-Window-DarkStyle/darkstyle.qrc \ 59 | resources/all.qrc 60 | 61 | OTHER_FILES += \ 62 | build/linux.sh \ 63 | build/osx.sh \ 64 | build/windows.bat \ 65 | docs/index.html \ 66 | resources/apkstudio.desktop \ 67 | .appveyor.yml \ 68 | .travis.yml \ 69 | README.md 70 | 71 | mac:ICON = resources/icon.icns 72 | 73 | unix { 74 | isEmpty(PREFIX) { 75 | PREFIX = /usr/local 76 | } 77 | 78 | target.path = $$PREFIX/bin 79 | 80 | icons.files += resources/icon.png 81 | icons.path = $$PREFIX/share/pixmaps/ 82 | 83 | shortcut.files = resources/apkstudio.desktop 84 | shortcut.path = $$PREFIX/share/applications/ 85 | 86 | INSTALLS += target icons shortcut 87 | TARGET = apkstudio 88 | } 89 | 90 | win32:RC_ICONS += resources/icon.ico 91 | 92 | QMAKE_TARGET_COMPANY = Vaibhav Pandey -aka- VPZ 93 | QMAKE_TARGET_COPYRIGHT = Vaibhav Pandey 94 | QMAKE_TARGET_DESCRIPTION = Open-source, cross-platform Qt based IDE for reverse-engineering Android application packages. 95 | QMAKE_TARGET_PRODUCT = APK Studio 96 | 97 | win32 { 98 | NULL_DEVICE = NUL 99 | } else { 100 | NULL_DEVICE = /dev/null 101 | } 102 | 103 | GIT_CMD_BASE = git --git-dir $$PWD/.git --work-tree $$PWD 104 | GIT_BRANCH = $$system($$GIT_CMD_BASE rev-parse --abbrev-ref HEAD 2> $$NULL_DEVICE) 105 | GIT_COMMIT_FULL = $$system($$GIT_CMD_BASE rev-parse HEAD 2> $$NULL_DEVICE) 106 | GIT_COMMIT_NUMBER = $$system($$GIT_CMD_BASE rev-list HEAD --count 2> $$NULL_DEVICE) 107 | GIT_COMMIT_SHORT = $$system($$GIT_CMD_BASE rev-parse --short HEAD 2> $$NULL_DEVICE) 108 | GIT_TAG = $$system($$GIT_CMD_BASE tag -l --points-at HEAD 2> $$NULL_DEVICE) 109 | 110 | DEFINES += GIT_BRANCH=\\\"$$GIT_BRANCH\\\" \ 111 | GIT_COMMIT_FULL=\\\"$$GIT_COMMIT_FULL\\\" \ 112 | GIT_COMMIT_NUMBER=\\\"$$GIT_COMMIT_NUMBER\\\" \ 113 | GIT_COMMIT_SHORT=\\\"$$GIT_COMMIT_SHORT\\\" \ 114 | GIT_TAG=\\\"$$GIT_TAG\\\" 115 | 116 | !isEmpty(GIT_TAG) { 117 | win32 { 118 | VERSION = $${GIT_TAG}.$${GIT_COMMIT_NUMBER} 119 | } else { 120 | VERSION = $$GIT_TAG 121 | } 122 | macx { 123 | INFO_PLIST_PATH = $$shell_quote($${OUT_PWD}/$${TARGET}.app/Contents/Info.plist) 124 | QMAKE_POST_LINK += /usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString $${VERSION}\" $${INFO_PLIST_PATH} 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /build/linux.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | mkdir $TRAVIS_BUILD_DIR-build 4 | 5 | cd $TRAVIS_BUILD_DIR-build 6 | qmake CONFIG+=release PREFIX=/usr $TRAVIS_BUILD_DIR 7 | make 8 | make install INSTALL_ROOT=AppDir 9 | 10 | wget -c -nv https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage 11 | chmod +x linuxdeployqt*.AppImage 12 | unset QTDIR; unset QT_PLUGIN_PATH; unset LD_LIBRARY_PATH 13 | mkdir -p AppDir/usr/lib/ 14 | cp -r /usr/lib/x86_64-linux-gnu/nss AppDir/usr/lib/ 15 | ./linuxdeployqt*.AppImage AppDir/usr/share/applications/apkstudio.desktop -appimage -extra-plugins=iconengines,platformthemes/libqgtk3.so 16 | 17 | if [ ! -z $TRAVIS_TAG ]; then 18 | mv ApkStudio-x86_64.AppImage ApkStudio-$TRAVIS_TAG-x86_64.AppImage 19 | fi 20 | mkdir -p $TRAVIS_BUILD_DIR/deploy 21 | mv ApkStudio*AppImage $TRAVIS_BUILD_DIR/deploy/ 22 | -------------------------------------------------------------------------------- /build/osx.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | mkdir $TRAVIS_BUILD_DIR-build 4 | 5 | cd $TRAVIS_BUILD_DIR-build 6 | qmake CONFIG+=release $TRAVIS_BUILD_DIR 7 | make 8 | 9 | cd $TRAVIS_BUILD_DIR-build 10 | macdeployqt ApkStudio.app 11 | 12 | DMG_DIR_NAME=ApkStudio 13 | if [ -d $DMG_DIR_NAME ]; then 14 | rm -rf $DMG_DIR_NAME 15 | fi 16 | mkdir $DMG_DIR_NAME 17 | mv ApkStudio.app $DMG_DIR_NAME/ 18 | ln -s /Applications $DMG_DIR_NAME/Applications 19 | hdiutil create -format UDZO -srcfolder $DMG_DIR_NAME ApkStudio-x86_64.dmg 20 | 21 | if [ ! -z $TRAVIS_TAG ]; then 22 | mv ApkStudio-x86_64.dmg ApkStudio-$TRAVIS_TAG-x86_64.dmg 23 | fi 24 | mkdir -p $TRAVIS_BUILD_DIR/deploy 25 | mv ApkStudio*dmg $TRAVIS_BUILD_DIR/deploy/ 26 | -------------------------------------------------------------------------------- /build/windows.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal EnableExtensions 3 | 4 | mkdir "%APPVEYOR_BUILD_FOLDER%-build" 5 | 6 | qmake CONFIG+=release -o "%APPVEYOR_BUILD_FOLDER%-build" "%APPVEYOR_BUILD_FOLDER%" 7 | cd /d "%APPVEYOR_BUILD_FOLDER%-build" 8 | nmake 9 | 10 | set "DEPLOYMENT_DIR=%TEMP%\ApkStudio-%RANDOM%.tmp" 11 | mkdir %DEPLOYMENT_DIR% 12 | xcopy "%APPVEYOR_BUILD_FOLDER%-build\release\ApkStudio.exe" %DEPLOYMENT_DIR%\ 13 | windeployqt "%DEPLOYMENT_DIR%\ApkStudio.exe" --release 14 | mkdir %APPVEYOR_BUILD_FOLDER%\deploy 15 | 16 | set SETUP_FILE_PREFIX=ApkStudio 17 | if not "%APPVEYOR_REPO_TAG_NAME%"=="" set SETUP_FILE_PREFIX=%SETUP_FILE_PREFIX%-%APPVEYOR_REPO_TAG_NAME% 18 | 7z a "%APPVEYOR_BUILD_FOLDER%\deploy\%SETUP_FILE_PREFIX%-%VCARCH%.zip" "%DEPLOYMENT_DIR%\*" 19 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | APK Studio | Cross platform, Open-Source IDE for Android Reverse-Engineering 8 | 9 | 14 | 15 | 16 |
17 |
18 |
19 |
20 | Screenshot | APK Studio 21 |
Sponsor
22 |

23 | 24 | appfrom.site 25 | 26 |

27 |
28 |
29 |
30 |
31 |
32 |
33 |

APK Studio

34 |

Open-source, cross platform Qt based IDE for reverse-engineering Android application packages. It features a friendly IDE-like layout including code editor with syntax highlighting support for *.smali code files.

35 |

36 | 37 | AppVeyor 38 | 39 | 40 | Travis CI 41 | 42 | 43 | Release 44 | 45 | 46 | Downloads 47 | 48 |

49 |

Downloads / Source

50 |

If you are just willing to quickly decompile an Android app, you can make use of DeAPK - Online APK Decompiler which lets you decompile an Android app using apktool and jadx.

51 |

Developed & maintained by Vaibhav Pandey -aka- VPZ along with contributor(s).

52 |
53 |
54 |
55 |
56 |
57 |
58 | 71 | 72 | 73 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /resources/about.html: -------------------------------------------------------------------------------- 1 |

APK Studio is an Open-Source Cross-platform IDE for reverse-engineering Android applications, written using Qt framework. It is developed and maintained by Vaibhav Pandey -aka- VPZ along with other contributor(s).

2 |

The main purpose of this project is to provide ROM makers with the ease of GUI for customization of pre-packaged applications and Android system. The source code for this application is hosted at Github.

3 |

Copyright (c) 2015-2018 Vaibhav Pandey -aka- VPZ and contributor(s)

4 | 5 | -------------------------------------------------------------------------------- /resources/all.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | html.def 4 | java.def 5 | numbers.def 6 | properties.def 7 | smali.def 8 | strings.def 9 | xml.def 10 | yaml.def 11 | yml.def 12 | 13 | 14 | icon.ico 15 | fugue/application-terminal.png 16 | icons8/icons8-android-os-48.png 17 | icons8/icons8-folder-48.png 18 | icons8/icons8-gear-48.png 19 | icons8/icons8-hammer-48.png 20 | icons8/icons8-software-installer-48.png 21 | fugue/android.png 22 | fugue/edit-signiture.png 23 | fugue/binocular.png 24 | fugue/edit-replace.png 25 | fugue/gear.png 26 | fugue/color.png 27 | 28 | 29 | checkerboard.png 30 | icon.png 31 | splash.png 32 | 33 | 34 | dark.qss 35 | light.qss 36 | 37 | 38 | dark.theme 39 | light.theme 40 | 41 | 42 | about.html 43 | 44 | 45 | -------------------------------------------------------------------------------- /resources/apkstudio.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Categories=Development; 3 | Comment=Open-source, cross-platform Qt based IDE for reverse-engineering Android application packages. 4 | Exec=apkstudio 5 | Name=ApkStudio 6 | Icon=icon 7 | Terminal=false 8 | Type=Application 9 | -------------------------------------------------------------------------------- /resources/checkerboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/checkerboard.png -------------------------------------------------------------------------------- /resources/dark.qss: -------------------------------------------------------------------------------- 1 | SourceCodeEdit { 2 | background-color: #222; 3 | color: #ccc; 4 | selection-background-color: #000; 5 | selection-color: #fff; 6 | } 7 | 8 | SourceCodeSidebarWidget { 9 | background-color: #000; 10 | color: #aaa; 11 | selection-background-color: #222; 12 | selection-color: #ccc; 13 | } 14 | -------------------------------------------------------------------------------- /resources/dark.theme: -------------------------------------------------------------------------------- 1 | annotations = foreground: #efefef, bold: true, underline: true 2 | attributes = foreground: #74d2e7 3 | comments = foreground: #8ec06c 4 | constants = foreground: #00aa34, bold: true 5 | keywords = foreground: #4298b5, bold: true 6 | namespace = foreground: #74d2e7 7 | numbers = foreground: #2dde98 8 | resources = foreground: #ecb731, bold: true 9 | strings = foreground: #ecb731 10 | variables = foreground: #0dd3ff 11 | whitespaces = foreground: #101010 12 | -------------------------------------------------------------------------------- /resources/fugue/android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/fugue/android.png -------------------------------------------------------------------------------- /resources/fugue/application-terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/fugue/application-terminal.png -------------------------------------------------------------------------------- /resources/fugue/binocular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/fugue/binocular.png -------------------------------------------------------------------------------- /resources/fugue/color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/fugue/color.png -------------------------------------------------------------------------------- /resources/fugue/edit-replace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/fugue/edit-replace.png -------------------------------------------------------------------------------- /resources/fugue/edit-signiture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/fugue/edit-signiture.png -------------------------------------------------------------------------------- /resources/fugue/gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/fugue/gear.png -------------------------------------------------------------------------------- /resources/html.def: -------------------------------------------------------------------------------- 1 | @include html 2 | -------------------------------------------------------------------------------- /resources/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/icon.icns -------------------------------------------------------------------------------- /resources/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/icon.ico -------------------------------------------------------------------------------- /resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/icon.png -------------------------------------------------------------------------------- /resources/icon.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/icon.psd -------------------------------------------------------------------------------- /resources/icons8/icons8-android-os-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/icons8/icons8-android-os-48.png -------------------------------------------------------------------------------- /resources/icons8/icons8-folder-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/icons8/icons8-folder-48.png -------------------------------------------------------------------------------- /resources/icons8/icons8-gear-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/icons8/icons8-gear-48.png -------------------------------------------------------------------------------- /resources/icons8/icons8-hammer-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/icons8/icons8-hammer-48.png -------------------------------------------------------------------------------- /resources/icons8/icons8-software-installer-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/icons8/icons8-software-installer-48.png -------------------------------------------------------------------------------- /resources/java.def: -------------------------------------------------------------------------------- 1 | namespace ^(import|package)\s[a-zA-Z0-9\.]+\b 2 | keywords \b(abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|false|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|null|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|transient|true|try|void|volatile|while)\b 3 | constants \b[A-Z0-9_]+\b 4 | annotations @[a-zA-Z]+\b 5 | @include numbers 6 | @include strings 7 | comments //[^\n]* 8 | comments? /\*|\*/ 9 | -------------------------------------------------------------------------------- /resources/light.qss: -------------------------------------------------------------------------------- 1 | SourceCodeEdit { 2 | alternate-background-color: #ced7df; 3 | background-color: #fff; 4 | color: #222; 5 | font-family: Courier; 6 | font-size: 10pt; 7 | selection-background-color: #c4dff6; 8 | selection-color: #205081; 9 | } 10 | 11 | SourceCodeSidebarWidget { 12 | background-color: #eff3f6; 13 | color: #59626a; 14 | selection-background-color: #ced7df; 15 | selection-color: #323b43; 16 | } 17 | -------------------------------------------------------------------------------- /resources/light.theme: -------------------------------------------------------------------------------- 1 | annotations = foreground: #666666, bold: true, underline: true 2 | attributes = foreground: #000066 3 | comments = foreground: #999999 4 | constants = foreground: #00aa34, bold: true 5 | keywords = foreground: #000066, bold: true 6 | namespace = foreground: #000066 7 | numbers = foreground: #552200 8 | resources = foreground: #007524, bold: true 9 | strings = foreground: #007524 10 | variables = foreground: #0000ff 11 | whitespaces = foreground: #aeaeae 12 | -------------------------------------------------------------------------------- /resources/numbers.def: -------------------------------------------------------------------------------- 1 | numbers [-+]?\b\d+\b 2 | numbers \b0[xX][0-9a-fA-F]+\b 3 | -------------------------------------------------------------------------------- /resources/properties.def: -------------------------------------------------------------------------------- 1 | keywords \b[a-zA-Z0-9.]+= 2 | -------------------------------------------------------------------------------- /resources/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/screenshot.png -------------------------------------------------------------------------------- /resources/screenshot.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/screenshot.psd -------------------------------------------------------------------------------- /resources/smali.def: -------------------------------------------------------------------------------- 1 | @include numbers 2 | variables \b[pv][0-9]+\b 3 | namespace (?<=L)([a-zA-Z0-9/]+)(?=;) 4 | keywords [.][a-z\-]+\b 5 | @include strings 6 | comments #[^\n]* 7 | -------------------------------------------------------------------------------- /resources/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/splash.png -------------------------------------------------------------------------------- /resources/splash.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaibhavpandeyvpz/apkstudio/fb261c69430c4b15ab2192239c060d76743f3c18/resources/splash.psd -------------------------------------------------------------------------------- /resources/strings.def: -------------------------------------------------------------------------------- 1 | strings "[^<"]*" 2 | strings '[^<']*' 3 | -------------------------------------------------------------------------------- /resources/xml.def: -------------------------------------------------------------------------------- 1 | keywords <[\s]*[/]?[\s]*[\w]+(?=[\s/>]) 2 | keywords <[\s]*[/]?[\s]*[\w]+-(\w+/?)+(?=[\s/>]) 3 | keywords [<>] 4 | keywords /> 5 | keywords 8 | attributes \w+(?=\=) 9 | attributes \w+:(\w+/?)+(?=\=) 10 | @include numbers 11 | strings "[^\n"]+"(?=[?\s/>]) 12 | resources @([a-zA-Z])+(?=/) 13 | comments?