نصب بدون دردسر کتابخانه های gradle

17-فروردین-1404 / خواندن 2 دقیقه

🚀 نصب سریع و بدون دردسر کتابخانه‌های Gradle

در توسعه اپ‌های اندروید، دانلود وابستگی‌ها از ریپازیتوری‌هایی مثل Maven Central یا Google Maven ضروریه. اما در شرایطی مثل فیلترینگ یا اینترنت کند، ممکنه با خطاهایی هنگام build مواجه بشید.

🧨 مشکل کجاست؟

Gradle به‌صورت پیش‌فرض از آدرس‌های زیر برای دریافت کتابخانه‌ها استفاده می‌کنه:

https://repo.maven.apache.org/maven2
https://dl.google.com/dl/android/maven2
https://plugins.gradle.org/m2

در صورت عدم دسترسی، فرایند build متوقف میشه.

✅ راه‌حل: استفاده از Mirror (آینه‌های سریع و جایگزین)

با تنظیم یک فایل global در مسیر .gradle/، می‌تونید به‌صورت خودکار آدرس‌ ریپازیتوری‌ها رو به آینه‌هایی مثل Tencent تغییر بدید.

🔧 مراحل پیاده‌سازی:

  1. در مسیر زیر، فایل جدیدی به اسم init.gradle.kts بسازید:

ویندوز: C:\Users\<USERNAME>\.gradle

مک/لینوکس: ~/.gradle

2. کد زیر را در فایل قرار دهید:

fun RepositoryHandler.enableMirror() {
    all {
        if (this is MavenArtifactRepository) {
            val originalUrl = this.url.toString().removeSuffix("/")
            urlMappings[originalUrl]?.let {
                logger.lifecycle("Repository[$url] is mirrored to $it")
                this.setUrl(it)
            }
        }
    }
}

val urlMappings = mapOf(
    "https://repo.maven.apache.org/maven2" to "https://mirrors.tencent.com/nexus/repository/maven-public/",
    "https://dl.google.com/dl/android/maven2" to "https://mirrors.tencent.com/nexus/repository/maven-public/",
    "https://plugins.gradle.org/m2" to "https://mirrors.tencent.com/nexus/repository/gradle-plugins/"
)

gradle.allprojects {
    buildscript {
        repositories.enableMirror()
    }
    repositories.enableMirror()
}

gradle.beforeSettings {
    pluginManagement.repositories.enableMirror()
    dependencyResolutionManagement.repositories.enableMirror()
}

3. از این به بعد با اجرای ./gradlew در هر پروژه، Gradle به‌صورت خودکار از آینه‌ها استفاده می‌کنه.

💡 نکته: در برخی موارد ممکنه دانلودها با خطا قطع بشن؛ اجرای مجدد Gradle معمولاً ادامه نصب را انجام می‌دهد.

react native gradle android android-studio gradle-mirror