Skip to content

Instantly share code, notes, and snippets.

@TayouVR
Last active August 27, 2025 12:04
Show Gist options
  • Select an option

  • Save TayouVR/4fc68a8913885b7c9e4dceb9bdd77313 to your computer and use it in GitHub Desktop.

Select an option

Save TayouVR/4fc68a8913885b7c9e4dceb9bdd77313 to your computer and use it in GitHub Desktop.

Making Ascciiquarium android live wallpaper run on modern android

android 15 blocks some older apps from being installed altogether. That includes the live wallpaper. I have been using it for years and wanted to continue using it.

I couldn't find the original source repo, only related code. This is a java applet made by the same creator, based on the android live wallpaper: https://github.com/cmatsuoka/asciiquarium-applet This is the original perl source code: https://github.com/cmatsuoka/asciiquarium

How to modernize

We actually don't need to do much to get it working again. The only reason modern android rejects the install is because of the absence of the minimum android SDK version defined in the android manifest in the SDK.

to fix that we need:

  • adb - to install the app, you can also copy the SDK to the phone if you prefer
  • apktool - to unpack and repack the APK
  • apksigner
  • keytool (part of JDK)

I am using nixos, so I did this to install the packages into a new temporary shell:

nix-shell -p adb apktool apksigner openjdk
  1. We start by extracting the app:
apktool d org.helllabs.android.asciiquarium_1.3.apk
  1. Now we need to edit the AndroidManifest.xml in the extracted folder to add the minSdkVersion. The resulting file should look something like this.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.helllabs.android.asciiquarium">

    <!-- This is the important part!! The following line specifies the SDK versions -->
    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="24" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <service android:enabled="true" android:icon="@drawable/icon" android:label="@string/app_name" android:name="LiveWallpaperService" android:permission="android.permission.BIND_WALLPAPER">
            <intent-filter android:priority="1">
                <action android:name="android.service.wallpaper.WallpaperService"/>
            </intent-filter>
            <meta-data android:name="android.service.wallpaper" android:resource="@xml/wallpaper"/>
        </service>
        <activity android:exported="true" android:label="@string/app_name" android:name=".Settings"/>
    </application>
</manifest>
  1. now we need to package the app up into a apk again.
apktool b org.helllabs.android.asciiquarium_1.3 -o org.helllabs.android.asciiquarium_1.3_modern.apk
  1. The app isn't correctly signed now since we did some changes. We need to sign it. To do that we use keytool to generate signing keys.
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
  1. Now we can use apksigner to sign our new APK.
apksigner sign --ks my-release-key.jks --out org.helllabs.android.asciiquarium_1.3_modern_signed.apk org.helllabs.android.asciiquarium_1.3_modern.apk

Done!

thats it. install it via adb using

adb install org.helllabs.android.asciiquarium_1.3_modern_signed.apk 

or copy it to your phone and install it normally.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment