10 Almost Unknown Tools Which Facilitate Android Apps Development
Tags: android, kotlin, jetpackcompose, mobile
Published: 2022-09-02 18:14:46

Keeping efficiency at a high level requires using the right tools at the right time. As an Android developer, you will be able to boost your performance by utilizing the tools below, which you have probably never heard of.
All tools are free and open-source. 

---

### 1. [stackzy](https://github.com/theapache64/stackzy)

This is a desktop tool to analyse `.apk`files. It identifies the libraries stack and permissions of a decompiled application. It was created using Jetpack Compose desktop.

![stackzy](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hmil7aitfgkc3r4sdr2l.png)

You can see a demo, how the application works, [here](https://www.youtube.com/watch?v=XtM-sRLxLLc).  
Stackzy is available on Linux (.deb), Windows (.msi) and MacOS (.jar) —  You can also compile the app on your own.

It was build with modern libs and frameworks:

-   [Compose Desktop](https://github.com/jetbrains/compose-jb)
-   [MVVM](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel)
-   [Coroutines](https://kotlinlang.org/docs/coroutines-overview.html) & [Flow](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/)
-   [Retrofit](https://github.com/square/retrofit) + [Moshi](https://github.com/square/moshi)
-   [Dagger2](https://github.com/google/dagger)
-   and many more used to decompile applications ([jadx](https://github.com/skylot/jadx), [apktool](https://github.com/iBotPeaches/Apktool)).

The project is released under [Apache-2.0 license](https://github.com/theapache64/stackzy/blob/master/LICENSE) and [OFL-1.1 Licence](https://github.com/tonsky/FiraCode/blob/master/LICENSE).

### 2. [v9](https://github.com/romainguy/v9)

Some of you may remember, that long before SVG and vector drawables, Android developers relied on [9-patch files](https://developer.android.com/studio/write/draw9patch) to dynamically and automatically resize bitmap images to accommodate the contents of the view and the size of the screen.


![v9](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vwommugki6h1bqzvz1bl.gif)

Some time ago [Romain Guy](https://twitter.com/romainguy) created a library, that gives a possibility to dynamically resize [Path](https://developer.android.com/reference/android/graphics/Path) objects as you would 9-patch bitmaps.  
v9 is compatible with API 21+ and has quite decent documentation with a sample demo app. It is released under [Apache-2.0 license](https://github.com/romainguy/v9/blob/main/LICENSE).

### 3. [Glance](https://github.com/guolindev/Glance)

This is a database toolkit library provides a clean UI for browsing all the database data.

![glance](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4kzzl4a7ekrpw8ccrtot.gif)

The library is included into a project as a dependency library (like for example [LeakCanary](https://github.com/square/leakcanary), which Glance is inspired by).

In order to find all database files in a current application, it searches both internal and external storage.

Glance only supports AndroidX projects and is released under [Apache-2.0 license](https://github.com/guolindev/Glance/blob/master/LICENSE).

### 4. [CompleteKotlin](https://github.com/LouisCAD/CompleteKotlin)

This is Gradle Plugin which enables auto-completion and symbol resolution for all Kotlin/Native platforms. This is particularly helpful with Kotlin Multiplatform Mobile projects.


![completeKotlin](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xncudxhnymkl7sheejxt.jpeg)

With this plugin, you can write and read Kotlin code regardless of your computer’s operating system. You can read and write:

-   iOS, iPadOS, watchOS, tvOS, and macOS code, without macOS,
-   Linux MIPS code without Linux,
-   Windows code, without Windows.

Setup is really simple and boils down to adding a dependency to `build.gradle` or `.kts` file.

```
plugins {  
    id("com.louiscad.complete-kotlin") version "1.1.0"  
}
```

This plugin’s documentation is comprehensive and contains all information needed to start using it.

License: [MIT](https://opensource.org/licenses/MIT)

### 5. [adb-tools-mac](https://github.com/naman14/adb-tools-mac) / [gnome-android-tool](https://github.com/naman14/gnome-android-tool)

[adb-tools-mac](https://github.com/naman14/adb-tools-mac) is a macOS menu bar app written in SwiftUI for common `adb` tools.

![adb-tools-mac](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4qjy9wyfb42io96xerug.png)

[gnome-android-tool](https://github.com/naman14/gnome-android-tool) is a Linux substitute.

![gnome-android-tools](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kk5065zn91jp2vi73aez.png)

You can use these tools to:

-   Take screenshots,
-   record a screen,
-   connect over the TCP,
-   capture bug reports.

All projects are released under [GNU General Public License](https://www.gnu.org/licenses/).

### 6. [SVG to Compose](https://github.com/DevSrSouza/svg-to-compose)

This is an experimental tool which converts SVG and Android Vector Drawable to Jetpack Compose code.

![svg-to-compose](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3i6ctc68a1no8cgmqyr9.png)

If you want to use this tool from Android Studio / IntelliJ, you can simply use an [open source plugin](https://github.com/overpas/svg-to-compose-intellij) available on [Jetbrains Marketplace](https://plugins.jetbrains.com/plugin/18619-svg-to-compose).

You can utilise this tool by:

-   manipulating dynamically SVG files in the code (generating and modifying source code),
-   creating an icon pack similar to [Compose Material Icons](https://github.com/DevSrSouza/compose-icons).

The project has sufficient documentation and it is released under [MIT](https://opensource.org/licenses/MIT) license.


### 7. [Bye Bye Jetifier](https://github.com/dipien/bye-bye-jetifier)

Some of you may be still dealing with legacy code based on Support Library and using [Jetifier](https://developer.android.com/studio/command-line/jetifier). By using this tool, you will be able to get rid of Support lib dependencies and ultimately turn off Jetifier.

This plugin verifies each JAR/AAR dependency (and its transitives) and checks if:

-   any class uses a support library import
-   any layout references a support library class
-   the Android Manifest references a support library class

It also verifies if any support library dependency is resolved on the project.

It is a great tool on which I heavily relied.

By the way, you can also check out the `checkJetifier` task provided by Android Gradle Plugin 7.1+ to complement and double check the Bye Bye Jetifier.

License: [Apache-2.0 license](https://github.com/dipien/bye-bye-jetifier/blob/master/LICENSE.md)

### 8. [name-that-color-desktop](https://github.com/theapache64/name-that-color-desktop)

With this Jetpack Compose Desktop app, you can discover the closest matching color.


![name-that-color-desktop](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uxcm0vf10d1zvc5mwr4m.gif)

The project was inspired by [chir.ag/name-that-color](https://chir.ag/projects/name-that-color/) and allows to:

-   auto copy / paste a color stored in a clipboard,
-   generate Jetpack Compose `Color` code,
-   generate random colors,
-   retrieve colors from a history.

License: [Apache-2.0 license](https://github.com/theapache64/name-that-color-desktop/blob/master/LICENSE)

### 9. [Gradle Task Tree](https://github.com/dorongold/gradle-task-tree)

This is a Gradle plugin that adds a task: taskTree that prints a task dependency tree report to the console.

> The task dependency tree is printed with a similar format to that of the built-in `dependencies` task.

For instance, `gradle build taskTree` prints out a tree below:

![gradle-task-tree](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cle1p5o4lr15ejzujphm.png)

The documentation is comprehensive and the plugin is easy to configure.  
License: [Apache-2.0 license](https://github.com/dorongold/gradle-task-tree/blob/master/LICENSE)

### 10. [sndcpy](https://github.com/rom1v/sndcpy)

This is a tool that forwards audio from an Android 10 device to the computer. You can name it as [scrcpy](https://github.com/Genymobile/scrcpy) but for audio.  
It does not require any _root_ access. It works on _GNU/Linux_, _Windows_ and _macOS_.

The only requirements to run the app are:

-   Android device with Android 10+,
-   [VLC](https://www.videolan.org/) installed on the computer.

The project has quite sufficient documentation (you can read more about it in a [dedicated blog post](https://blog.rom1v.com/2020/06/audio-forwarding-on-android-10/)).

License: [MIT](https://opensource.org/licenses/MIT)

----------

Ok, you did it! I hope you enjoyed this list and will use some of these tools. 
You can also check my other articles, especially [25 Best Android Libraries, Projects, and Tools You Won’t Want to Miss Out in 2021](https://medium.com/@mmbialas/25-best-android-libraries-projects-and-tools-you-dont-want-to-miss-in-2021-681dafe58b1c). Till the next time!