الروبوت غرادل إضافة مكتبة خارجية والمكتبات الخارجية المتداخلة لمشروع

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

سؤال

كيف يمكنني إضافة مكتبة خارجية والمكتبات الخارجية المتداخلة لمشروع الروبوت?


هيكل مشروعي (غير مسموح بالتغيير)

  • التطبيقات/
    • التطبيق 1/
      • بناء.غرادل
      • الإعدادات.غرادل
    • المكتبات/
      • مكتبة1/
        • بناء.الصف
        • الإعدادات.غرادل
      • مكتبة2/
        • بناء.الصف
        • الإعدادات.غرادل
      • مكتبة3/
        • بناء.الصف
        • الإعدادات.غرادل
      • مكتبة4/
        • بناء.الصف
        • الإعدادات.غرادل

التطبيق 1

التطبيق 1 / بناء.غرادل

buildscript {
    ...
}

apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':..:libraries:library1')
    compile project(':..:libraries:library2')
    compile project(':..:libraries:library3')
    compile project(':..:libraries:library4')
}

android {
    ...
}

التطبيق 1 لا يعتمد بشكل مباشر على library3 أو library4, ، ومع ذلك ، سوف يشكو إذا لم أدرجهم في التبعيات في build.gradle ملف و settings.gradle ملف.لذلك ، لقد شملت لهم فقط لمنعها من الشكوى.

التطبيق 1 / الإعدادات.غرادل

include ':'
include '..:libraries:library1'
include '..:libraries:library2'
include '..:libraries:library3'
include '..:libraries:library4'

مكتبة1

مكتبة 1 / بناء.غرادل

buildscript {
    ...
}

apply plugin: 'android-library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':..:library3')
    compile project(':..:library4')
}

android {
    ...
}

المكتبة 1 / الإعدادات.غرادل

include ':'
include '..:library3'
include '..:library4'

مكتبة2..4

مكتبة2..4 / بناء.غرادل

buildscript {
    ...
}

apply plugin: 'android-library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    ...
}

مكتبة2..4 / إعدادات.غرادل

include ':'

عند محاولة gradlew clean build على App1 أحصل على الخطأ التالي:

FAILURE: Build failed with an exception.

* Where:
Build file '/home/user/projects/branches/branch1/Apps/libraries/library1/build.gradle' line: 15

* What went wrong:
A problem occurred evaluating project ':..:library:library1'.
> Project with path ':..:library3' could not be found in project ':..:library:library1'.

الخط 15 هو compile project(':..:library3') في ال library1/build.gradle ملف.

كيف يمكنني إضافة مكتبة خارجية والمكتبات الخارجية المتداخلة لمشروع الروبوت?

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

المحلول

في إعدادات المستوى الأعلى.غرادل (التطبيق 1 / الإعدادات.غرادل) ملف تفعل شيئا من هذا القبيل لكل مكتبة

include ':library1'   
include ':library2'   
include ':library3'   
include ':library4'   

project(':library1').projectDir = new File(rootProject.projectDir, '../libraries/library1')
project(':library2').projectDir = new File(rootProject.projectDir, '../libraries/library2')
project(':library3').projectDir = new File(rootProject.projectDir, '../libraries/library3')
project(':library4').projectDir = new File(rootProject.projectDir, '../libraries/library4')

قم بإزالة الإعدادات الأخرى.ملفات غرادل ، لا تحتاج إليها

ثم في كل نص بناء تحتاج فقط إلى استخدام

compile project (':library1')
compile project (':library2')
etc....

كما ذكر أعلاه مجرد استخدام إعدادات واحدة.ملف غرادل في مشروع الجذر (التطبيق 1).

ثم من تشغيل مجلد التطبيق 1 gradlew clean :library1:build للتحقق من صحة أن المكتبة 1 تبني بشكل صحيح.

أما بالنسبة للقضية حول أب 1 تشكو من المكتبات المفقودة 3 و 4 ، هل أنت متأكد من عدم وجود رمز في التطبيق الرجوع مباشرة إلى هذه المكتبات ، إما أن أو المكتبات لا يتم العثور عليها عند تجميع المكتبة 1.بناء كل مكتبة على حدة للتحقق من صحة أنهم جميعا بناء موافق.

نصائح أخرى

سؤال واحد.هل تحتاج هذه الشجرة التبعية?

--- App
   |--- Library 2
   |--- Library 1
       |--- Library 3
       |--- Library 4

إذا كانت الإجابة بنعم ، لا يحتاج تطبيقك إلى استيراد المكتبات 3 و 4.تتوفر هذه التبعيات عبر المكتبة 1.

حول الإعدادات.ملفات غرادل.لماذا واحد في كل وحدة?يستخدم هذا الملف فقط في مشروع الجذر (مثل مساحة عمل الكسوف) للإشارة إلى الوحدات النمطية الخاصة بك (التطبيق ، المكتبة 1 ، المكتبة 2 ، إلخ...)

هذا يساعدك?

أنا أفعل هذا للمسارات النسبية:

include '..:ambilWarna'
include '..:excel'
include '..:pdfjet'
include '..:commons'
include '..:volley'


include  ':odb2'
include  ':azure'

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