Skip to content

Latest commit

 

History

History
130 lines (94 loc) · 5.02 KB

File metadata and controls

130 lines (94 loc) · 5.02 KB

Alchemy

Flutter Dart Android API Java JDK License


Important

This page aims at providing compilation steps for Alchemy. By compiling and using this app, you have read and understood the legal section of the Alchemy project. You take full responsibility for using the app according to the aforementioned disclaimer.

🛠️ Getting Started: Compilation Guide

Tip

While individual commits should compile and produce working APKs, it is highly recommended to use releases. To download the latest release, visit latest

Prerequisites

Before you begin, ensure you have the following installed:

Alchemy relies on several custom Git submodules. Clone these repositories and their dependencies:

You will need to obtain the specified Git modules:

For each submodule, navigate to its directory and run:

flutter pub get
flutter pub upgrade
dart run build_runner clean
dart run build_runner build --delete-conflicting-outputs
flutter clean

Tip

All of this can be achieved by using the provided script: powershell -ep bypass -c .\run_build_runner.ps1

Warning

Scrobblenaut has a known compatibility issue (as of 08/2025).
Refer to my pull request for a potential fix.

Warning

sqflite also seems to have a compatibility issue with the latest AGP, Kotlin and Flutter version.
Compilation may fail with errors such as:

  • error: cannot find symbol variable BAKLAVA
  • error: cannot find symbol method of(String,String,String)
  • error: cannot find symbol method threadId()

I was able to bypass this issue by editing the affected lines in the sqflite package at:

...\pub.dev\sqflite_android-2.4.2+2\android\src\main\java\com\tekartik\sqflite\Utils.java

Providing API Keys

To use Alchemy, you'll need API keys from Deezer, Last.fm and ACRCloud:

Create a .env file in the /lib directory with your API credentials:

# Deezer Mobile GateWay API
deezerGatewayAPI = '<Required_Deezer_Gateway_Key>';
deezerMobileKey = '<Required_Deezer_Mobile_Key>';

# LastFM API credentials
lastFmApiKey = '<LastFM_API_Key_Can_Be_Left_Empty>';
lastFmApiSecret = '<LastFM_API_Secret_Can_Be_Left_Empty>';

# ACRCloud's API Key
acrcloudHost = '<ACRCloud_host_address>'; # eg. "identify-eu-west-1.acrcloud.com"
acrcloudSongApiKey = '<ACRCloud_Song_Recognition_API_Key_Can_Be_Left_Empty>';
acrcloudSongApiSecret = '<ACRCloud_Song_Recognition_API_Secret_Can_Be_Left_Empty>';
acrcloudHumsApiKey = '<ACRCloud_Humming_Recognition_API_Key_Can_Be_Left_Empty>';
acrcloudHumsApiSecret = '<ACRCloud_Humming_Recognition_API_Secret_Can_Be_Left_Empty>';

Creating Signing Keys

Generate signing keys for your release build using Java's keytool:

keytool -genkey -v -keystore ./keys.jks -keyalg RSA -keysize 2048 -validity 10000 -alias <YourKeyAlias>

Move keys.jks to android/app and create android/key.properties:

storePassword=<storePassword>
keyPassword=<keyPassword>
keyAlias=<keyAlias>
storeFile=keys.jks

Building the App

Finally, build the release APK:

flutter build apk --split-per-abi --release

The generated APKs will be found under build/app/outputs/flutter-apk.


⭐ If this project helps you, don’t forget to star the repo!