Flutter

راه‌اندازی Flutter با Mirror مایکت

Flutter

این راهنما توضیح می‌دهد چگونه Flutter را به‌گونه‌ای تنظیم کنید که تمام packageها و Flutter artifactها را از زیرساخت مایکت دریافت کند و وابستگی مستقیمی به اینترنت خارجی نداشته باشید.

برای راه‌اندازی Flutter با استفاده از Mirror مایکت ۳ مرحله لازم است:

  1. دانلود Flutter SDK
  2. تنظیم Flutter برای استفاده از Mirror مایکت
  3. تنظیمات Gradle

۱. دانلود Flutter SDK

برای دانلود Flutter SDK کافی است دامنه https://storage.googleapis.com را با https://pub.myket.ir جایگزین کنید.

مثال دانلود نسخه‌ی 3.44.0 ویندوز:

URL
https://pub.myket.ir/flutter_infra_release/releases/stable/windows/flutter_windows_3.44.0-stable.zip

مثال دانلود نسخه‌ی 3.44.0 لینوکس:

URL
https://pub.myket.ir/flutter_infra_release/releases/stable/linux/flutter_linux_3.44.0-stable.tar.xz

مثال دانلود نسخه‌ی 3.44.0 مک:

Apple Silicon:

URL
https://pub.myket.ir/flutter_infra_release/releases/stable/macos/flutter_macos_arm64_3.44.0-stable.zip

Intel:

URL
https://pub.myket.ir/flutter_infra_release/releases/stable/macos/flutter_macos_x64_3.44.0-stable.zip

۲. تنظیم Flutter برای استفاده از Mirror مایکت

فلاتر از دو Environment Variable مختلف استفاده می‌کند: متغییر PUB_HOSTED_URL برای دانلود packageهای Dart و Flutter و متغییر FLUTTER_STORAGE_BASE_URL برای دانلود Flutter SDK و Flutter Engine Artifacts. هر دوی این مقادیر باید روی این مقدار تنظیم شوند:

URL
https://pub.myket.ir

تنظیم روی ویندوز

  1. باز کردن PowerShell — یک پنجره جدید PowerShell باز کنید.
  2. تنظیم Mirrorها
PowerShell
$env:PUB_HOSTED_URL="https://pub.myket.ir"
$env:FLUTTER_STORAGE_BASE_URL="https://pub.myket.ir"

دائمی کردن تنظیمات ویندوز

تنظیم PUB_HOSTED_URL

PowerShell
[Environment]::SetEnvironmentVariable(
  "PUB_HOSTED_URL",
  "https://pub.myket.ir",
  "User"
)

تنظیم FLUTTER_STORAGE_BASE_URL

PowerShell
[Environment]::SetEnvironmentVariable(
  "FLUTTER_STORAGE_BASE_URL",
  "https://pub.myket.ir",
  "User"
)

تنظیم روی لینوکس

Bash
export PUB_HOSTED_URL=https://pub.myket.ir
export FLUTTER_STORAGE_BASE_URL=https://pub.myket.ir

دائمی کردن تنظیمات لینوکس

Bash
echo 'export PUB_HOSTED_URL=https://pub.myket.ir' >> ~/.bashrc
echo 'export FLUTTER_STORAGE_BASE_URL=https://pub.myket.ir' >> ~/.bashrc
echo 'export PATH="$HOME/dev/flutter/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

تنظیم روی مک

تنظیم Mirrorها

Bash
export PUB_HOSTED_URL=https://pub.myket.ir
export FLUTTER_STORAGE_BASE_URL=https://pub.myket.ir

دائمی کردن تنظیمات مک

Bash
echo 'export PUB_HOSTED_URL=https://pub.myket.ir' >> ~/.bash_profile
echo 'export FLUTTER_STORAGE_BASE_URL=https://pub.myket.ir' >> ~/.bash_profile
echo 'export PATH="$HOME/dev/flutter/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

تست کردن فرایند دانلود فایل‌ها

Shell
flutter pub get

۳. تنظیمات Gradle

اگر از settings.gradle استفاده می‌کنید:

settings.gradle
pluginManagement {
  repositories {
    maven { url = uri("https://maven.myket.ir/") }
  }
}
dependencyResolutionManagement {
  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
    maven { url = uri("https://maven.myket.ir/") }
  }
}

اگر از build.gradle استفاده می‌کنید:

build.gradle
buildscript {
  repositories {
    maven { url 'https://maven.myket.ir/' }
  }
}
allprojects {
  repositories {
    maven { url 'https://maven.myket.ir/' }
  }
}

❓ سوالات متداول

۱. آیا فقط تنظیم PUB_HOSTED_URL کافی است؟

خیر. Flutter علاوه بر packageهای Dart/Flutter، فایل‌های دیگری مانند Flutter Engine، Dart SDK، Web SDK و artifactهای binary را نیز دانلود می‌کند.

به همین دلیل باید هر دو متغیر زیر تنظیم شوند:

  • PUB_HOSTED_URL
  • FLUTTER_STORAGE_BASE_URL
۲. چرا بعد از تنظیم Mirror هنوز Gradle یا Android dependencyها از اینترنت خارجی دانلود می‌شوند؟

زیرا تنظیمات Flutter فقط مربوط به packageهای Dart و Flutter artifacts است.

برای Android build، بخش Gradle نیز باید روی Mirror مایکت تنظیم شود:

https://maven.myket.ir/

در غیر این صورت Gradle ممکن است به سرویس‌هایی مانند:

  • Maven Central
  • Google Maven
  • Gradle Plugin Portal

متصل شود.

۳. آیا این تنظیمات روی Android Studio هم اعمال می‌شوند؟

بله. اگر Environment Variableها به صورت دائمی تنظیم شده باشند و فایل‌های Gradle پروژه نیز تنظیم شده باشند، Android Studio نیز از Mirror مایکت استفاده خواهد کرد.

بعد از اعمال تغییرات، بهتر است Android Studio یکبار بسته و دوباره اجرا شود.

۴. اگر flutter pub get یا flutter doctor خطا داد چه چیزی را بررسی کنیم؟

موارد زیر را بررسی کنید:

  • مقدار PUB_HOSTED_URL
  • مقدار FLUTTER_STORAGE_BASE_URL
  • دسترسی به https://pub.myket.ir
  • تنظیم بودن maven.myket.ir در فایل‌های Gradle
  • تنظیم بودن PATH برای Flutter

برای تست Environment Variableها:

Linux / macOS:

Bash
echo $PUB_HOSTED_URL
echo $FLUTTER_STORAGE_BASE_URL

Windows PowerShell:

PowerShell
echo $env:PUB_HOSTED_URL
echo $env:FLUTTER_STORAGE_BASE_URL
۵. آیا بعد از این تنظیمات Flutter کاملاً بدون اینترنت خارجی کار می‌کند؟

در اکثر پروژه‌های Flutter Android بله.

اما اگر پروژه از موارد زیر استفاده کند، ممکن است همچنان به سرویس‌های خارجی نیاز داشته باشد:

  • Git dependencies داخل pubspec.yaml
  • CocoaPods در پروژه‌های iOS
  • Android SDKهایی که هنوز نصب نشده‌اند
  • NDK یا CMake
  • دانلود JDK

برای بهترین تجربه پیشنهاد می‌شود Android SDK و JDK نیز از Mirror داخلی یا بسته‌های آفلاین نصب شوند.