Files
meezi/mobile/meezi_app/BUILD_IRAN.md
T
soroush.asadi 4123654077
CI/CD / CI · API (dotnet build + test) (push) Successful in 12m40s
CI/CD / CI · Admin API (dotnet build) (push) Successful in 10m30s
CI/CD / CI · Dashboard (tsc) (push) Successful in 1m7s
CI/CD / CI · Admin Web (tsc) (push) Successful in 39s
CI/CD / CI · Website (tsc) (push) Successful in 46s
CI/CD / CI · Koja (tsc) (push) Successful in 50s
CI/CD / Deploy · all services (push) Successful in 23s
build(meezi_app): Android Maven mirrors for Iran (Aliyun)
Google's Android maven2 artifacts (AGP, androidx, Kotlin) 404 from Iran like
pub.dev does. Route Gradle resolution through the reachable Aliyun mirrors:

- android/settings.gradle.kts (pluginManagement) + build.gradle.kts (allprojects)
  now list maven.aliyun.com/repository/{gradle-plugin,google,central} before the
  originals (kept as fallback).
- BUILD_IRAN.md documents the full setup incl. the machine-local GRADLE_USER_HOME
  init.gradle needed for Flutter's included flutter_tools/gradle build.

Verified: dependency resolution now succeeds via the mirrors (AGP + kotlin-compiler
download from Aliyun). The APK build itself is currently blocked only by low disk
space on this machine, not configuration.
2026-06-03 10:50:17 +03:30

2.0 KiB

Building meezi_app from Iran (sanctions mirrors)

pub.dev, Google's package storage, and Google's Android maven2 artifacts are sanctions-filtered from Iranian IPs (403 / 404). Use the reachable mirrors below.

1. Environment (set once, persistently)

setx PUB_HOSTED_URL          "https://pub.flutter-io.cn"
setx FLUTTER_STORAGE_BASE_URL "https://storage.flutter-io.cn"

These make flutter pub get, flutter create, and engine/artifact downloads work. Web already builds with just these (flutter build web).

2. Android — Maven/Gradle mirror

Google's Android maven2 (AGP, androidx, etc.) 404s here, so:

  • android/settings.gradle.kts and android/build.gradle.kts already point their repositories at the Aliyun mirrors (committed).
  • Flutter's included flutter_tools/gradle build has its own repositories, so add a global Gradle init script. Put this at %GRADLE_USER_HOME%/init.gradle (e.g. C:\gradlecache\init.gradle, then build with GRADLE_USER_HOME=C:\gradlecache):
def aliyun = [
    'https://maven.aliyun.com/repository/gradle-plugin',
    'https://maven.aliyun.com/repository/google',
    'https://maven.aliyun.com/repository/central',
]
beforeSettings { settings ->
    settings.pluginManagement { repositories { aliyun.each { u -> maven { url u } } } }
    if (settings.rootDir.path.replace('\\', '/').contains('flutter_tools')) {
        settings.dependencyResolutionManagement { repositories { aliyun.each { u -> maven { url u } } } }
    }
}

3. Build

$env:GRADLE_USER_HOME = "C:\gradlecache"   # keep the cache on a drive with space
cd mobile/meezi_app
flutter build apk --debug

Status

  • flutter build web — works.
  • Android dependency resolution — works via the Aliyun mirrors (verified).
  • APK build currently blocked only by disk space (needs a few GB free for the Gradle cache + build output). Free space (the large Docker WSL vhdx on C: is the obvious reclaim), then flutter build apk completes.