Patching Grand Theft Auto: Libery City Stories and Bully: Anniversary Edition for Android
Grand Theft Auto: Libery City Stories and Bully: Anniversary Edition are available on the Google Play Store, but do not run on recent versions of Android because the developers have not bothered to update them. There is a patch available for them called fastman92's limit adjuster, which is designed to enable modding on theses games, but also happens to make them work on recent versions of Android.
This guide will cover how to use the limit adjuster tool to patch these games so that you can play the games you paid for. This guide does not provide links to the original APKs or pre-patched APKs.
While fastman92 does include documentation and instructions in the zip file, I found them to be a bit confusing and overwhelming as they cover multiple versions of the games and instructions for other situations. I wanted to simplify it as much as I could.
- The APK for the game you want to patch
See the Extracting an Installed App's APK from Android guide if you need help getting your APK.
- fastman92's limit adjuster
- A Windows computer
- OpenJDK 8
- Download the limit adjuster and extract the files somewhere.
- Navigate to the extracted files folder and open files\AndroidPluginDeploymentSolution.exe.
- From the "Select the game" drop down, select the game you want to patch.
- Click the "Import game library file to PC" button.
- In the new window click the "Get game SO library from APK" button and select your APK file.
- Click the "Ok" button on the popup.
- (Optional) Enable the "Include libcleo.so" checkbox if you want to add the CLEO library. This is used to add mods and plugins to the game. It is not required if you only want to patch the game to run on your Android device.
- Click the "Create Modified APK" button.
- In the new window under "SELECT INPUT APK", select your original APK.
- Under "CREATE NEW APK", create an APK with a new file name.
- Click the "CREATE" button.
A command line window will popup and run commands. Be patient and wait until it says "All done!" and "Press any key to continue..."
- Before you press any key to close the window, check the java command above "All done!" to make sure it doesn't show an error such as:
If you get this error, you need to make sure OpenJDK 8 is installed and is the default Java version. Open a new command prompt window and type
Exception in thread "main" java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder at com.android.signapk.SignApk.addDigestsToManifest(SignApk.java:169) at com.android.signapk.SignApk.main(SignApk.java:325) Caused by: java.lang.ClassNotFoundException: sun.misc.BASE64Encoder at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 2 more
java -version. You should get a result such as "openjdk version 1.8.0_362-362". If it is not 1.8, then you are missing OpenJDK 8 or have multiple versions installed. If you have a different version, you may need to uninstall it or change the default version in Windows.
- If you did not get the error above, then you can press any key to close the command prompt window and you should now have an APK file in the location you selected in step 10.
- Copy the new APK file to your device via USB or Google Drive or whatever method you prefer.
- Uninstall the old game. This patching method re-signs the APK with new keys instead of Rockstar's keys, which causes Android to not recognize the new APK as a valid upgrade to the app. So the old version must be removed first.
- Install the new APK and run the game.
A note regarding Bully
Both games download additional resources when you first launch them, however at the time of writing this Bully's download fails and I have not found a legitimate way to get these files yet. If you already have the game installed on another device where the game already downloaded them, you can try copying them from that device to the new device. They can be found in the