-
Notifications
You must be signed in to change notification settings - Fork 1
Building
How to build InstaDownload from source, install it on a device, and understand the repo layout. For how the code actually works, see the Developer Guide.
| Tool | Version | Notes |
|---|---|---|
| JDK | 17 | Required for the build. Temurin/OpenJDK is fine. |
| Android SDK | API 35 |
compileSdk/targetSdk = 35, minSdk = 24. |
| Android Studio | Latest stable | Optional but recommended - bundles the SDK and Gradle. |
| Gradle | Wrapper included | Use ./gradlew; AGP is 8.9.2, Kotlin 2.0.21. |
git clone https://github.com/Orang-Studio/InstaDownload.git
cd InstaDownloadThe Gradle project is in a subfolder. The repo holds
fastlane/,img/, and the app project underInstaDownload/. All Gradle commands run from that app folder:
cd InstaDownload # now inside it (gradlew)Or just open the repo in Android Studio - it will detect the project automatically.
InstaDownload/ ← repo root
├── README.md ← README
├── LICENSE ← LICENSE
├── img/ ← screenshots how it looks
├── fastlane/ ← store metadata (fdroid)
├── .github/workflows/build.yml ← CI: build & release
└── InstaDownload/ ← Gradle project root
├── gradlew / gradlew.bat ← Windows
├── settings.gradle.kts ← settings
├── gradle/libs.versions.toml ← version catalog
└── app/
├── build.gradle.kts ← build settings
└── src/main/
├── AndroidManifest.xml ← Android Manifest
├── java/com/vakarux/instadownload/
│ ├── MainActivity.kt ← ui + download logics
│ ├── InstagramDownloader.kt ← media extraction
│ └── ui/theme/ ← theme
└── res/ ← icons, colors, strings
Use debug for testing and also bug hunting
From the Gradle project folder (InstaDownload/InstaDownload):
./gradlew assembleDebugOutput:
app/build/outputs/apk/debug/app-debug.apk
Make sure that you push the release build to production with good license, without bugs, with support for all usable android versions
./gradlew assembleReleaseOutput:
app/build/outputs/apk/release/app-release.apk
Minification is disabled (isMinifyEnabled = false), so no extra ProGuard configuration is needed. A local assembleRelease produces an unsigned APK
Enable USB debugging on your phone (Settings > Developer options), connect it, accept the authorization dialog, then:
adb install -r app/build/outputs/apk/debug/app-debug.apkIf adb isn't on your PATH, it lives in <Android SDK>/platform-tools/.
No cable? Transfer the APK to your phone (e.g. via move.oranges.lt, cloud storage, or email) and open it there - allow "install from unknown sources" if prompted.
.github/workflows/build.yml builds the app on every push to main/master and on version tags:
- Runs on ubuntu with JDK 17.
- Generates a signing keystore, then runs
assembleReleasewith the signing config injected via-Pandroid.injected.signing.*properties. - Uploads
app-release.apkas a build artifact (kept 30 days). - On a tag matching
v*it creates a GitHub Release with the signed APK attached and auto-generated notes.
Initially, we wanted to release our app to a bigger pool of audience, but Google requires verification such as a face scan or passport + $25 publishing fee. So, we decided to not do it and chose a more developer/user friendly alternative called fdroid. Also I hate google's device attestation.
- Fork the repo and create a branch for your change.
- Keep changes focused - this is a small, single-purpose app.
- There are no automated tests (unit tests are disabled in
build.gradle.kts); verify manually by building a debug APK and downloading a video. - Open a Pull Request describing what changed and how you tested it.
Found a bug or extraction is broken? Open a GitHub Issue - if it's a "methods are patched" error, paste the copied error text from the app. Thanks for your support!!