android - للمبتدئين - كيفية تعلم الرسم الهندسي اليدوي




كيفية مشاركة مصدر مكتبة واحد عبر مشاريع متعددة (3)

السؤال كما في العنوان. تم طرح سؤال مماثل here ، وكان الحل الوحيد في ذلك الوقت هو نشر المشروع في مستودع Maven المحلي.

هل هذه المشكلة ثابتة (كما يدعي البعض) في Android Studio 0.5. +؟ في ملاحظة الإصدار الخاصة به ، هناك عبارة تقول "دعم المجلدات المصدر خارج الجذر المحتوى الوحدة النمطية". هل يعني ذلك أنه يمكننا في النهاية استيراد المكتبة من خارج مجلد المشروع؟

حاولت ملف-> استيراد المشروع .. لكنه لا يعمل.

EDIT 2: شاهد الإجابة المقبولة على أحدث الحلول (اعتبارًا من 0.8. +)

تصحيح:

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

MyApp
    main
        build.gradle
        src
    build.gradle
    settings.gradle

يحتوي مجلد مشروع المكتبة على وحدة نمطية واحدة فقط تسمى lib (يتم إنشاؤها تلقائيًا عند إنشاء مشروع مكتبة جديد)

MyLibrary
    lib
        build.gradle
        src
    build.gradle
    settings.gradle

يتم إضافة السطر التالي إلى MyApp/settings.gradle :

include ':main', '..:MyLibrary'

يتم إضافة ما يلي إلى MyApp/main/build.gradle :

dependencies {
    compile project(':..:MyLibrary')
}

والنتيجة هي الخطأ التالي:

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':main'.
> Configuration with name 'default' not found.

كملاحظة جانبية ، يمكن لمشروع المكتبة MyLibrary نفسها أن يتجمع دون أخطاء. يبدو أن المشكلة هي settings.gradle لعدم القدرة على التعرف على بنية مشروع المكتبة.


أردت أن أفعل شيئًا مشابهًا لمشروع Android Wear ، حيث يتوفر لديك وحدات mobile wear . في Android Studio 1.5.1 ، يمكنك إجراء File-> New-> Module واختيار مكتبة Android كوحدة نمطية. سيهتم ذلك بالعديد من الإعدادات الموضحة أعلاه ويضع مكتبتك داخل مشروع Android Wear الحالي.


للاستفادة الكاملة من Android Studio ، أوصي بإنشاء مشروع android عادي في البداية. ثم ، ضمن هذا المشروع ، أضف نوع وحدة نمطية " android library " ، (اختياريًا) " java library " (إذا كان لديك رمز تريد استخدامه قد يكون شائعًا في تطبيقات Android والرمز الجانبي للخادم).

باستخدام هذه الآلية ، لا تحتاج إلى معالجة وتعديل ملفات gradle و manifest.


(كما في الإصدار 2.1 أو الأحدث):

فيما يلي الخطوات التي اتخذتها لمشاركة مصدر المكتبة خارج دليل المشروع. بدلاً من مكتبة جافا العادية ، يتم تجميع الرموز الخاصة بي كوحدة Android ، ولكن وحدة المكتبة هذه غير موجودة داخل المشروع الرئيسي. الأمر جيد معي طالما أنه لا يوجد ازدواج في الكود وأحتاج فقط للحفاظ على مجموعة واحدة من رمز المكتبة لجميع المشاريع:

1) ملف-> مشروع جديد. أعط اسمًا لمشروع مكتبتك (هنا أستخدم LibraryProject ). متابعة الخطوات المتبقية لإنشاء مشروع عادي (بما أن الهدف من ذلك هو إنشاء مكتبة ، اخترت "لا تضيف أي نشاط")

2) افتراضيًا ، ينشئ استوديو Android الوحدة المسماة "app" داخل مجلد المشروع. لمنع تصادم الأسماء مع وحدة التطبيق الفعلية ، أعد تسمية الوحدة إلى شيء آخر (انقر بزر الماوس الأيمن على "app" في اللوحة اليسرى-> Refactor-> Rename).

3) في الملف build.gradle داخل مجلد وحدة المكتبة ، قم بتغيير السطر العلوي

apply plugin: 'com.android.application'

إلى

apply plugin: 'com.android.library'

ثم قم بإزالة السطر "applicationId" ضمن "defaultConfig". أيضا ، لأن هذه مكتبة ، قم بإزالة xlmns:... namespace و <application ..> body من Manifest.xml كذلك. هذا كل ما في جزء المكتبة. الآن ، لإنشاء / تعديل التطبيق الرئيسي الخاص بك:

4) إذا كان مشروعًا جديدًا ، فعليك أولاً إنشاء مشروع جديد -> مشروع جديد -> ApplicationName.

5) افتح settings.gradle (يجب أن يكون هناك ملف واحد فقط في كل مشروع) وقم بتضمين السطر التالي (لاحظ الفاصلة المنقوطة الرائدة في الوحدة النمطية للمكتبة):

include ':app', '..:LibraryProject:yourLibraryModule'

6) ثم انتقل إلى ملف-> هيكل المشروع.

7) ضمن علامة التبويب "التبعيات" ، انقر على الزر "+" الأخضر على اليمين. حدد "وحدة التبعية". اختر وحدة المكتبة الخاصة بك ، ثم انقر فوق موافق.

يجب أن تكون الآن قادرًا على استخدام فئات المكتبة في التطبيق الخاص بك.

طريقة بديلة إذا ، لسبب ما ، لا تزال هناك مشاكل مع الطريقة المذكورة أعلاه ، يمكنك أن تجرب ما يلي (اقترح here ):

1) كرر الخطوات من 1 إلى 4 أعلاه. بشكل افتراضي ، يبدو المشروع الرئيسي والخارجي (المكتبة) شيئًا كالتالي:

  /MainProject
    + build.gradle
    + settings.gradle
    + app/
      + build.gradle
      + src/

  /LibraryProject
    + build.gradle
    + settings.gradle
    + app/
      + build.gradle
      + src/

2) كالمعتاد ، refactor اسم الوحدات (في الروبوت استوديو بزر الماوس الأيمن فوق وحدة-> refactor-> إعادة تسمية) لشيء أقل مربكة ، مثل

  /MainProject
    + build.gradle
    + settings.gradle
    + MainModule/
      + build.gradle
      + src/

  /LibraryProject
    + build.gradle
    + settings.gradle
    + LibraryModule/
      + build.gradle
      + src/

3) تعديل settings.gradle MainProject في MainProject :

include ':LibraryModule', ':app'
project(':LibraryModule').projectDir = new File(settingsDir, '../LibraryProject/LibraryModule')

مزامنة المشروع والانتهاء من ذلك.

ملاحظة على Proguard

في الوقت الحالي ، يجب ألا تستخدم حراسة على مشاريع / وحدات مكتبية خارجية. بدلاً من ذلك ، يمكنك استبدال ما يلي (الإجابة الأصلية here )

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
    }
    debug {
        minifyEnabled false
    }
}

مع ما يلي (في build.gradle المكتبة):

buildTypes {
    release {
        consumerProguardFiles 'proguard-project.txt'
    }
}

حيث proguard-project.txt هو الملف الذي يحتوي على قواعد proguard لمشروع المكتبة الخاصة بك.





android-studio