Android studio، لا يستخدم gradle أبدًا الريبو المحلي الخاص بي

StackOverflow https://stackoverflow.com//questions/25015797

  •  21-12-2019
  •  | 
  •  

سؤال

كيف يمكنني الحصول على gradle 1.10 لاستخدام مستودع maven المحلي الخاص بي؟عندما أقوم بتشغيل البرنامج النصي الخاص بي، فإنه يبحث دائمًا عن القطعة الأثرية الموجودة /Applications/Android Studio.app/sdk/extras/android/m2repository/ بدلاً من ${HOME}/.m2/repository/

لقد حاولت في build.gradle:

repositories {
    mavenCentral()
    mavenLocal()
 }

وحاولت هذا:

repositories {
    mavenCentral()
    maven {
        url '${HOME}/.m2/repository/'
    }
 }

لدي بعد ذلك تبعية موجودة في مستودع .m2 المحلي الخاص بي:

dependencies {
    compile 'com.android.support:support-v4:20.0.+'
    compile 'com.android.support:appcompat-v7:20.0.+'
    compile 'com.google.android.gms:play-services:4.0.30'
    compile 'com.profferapp:proffer_dto_customer_android:1.0'
    compile 'com.test:artifact:1.0' // this is in my .m2 repository
}

لا يشير أي من هذه التكوينات إلى مستودع المخضرم المحلي الخاص بي.

هل كانت مفيدة؟

المحلول

إذا كنت تريد إجراء استبدال المتغير ${...}، فستحتاج إلى استخدام علامات الاقتباس المزدوجة (") بدلاً من علامات الاقتباس المفردة (').تشير علامات الاقتباس المزدوجة إلى GStrings، والتي يمكنها القيام بذلك، ولكن السلاسل ذات علامات الاقتباس المفردة يتم دائمًا تفسيرها حرفيًا.

لذا:

repositories {
    mavenCentral()
    maven {
        url "${HOME}/.m2/repository/"
    }
 }

تأكد من وضع هذه الكتلة في ملف بناء الوحدة الخاصة بك، وليس في ملف buildscript كتلة ملف البناء ذي المستوى الأعلى؛يحدد الأخير فقط مكان العثور على مكون Android الإضافي، وليس التبعيات الخاصة بالوحدة النمطية الخاصة بك

بسبب السلسلة التي تم اقتباسها بشكل خاطئ، فمن المحتمل ألا تتمكن من رؤية المستودع المحلي الخاص بك.أيضًا، السؤال الآخر حول المكون الإضافي الذي يضيف ضمنيًا Maven repo في SDK الخاص بك هو الصحيح أيضًا.سيؤدي هذا إلى التقاط تبعيات دعم Android.

Gradle Single vs Double Quotes يحتوي على مزيد من المعلومات ورابط يمكنك اتباعه.

نصائح أخرى

أريد التعليق على إجابة سكوت بارتا لكن ليس لدي سمعة كافية.

  1. $HOME لا يعمل معي (في CLI، وليس Android Studio)، System.getenv('HOME') يعمل
  2. ليس من الضروري وضع كتلة المستودعات في ملف build.gradle لكل الوحدات، فقط ضع الكتلة داخل كتلة "allprojects" في ملف build.gradle ذي المستوى الأعلى (تعلمت ذلك هنا)

لذا فإن الحل النهائي الذي أستخدمه هو:

// in the top-level build.gradle:
buildscript {
    ...
}

allprojects {
    repositories {
        mavenCentral()
        maven { url System.getenv('HOME') + "/.m2/repository/" }
    }
}

عندما تفعلapply plugin: 'android'

يضيف مكون Android الإضافي مستودعًا آخر - وهو الموجود ضمن SDK الخاص بك.أنه يحتوي على مكتبات الدعم والإرشاد تلك. com.test:artifact:1.0 من المحتمل أن يكون مأخوذًا من مستودع Maven المحلي الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top