Home Artists Posts Import Register

Content

Hey everyone! This month I mostly spent working on Nexus Tools, so here's an update on that project.

Nexus Tools

I released an update last month for Nexus Tools, my installer for ADB, Fastboot, and other Android development tools. However, I've wanted to do a full rewrite of Nexus Tools for a while now, and I finally started during July.

Nexus Tools is written as a Bash script, which has the advantage of working on both Linux and Mac, and doesn't need to be compiled. However, it has become difficult to maintain over the years, because the behavior differs based on the operating system and system shell being used. I've been hesitant to add new features because the existing features are already too much work to maintain.

This month I started rewriting Nexus Tools in Google's 'Dart' programming language. I finished a prototype that functioned identical to the current bash script, where you enter a single command from the GitHub page, and all the applications are installed within a few seconds. There's still a bash script involved, but it's only used to verify the CPU architecture (ADB/Fastboot only work on x86 PCs) and to download the Dart executable.

The new version has more predictable behavior across all operating systems, partially because it's compiled, and partially because it uses internal Dart features and libraries for nearly all functions (except moving files). Dart also supports Windows, unlike Bash scripts, so Nexus Tools can work on Windows for the first time, as seen below.

However, there are a few trade-offs to turning Nexus Tools into a Dart application. It works well on Linux and Windows, but running it on Mac requires turning off the requirement for applications to be signed with a valid security certificate. Dart also doesn't fully support ARM Macs yet, and I don't have an ARM Mac anyway, so Nexus Tools will have to run in the Rosetta compatibility layer.

I haven't decided how I'll handle Mac support. I might keep the current Bash script as the default installer for macOS, or something else. Regardless, I'm excited to work on a rewrite for one of my oldest software projects.

Comments

No comments found for this post.