· آموزش فلاتر - ۶ دقیقه

حل سریع خطاهای Gradle در پروژه‌های اندروید و فلاتر با میرورینگ Maven

از خطاهای Gradle به خاطر تحریم‌ها خسته شدی؟ با میرور من، دیگه خبری از "Could not find" نیست. به راحتی وصل شو و پروژه‌هات رو بساز! همچنین می‌تونی خودت یه میرور شخصی راه‌اندازی کنی.

حل سریع خطاهای Gradle در پروژه‌های اندروید و فلاتر با میرورینگ Maven

مقدمه

مقدمه

اگر توسعه‌دهنده اندروید یا فلاتر هستی، احتمالش زیاده که با خطای “Could not find com.android.tools.build:gradle:8.5.0” مواجه شده باشی. این خطا معمولاً زمانی رخ میده که نتونی به منابع Maven مورد نیاز برای ساخت پروژه دسترسی داشته باشی. این مشکل به خصوص در مناطقی که با تحریم‌های اینترنتی روبه‌رو هستن، بیشتر دیده میشه.

برای حل این مشکل، من یه میرور Maven راه‌اندازی کردم و همینطور یه پروژه اپن‌سورس ساختم که بهت این امکان رو میده که یه میرور شخصی بسازی. با من همراه باش تا این راهکارها رو بررسی کنیم.

استفاده از میرور آماده برای رفع خطای “Could not find…”

استفاده از میرور آماده برای رفع خطای “Could not find…”

برای اینکه بتونی به راحتی از منابع مورد نیازت استفاده کنی، من یه میرور روی آدرس https://maven.aminnez.com:9443/v1 راه‌اندازی کردم. این میرور بهت کمک می‌کنه تا بدون نگرانی از محدودیت‌های اینترنتی، کتابخانه‌های ضروری رو دریافت کنی و با خیال راحت پروژه‌هات رو بسازی.

معرفی پروژه میرورینگ Maven: بساز، استفاده کن، و بدون نگرانی توسعه بده!

معرفی پروژه میرورینگ Maven: بساز، استفاده کن، و بدون نگرانی توسعه بده!

اگر دوست داری یه میرور شخصی داشته باشی که بتونی کامل تنظیماتش رو مدیریت کنی، من یه پروژه اپن‌سورس توی GitHub دارم که به راحتی می‌تونی ازش استفاده کنی. آدرس پروژه من:

https://github.com/aminnez/maven-mirror

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

پیشنهاد ویژه: استفاده از init.gradle برای همه پروژه‌ها

پیشنهاد ویژه: استفاده از init.gradle برای همه پروژه‌ها

بهترین راه برای اینکه توی همه پروژه‌هات از میرور استفاده کنی، ایجاد یه فایل init.gradle هست. این فایل باعث میشه Gradle همیشه از مخازن میرور استفاده کنه، بدون اینکه بخوای توی هر پروژه به صورت دستی تنظیمات رو تغییر بدی.

چطور فایل init.gradle رو بسازیم؟

چطور فایل init.gradle رو بسازیم؟

ویندوز

ویندوز
  1. از منوی استارت، cmd یا Powershell رو باز کن.

  2. دستور زیر رو اجرا کن تا دایرکتوری gradle توی فولدر کاربر ساخته بشه:

mkdir %USERPROFILE%\.gradle
  1. با استفاده از یه ویرایشگر متن، مثل Notepad، یه فایل به اسم init.gradle توی این مسیر بساز و این کد رو داخلش بذار:
allprojects {
    repositories {
        maven { url "https://maven.aminnez.com:9443/v1" }
        google()
        mavenCentral()
    }

    buildscript {
        repositories {
            maven { url "https://maven.aminnez.com:9443/v1" }
            google()
            mavenCentral()
        }
    }
}

لینوکس / مک

لینوکس / مک
  1. ترمینال رو باز کن.

  2. دستور زیر رو اجرا کن تا دایرکتوری .gradle توی فولدر خانگی ساخته بشه:

mkdir ~/.gradle
  1. از یه ویرایشگر متن مثل nano یا vim استفاده کن و فایل init.gradle رو توی این مسیر بساز:
nano ~/.gradle/init.gradle
  1. کد زیر رو توی فایل کپی کن و ذخیره کن:
allprojects {
    repositories {
        maven { url "https://maven.aminnez.com:9443/v1" }
        google()
        mavenCentral()
    }

    buildscript {
        repositories {
            maven { url "https://maven.aminnez.com:9443/v1" }
            google()
            mavenCentral()
        }
    }
}

راه‌اندازی یک میرور شخصی

راه‌اندازی یک میرور شخصی

برای اینکه یه میرور شخصی راه‌اندازی کنی، مراحل زیر رو دنبال کن:

  1. ساخت docker-compose:

یک فایل docker-compose.yml بساز و داخلش این محتوا رو قرار بده:

services:
  mirror:
    image: ghcr.io/aminnez/maven-mirror:latest
    restart: unless-stopped
    ports:
      - 9443:9443
    volumes:
      - ./config.yml:/home/app/config.yml
      - ./privkey.pem:/home/app/privkey.pem # SSL
      - ./cert.pem:/home/app/cert.pem # SSL
      - ./local-cache:/home/app/local-cache # محل ذخیره سازی
  1. پیکربندی تنظیمات: فایل config.yml رو که توی ریپازیتوری هست بر اساس نیازت ویرایش کن. می‌تونی مخازن مورد نظر و پراکسی‌ها رو تنظیم کنی.

  2. راه‌اندازی با Docker:

    docker compose up -d
    

حالا، تو یه میرور شخصی داری که می‌تونی به راحتی ازش استفاده کنی و تحریم‌ها رو دور بزنی.

مزایای استفاده از میرور

مزایای استفاده از میرور
  • حل سریع مشکلات تحریم: دسترسی به منابع Maven بدون نگرانی از خطاهای رایج مثل “Could not find com.android.tools.build:gradle:8.5.0”.
  • افزایش سرعت ساخت‌ها: با استفاده از کشینگ، زمان ساخت پروژه‌ها به شکل چشم‌گیری کاهش پیدا می‌کنه.
  • مدیریت آسان: فقط یه بار فایل init.gradle رو می‌سازی و دیگه نیازی به تنظیمات دستی در هر پروژه نداری.
  • راه‌اندازی راحت با Docker: پروژه رو فقط با چند دستور ساده اجرا کن و از کارکردش لذت ببر.

نتیجه‌گیری

نتیجه‌گیری

تحریم‌ها و محدودیت‌های اینترنتی نباید جلوی پیشرفت و توسعه‌ت رو بگیرن. با استفاده از میرور Maven من و پروژه‌ای که ساختم، می‌تونی تمام مشکلات مربوط به تحریم‌های Gradle رو حل کنی و پروژه‌هات رو بدون نگرانی بسازی.

همین حالا می‌تونی از میرور من در https://maven.aminnez.com:9443/v1 استفاده کنی یا به سراغ پروژه توی GitHub بری و میرور خودت رو راه‌اندازی کنی.

امیدوارم با این راهکارها، تجربه توسعه بهتری داشته باشی و با خیال راحت اپلیکیشن‌های خودت رو بسازی! 🌟

نمونه خطا

نمونه خطا
 * What went wrong:
 Failed to query the value of property 'buildFlowServiceProperty'.
 > Could not isolate value org.jetbrains.kotlin.gradle.plugin.statistics.BuildFlowService$Parameters_Decorated of type BuildFlowService.Parameters
    > A problem occurred configuring project ':path_provider_android'.
       > Could not resolve all files for configuration ':path_provider_android:classpath'.
          > Could not find gradle-api-8.5.0.jar (com.android.tools.build:gradle-api:8.5.0).
            Searched in the following locations:
                https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/8.5.0/gradle-api-8.5.0.jar
          > Could not find shared-31.5.0.jar (com.android.tools.analytics-library:shared:31.5.0).
            Searched in the following locations:
                https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/31.5.0/shared-31.5.0.jar
          > Could not find android-test-plugin-host-coverage-proto-31.5.0.jar (com.android.tools.utp:android-test-plugin-host-coverage-proto:31.5.0).
            Searched in the following locations:
                https://dl.google.com/dl/android/maven2/com/android/tools/utp/android-test-plugin-host-coverage-proto/31.5.0/android-test-plugin-host-coverage-proto-31.5.0.jar
          > Could not find android-test-plugin-host-apk-installer-proto-31.5.0.jar (com.android.tools.utp:android-test-plugin-host-apk-installer-proto:31.5.0).
            Searched in the following locations:
                https://dl.google.com/dl/android/maven2/com/android/tools/utp/android-test-plugin-host-apk-installer-proto/31.5.0/android-test-plugin-host-apk-installer-proto-31.5.0.jar
       > Failed to notify project evaluation listener.
BUILD FAILED in 1m 18s
Exception: Gradle task assembleDebug failed with exit code 1

کلیدواژه‌ها:

  • رفع تحریم Maven
  • Gradle build failed
  • Could not find com.android.tools.build
  • حل مشکلات تحریم Gradle
  • تحریم‌های Maven در اندروید و فلاتر
  • پروژه میرورینگ Maven
  • ساخت میرور Maven
  • عبور از تحریم‌های اینترنتی برای برنامه‌نویسان
  • بهبود سرعت ساخت Gradle
  • دسترسی به مخازن Maven در ایران

در همین زمینه

مشاهده همه »
· آموزش فلاتر - ۱۸ دقیقه
بررسی ساختار پروژه‌های فلاتر - مقایسه روش‌های ویژگی‌محور و لایه‌محور

بررسی ساختار پروژه‌های فلاتر - مقایسه روش‌های ویژگی‌محور و لایه‌محور

در ساخت اپلیکیشن‌های بزرگ Flutter، انتخاب ساختاری مناسب برای پروژه مهم است تا تیم بتواند ویژگی‌ها را به شیوه‌ای منظم اضافه کند. این مقاله دو رویکرد «ویژگی‌محور» و «لایه‌محور» را بررسی می‌کند، مزایا و معایب آن‌ها را توضیح می‌دهد و یک راهنمای گام به گام ارائه می‌دهد.

· آموزش فلاتر - ۱۵ دقیقه
چه زمانی از Flutter برای طراحی وب استفاده کنیم؟

چه زمانی از Flutter برای طراحی وب استفاده کنیم؟

در دنیای پیچیده وب، انتخاب بهترین فریم‌ورک برای طراحی وب‌سایت‌ها مهمتر از همیشه است. در این مقاله، به سوالی که احتمالاً در ذهنتان پیش آمده است، پاسخ می‌دهیم: آیا انتخاب فلاتر (Flutter) برای طراحی وب مناسب است؟ با ما همراه باشید تا درک بهتری از مفاهیم اساسی و کاربردهای فلاتر در زمینه طراحی وب پیدا کنید.

· مفاهیم برنامه‌نویسی - ۳۱ دقیقه
مقایسه کامپایلر AOT در مقابل JIT: درک تفاوت‌ها و انتخاب آگاهانه

مقایسه کامپایلر AOT در مقابل JIT: درک تفاوت‌ها و انتخاب آگاهانه

در دنیای برنامه‌نویسی، انتخاب بین کامپایلرهای پیش از اجرا یا Ahead-Of-Time (AOT) و در زمان اجرا یا Just-In-Time (JIT) می‌تواند بسیار مهم باشد. می‌خواهیم به تفاوت‌های کلیدی این دو کامپایلر پرداخته و مزایا و معایب و عملکرد هر کدام را بررسی کنیم تا بتوانید برای پروژه برنامه‌نویسی خود تصمیمی آگاهانه بگیرید.