خطأ Gradle في Android: No signature of method: build_*.android() — كيف يتم إصلاحه؟

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

هل واجهت "No signature of method: build_*.android()"؟ أنت لست وحدك

\n

إذا سبق لك فتح Android Studio، وإجراء تغييرات على ملف build.gradle.kts، وتلقي خطأ أحمر غامض ERROR: No signature of method: build_ap86oam3dut3pxce3x49rdtma.android() — مرحبًا بك في النادي. هذه المشكلة مع Gradle هي واحدة من أكثر المشكلات شيوعًا على Stack Overflow (آلاف المشاهدات!)، وهي قادرة على إرباك حتى المطورين ذوي الخبرة.

\n

الخبر السار: الخطأ دائمًا تقريبًا له نفس السبب ويمكن إصلاحه في دقائق. في هذه المقالة، سنقوم بتحليله باستخدام Kotlin DSL (أي build.gradle.kts)، وسنوضح سبب حدوثه، ونقدم خطة علاج خطوة بخطوة. هيا بنا!

\n\n

ماذا يعني هذا الخطأ في الواقع؟

\n

Gradle هو نظام بناء يقرأ نصوص build.gradle (Groovy) أو build.gradle.kts (Kotlin). عندما ترى No signature of method: build_*.android()، فهذا يعني أن Gradle لا يمكنه العثور على الدالة android { ... } في سياق المشروع الجذر.

\n

ببساطة: أنت تحاول تكوين معلمات خاصة بـ Android (compileSdk, buildTypes, defaultConfig) في نص برمجي ليس وحدة تطبيق أو مكتبة. يحدث هذا عادةً في ملف build.gradle.kts الجذر، حيث يجب أن تكون فقط إعدادات لجميع المشاريع (الإضافات، المستودعات)، وليس تكوين Android.

\n\n

الموقف النموذجي (مثال باستخدام Kotlin DSL)

\n

تخيل أنك تفتح ملف build.gradle.kts الجذر وتكتب شيئًا مثل:

\n
// ❌ كود خاطئ في ملف build.gradle.kts الجذر\nandroid {\n    compileSdk = 34\n    defaultConfig {\n        minSdk = 24\n    }\n}\n
\n

بعد مزامنة Gradle، يظهر الخطأ المذكور. لماذا؟ لأن النص الجذر لا يعرف شيئًا عن Android — فهو مسؤول عن التكوين العام، وليس عن وحدة معينة.

\n\n

إصلاح الخطأ خطوة بخطوة

\n

دعنا نفهم كيفية هيكلة ملفات البناء بشكل صحيح في مشروع Kotlin. خطوتان فقط.

\n\n

الخطوة 1: تحقق من الملف الذي تقوم بتحريره

\n

افتح لوحة Project في Android Studio (عادةً على اليسار). ابحث عن ملفين:

\n
    \n
  • build.gradle.kts (الجذر، موجود في جذر المشروع)
  • \n
  • app/build.gradle.kts (ملف وحدة app)
  • \n
\n

يحدث الخطأ إذا قمت بوضع كتلة android { ... } عن طريق الخطأ في الملف الجذر. تأكد من أنك تعمل مع app/build.gradle.kts.

\n\n

الخطوة 2: انقل الكود إلى الملف الصحيح (إذا لزم الأمر)

\n

إذا وجدت كتلة android في ملف build.gradle.kts الجذر — قم بقصها ولصقها في app/build.gradle.kts. إليك كيف يجب أن يبدو الإصدار الصحيح لوحدة app:

\n\n
// ✅ ملف app/build.gradle.kts الصحيح\nplugins {\n    id("com.android.application")\n    id("org.jetbrains.kotlin.android")\n}\n\nandroid {\n    namespace = "com.example.myapp"\n    compileSdk = 34\n\n    defaultConfig {\n        applicationId = "com.example.myapp"\n        minSdk = 24\n        targetSdk = 34\n        versionCode = 1\n        versionName = "1.0"\n    }\n\n    buildTypes {\n        release {\n            isMinifyEnabled = false\n            proguardFiles(\n                getDefaultProguardFile("proguard-android-optimize.txt"),\n                "proguard-rules.pro"\n            )\n        }\n    }\n\n    compileOptions {\n        sourceCompatibility = JavaVersion.VERSION_1_8\n        targetCompatibility = JavaVersion.VERSION_1_8\n    }\n\n    kotlinOptions {\n        jvmTarget = "1.8"\n    }\n}\n\ndependencies {\n    implementation("androidx.core:core-ktx:1.12.0")\n    implementation("androidx.appcompat:appcompat:1.6.1")\n    // ... باقي التبعيات\n}\n
\n\n

أما ملف build.gradle.kts الجذر فيجب أن يحتوي فقط على إعدادات عامة مثل الإضافات والمستودعات، وليس كتلة android.

المدونات

توصيات الكتب