ฉันจะเพิ่มโครงการห้องสมุดลงใน Android Studio ได้อย่างไร


796

ฉันจะเพิ่มโครงการห้องสมุด (เช่น Sherlock ABS) ลงในAndroid Studio ได้อย่างไร

(ไม่ใช่สำหรับบันเดิลที่ใช้ ADT Eclipse แต่เป็นสำหรับAndroid Studioใหม่)


28
ใช่การคิดออกนี้เป็นวิธีที่สับสนมากกว่าที่ควรจะเป็น ... ไม่เหมือนมันจะดีกว่าในคราส
Daniel Smith

4
วิดีโอ YouTube วิธีเพิ่มไลบรารีลงใน Android Studioอธิบายกระบวนการ

2
หากคุณกำลังใช้Gradle, เห็นนี้คำตอบ StackOverflow
craned

2
นี่คือวิดีโอที่ฉันคิดว่ามีประโยชน์จริงๆ: youtube.com/watch?v=1MyBO9z7ojk
Simon

คำตอบ:


718

อัพเดทสำหรับ Android Studio 1.0

ตั้งแต่ Android Studio 1.0 เปิดตัว (และเวอร์ชั่นต่าง ๆ มากมายระหว่าง v1.0 และหนึ่งในตัวแรกจากคำตอบก่อนหน้านี้ของฉัน) บางสิ่งมีการเปลี่ยนแปลง

คำอธิบายของฉันมุ่งเน้นไปที่การเพิ่มโครงการห้องสมุดภายนอกด้วยมือผ่านไฟล์ Gradle (เพื่อทำความเข้าใจกระบวนการ) หากคุณต้องการเพิ่มห้องสมุดผ่านทางผู้สร้าง Android Studio เพียงตรวจสอบคำตอบด้านล่างด้วยคู่มือภาพ (มีความแตกต่างบางอย่างระหว่าง Android Studio 1.0 และจากหน้าจอ แต่กระบวนการนั้นคล้ายกันมาก)

ก่อนที่คุณจะเริ่มเพิ่มไลบรารีในโครงการของคุณด้วยตนเองให้พิจารณาเพิ่มการพึ่งพาภายนอก มันจะไม่ยุ่งในโครงสร้างโครงการของคุณ เกือบทุกไลบรารี่ Android ที่เป็นที่รู้จักนั้นมีอยู่ในMaven repository และการติดตั้งนั้นใช้โค้ดเพียงบรรทัดเดียวในapp/build.gradleไฟล์:

dependencies {
     compile 'com.jakewharton:butterknife:6.0.0'
}

การเพิ่มห้องสมุด

นี่คือกระบวนการทั้งหมดในการเพิ่มห้องสมุด Android ภายนอกให้กับโครงการของเรา:

  1. สร้างโครงการใหม่ผ่านทางผู้สร้าง Android Studio ผมตั้งชื่อมันHelloWorld
  2. นี่คือโครงสร้างโครงการดั้งเดิมที่สร้างโดย Android Studio:
HelloWorld/
      app/
           - build.gradle  // local Gradle configuration (for app only)
           ...
      - build.gradle // Global Gradle configuration (for whole project)
      - settings.gradle
      - gradle.properties
      ...
  1. ในไดเรกทอรีราก ( HelloWorld/) สร้างโฟลเดอร์ใหม่: /libsซึ่งเราจะวางไลบรารี่ภายนอกของเรา (ไม่จำเป็นต้องใช้ขั้นตอนนี้ - เพียงเพื่อรักษาโครงสร้างโครงการที่สะอาดขึ้น)
  2. วางไลบรารีของคุณใน/libsโฟลเดอร์ที่สร้างขึ้นใหม่ ในตัวอย่างนี้ฉันใช้ไลบรารี PagerSlidingTabStrip (เพียงดาวน์โหลด ZIP จาก GitHub เปลี่ยนชื่อไดเรกทอรีห้องสมุดเป็น„ PagerSlidingTabStrip "และคัดลอก) นี่คือโครงสร้างใหม่ของโครงการของเรา:
HelloWorld/
      app/
           - build.gradle  // Local Gradle configuration (for app only)
           ...
      libs/
           PagerSlidingTabStrip/
                - build.gradle // Local Gradle configuration (for library only)
      - build.gradle // Global Gradle configuration (for whole project)
      - settings.gradle
      - gradle.properties
      ...
  1. แก้ไขโดยการเพิ่ม settings.gradle includeห้องสมุดของคุณจะ หากคุณใช้เส้นทางที่กำหนดเองเหมือนที่ฉันทำคุณต้องกำหนดไดเรกทอรีโครงการสำหรับห้องสมุดของเราด้วย settings.gradle ทั้งหมดควรมีลักษณะดังนี้:

    include ':app', ':PagerSlidingTabStrip'
    project(':PagerSlidingTabStrip').projectDir = new File('libs/PagerSlidingTabStrip')

5.1 หากคุณพบข้อผิดพลาด "การกำหนดค่าเริ่มต้น" ให้ลองทำตามขั้นตอนที่ 5 แทน

    include ':app'
    include ':libs:PagerSlidingTabStrip'
  1. ในการapp/build.gradleเพิ่มโครงการห้องสมุดของเราเป็นการพึ่งพา:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:21.0.3'
        compile project(":PagerSlidingTabStrip")
    }

6.1 หากคุณทำตามขั้นตอนที่ 5.1 ให้ทำตามนี้แทน 6

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:21.0.3'

        compile project(":libs:PagerSlidingTabStrip")
    }
  1. หากโครงการห้องสมุดของคุณไม่มีbuild.gradleไฟล์คุณต้องสร้างมันขึ้นมาเอง นี่คือตัวอย่างของไฟล์นั้น:

        apply plugin: 'com.android.library'
    
        dependencies {
            compile 'com.android.support:support-v4:21.0.3'
        }
    
        android {
            compileSdkVersion 21
            buildToolsVersion "21.1.2"
    
            defaultConfig {
                minSdkVersion 14
                targetSdkVersion 21
            }
    
            sourceSets {
                main {
                    manifest.srcFile 'AndroidManifest.xml'
                    java.srcDirs = ['src']
                    res.srcDirs = ['res']
                }
            }
        }
  2. นอกจากนี้คุณสามารถสร้างการกำหนดค่าส่วนกลางสำหรับโครงการของคุณซึ่งจะมีรุ่น SDK และรุ่นเครื่องมือสร้างสำหรับทุกโมดูลเพื่อให้สอดคล้อง เพียงแก้ไขgradle.propertiesไฟล์และเพิ่มบรรทัด:

    ANDROID_BUILD_MIN_SDK_VERSION=14
    ANDROID_BUILD_TARGET_SDK_VERSION=21
    ANDROID_BUILD_TOOLS_VERSION=21.1.3
    ANDROID_BUILD_SDK_VERSION=21

    ตอนนี้คุณสามารถใช้มันในbuild.gradleไฟล์ของคุณ(ในแอพและโมดูลไลบรารี) ดังนี้:

    //...
    android {
        compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
        buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
    
        defaultConfig {
            minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
            targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
        }
    }
    //...
  3. นั่นคือทั้งหมดที่ เพียงแค่คลิก, ประสานกับ Gradleประสานโครงการที่มีไอคอน ห้องสมุดของคุณควรมีอยู่ในโครงการของคุณ

Google I / O 2013 - ระบบสร้าง SDK Android ใหม่เป็นการนำเสนอที่ยอดเยี่ยมเกี่ยวกับการสร้างแอป Android ด้วยระบบ Gradle Build: ตามที่ Xavier Ducrohet กล่าวว่า:

Android Studio คือทั้งหมดที่เกี่ยวกับการแก้ไขการดีบักและการทำโปรไฟล์ มันไม่ได้เกี่ยวกับการสร้างอีกต่อไป

ในตอนแรกมันอาจสับสนเล็กน้อย (โดยเฉพาะผู้ที่ทำงานกับEclipseและไม่เคยเห็นมด - เหมือนฉัน;)) แต่สุดท้าย Gradle ให้โอกาสที่ดีและคุ้มค่าที่จะเรียนรู้ระบบการสร้างนี้


6
เฮ้ที่นั่นคุณอธิบายปัญหาที่แท้จริงได้อย่างสมบูรณ์แบบ โหวตคำตอบของคุณเพื่อให้คนอื่นเห็นได้ สิ่งหนึ่งที่ไม่สามารถใช้งานได้ในด้านของฉันคือการอ้างอิงไลบรารีสนับสนุนใน build.gradle ของผู้พึ่งพา ตามที่ปรากฎ ': โครงการ / libs ... ' ไม่ทำงานด้วยเหตุผลบางประการ ฉันต้องทำด้วยบัตรประจำตัวโครงการ ดังนั้น 'libs / ... ' และมันก็รวบรวมดี สิ่งหนึ่งที่ทราบว่าสองวิธีในการอ้างอิงเส้นทางหรือโครงการนั้นทำให้เกิดความสับสน ฉันหวังว่าโครงการที่เรียบง่ายและครบวงจรจะเกิดขึ้นในอนาคต ไม่มีเหตุผลว่าทำไมโซลูชันดั้งเดิมไม่ทำงาน
ผู้ชนะ n

9
+1 ดิ้นรนกับสิ่งนี้มาเป็นเวลานาน ตามที่ผู้วิกกล่าวว่าการอ้างอิง jar หลักของโปรเจ็กต์จากโมดูล actionbarsherlock ไม่ทำงาน ฉันต้องทำสิ่งต่อไปนี้เพื่อให้มันใช้งานได้ ... (1) ลบไฟล์คอมไพล์ ('libs / android-support-v4.jar')ออกจาก build.gradle ของโครงการ โมดูลหลักควรมีเพียงโครงการรวบรวม ( ": ห้องสมุด: ActionBarSherlock") (2) เพิ่มไฟล์คอมไพล์ ('libs / android-support-v4.jar')แทนไฟล์คอมไพล์ (': HelloWorld / libs / android-support-v4.jar')ใน build.gradle ของ actionbarsherlock
อัคบาร์อิบราฮิม

3
อยู่ที่ไหนGlobal libraries(# 10: "ตอนนี้ไปที่ห้องสมุดโลก") นอกเหนือจากนั้นมันทำงานตามที่อธิบายไว้ :) ขอบคุณมาก (ฉันหวังว่า Google จะสามารถใช้งานได้ - งานง่าย ๆ นี้ซับซ้อนอย่างน่ากลัวในตอนนี้)
Konrad Morawski

8
เหตุใดฉันจึงไม่มีส่วน "นำเข้าโมดูล" ที่ตัวเลือกที่คุณกำกับเรา ฉันใช้ Android Studio 0.3.1
alicanbatur

5
ตัวเลือกการนำเข้าโมดูลหายไป !!
amalBit

274

นี่คือคู่มือภาพ:

อัปเดตสำหรับ Android Studio 0.8.2:

ในสตูดิโอของ Android 0.8.2 ให้ไปที่โครงสร้างโครงการ -> ภายใต้โมดูลเพียงแค่กดปุ่มบวกและเลือกนำเข้าโครงการที่มีอยู่actionbarsherlockและนำเข้า จากนั้นซิงโครไนซ์ไฟล์ Gradle ของคุณ

หากคุณพบข้อผิดพลาด

ข้อผิดพลาด: การแก้ไขเครื่องมือสร้าง SDK (xx.xx) ต่ำเกินไป ต่ำสุดที่ต้องการคือ yy.yy

เพียงแค่เปิดbuild.gradleไฟล์ในactionbarsherlockไดเรกทอรีและอัปเดตเป็นbuildToolsVersionไฟล์ที่แนะนำ

android {
  compileSdkVersion 19
  buildToolsVersion 'yy.y.y'

Android Studio 0.8.2


ไฟล์เมนู-> โครงสร้างโครงการ ... :

เป็นครั้งแรก

โมดูล -> นำเข้าโมดูล

ที่สอง

หลังจากอิมพอร์ตโมดูลไลบรารีให้เลือกโมดูลโครงการของคุณและเพิ่มการพึ่งพา:

ที่สาม

จากนั้นเลือกโมดูลที่นำเข้า :

ออกมา


31
ตัวเลือกการนำเข้าโมดูลไม่พร้อมใช้งานใน Android Studio4.3
amalBit

3
กุญแจสำคัญสำหรับฉันที่จะทำให้งานนี้และแก้ไขข้อผิดพลาดที่ไม่พบแพคเกจคือขั้นตอนSelect your project module and add dependency dependencies { // ... compile project(':library') }
toobsco42

7
นี่จะเป็นการคัดลอกโมดูลห้องสมุดในโครงการของคุณซึ่งไม่ใช่สิ่งที่คุณต้องการหากคุณต้องการให้มีการแชร์รหัสพื้นฐานระหว่างโครงการต่าง ๆ
Rémy DAVID

@amalBit เป็น ... คุณมาจากอนาคตหรือไม่ แต่อย่างจริงจังพวกเขาต้องทำให้ง่ายเหมือนใน Eclipse ADT; ใครต้องการที่จะเข้าชม repo ของบุคคลที่สามและรวบรวม (อาจ) รหัสโดยพลการในแต่ละงานสร้าง? นั่นเป็นการทำลาย QA และโปรโตคอลการตรึงโค้ดอย่างจริงจัง
CCJ

ย้อนกลับไปในช่วงเบต้าเบต้าของ Android Studio 0.4.3 สำหรับภาคยานุวัติของบุคคลที่สาม repo id พูดหลีกเลี่ยงการใช้ + เพียงระบุเวอร์ชันที่คุณต้องการ หากคุณยังคงเชื่อใจได้คุณสามารถสร้าง jar (หรือโคลน) ของ repo และใช้มันได้
amalBit

111

ใช้เมนูไฟล์ -> โครงสร้างโครงการ -> โมดูล

ฉันเริ่มใช้มันวันนี้ มันแตกต่างกันเล็กน้อย

สำหรับ Sherlock คุณอาจต้องการลบไดเรกทอรีทดสอบหรือเพิ่มjunit.jarไฟล์ไปที่ classpath

ในการนำเข้าไลบรารี่โดยใช้ gradle คุณสามารถเพิ่มมันเข้าไปในdependenciesส่วนของ build.gradleโมดูลของคุณ

เช่น

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.0'
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}

Android Studio กำลังเปลี่ยนแปลง

มีส่วนหนึ่งชื่อ "การตั้งค่าโมดูลเปิด" หากคุณคลิกขวาที่โฟลเดอร์โมดูลในส่วนโครงการของ Android Studio (ฉันใช้รุ่น 0.2.10)


1
อืมก็ยังคงบอกว่า android-apt-compiler: styles.xml: 5: ข้อผิดพลาด: เกิดข้อผิดพลาดในการดึงข้อมูลพาเรนต์สำหรับรายการ: ไม่พบทรัพยากรที่ตรงกับชื่อ 'Theme.Sherlock.Light.DarkActionBar'
Alexander Kulyakhtin

ภายใต้ Sherlock Module -> Dependecies ฉันมี android 4.2.2 และสนับสนุน Library v4
Blackbelt

@ ρяσѕρєяKถัดจากปุ่มเรียกใช้มีป้ายกำกับพร้อม Android หากคุณไปที่นั่นคุณจะพบการแก้ไขการกำหนดค่า กดและภายใต้ Target Device คลิกที่ "Show Chooser Dialg"
Blackbelt

7
สวัสดีฉันมีปัญหาเช่นเดียวกับอเล็กซ์ ("การไล่ระดับ: ข้อผิดพลาดในการดึงพาเรนต์สำหรับรายการ: ไม่พบทรัพยากรที่ตรงกับชื่อที่กำหนด 'Theme.Sherlock.Light'.") - การพึ่งพา Java ดูเหมือนว่าจะแก้ไขได้อย่างถูกต้อง IDE ไม่โทษ SherlockActivity ของฉัน แต่ด้วยเหตุผลบางอย่าง Gradle ดูเหมือนจะไม่ได้มองหาแหล่งข้อมูลของ ABS ความคิดใด ๆ
ปลา

4
บน Android Studio 0.2.8 ไม่มีModulesส่วนในProject Structureหน้าต่าง
Konrad Morawski

52

ฉันจะพิจารณาDependencies, ไลบรารี Android และการตั้งค่าหลายโครงการที่จำเป็นในการอ่าน โปรดสละเวลาสองสามนาที

โดยเฉพาะอย่างยิ่งในกรณีของโครงการห้องสมุดที่ไม่ใช่ jar อ่านตัวอย่างต่อไปนี้จากแหล่งข้อมูลด้านบน:

โครงการ Gradle ยังสามารถขึ้นอยู่กับโครงการ Gradle อื่น ๆ โดยใช้การตั้งค่าหลายโครงการ การตั้งค่าหลายโครงการมักจะทำงานได้โดยให้โครงการทั้งหมดเป็นโฟลเดอร์ย่อยของโครงการรากที่กำหนด

ตัวอย่างเช่นมอบให้กับโครงสร้างต่อไปนี้:

MyProject/
 + app/
 + libraries/
    + lib1/
    + lib2/

เราสามารถระบุได้ 3 โครงการ Gradle จะอ้างอิงพวกเขาด้วยชื่อต่อไปนี้:

:app
:libraries:lib1
:libraries:lib2

แต่ละโครงการจะมี build.gradle เป็นของตัวเองประกาศว่าจะสร้างได้อย่างไร นอกจากนี้จะมีไฟล์ชื่อ settings.gradle ที่รูทประกาศโครงการ สิ่งนี้ทำให้โครงสร้างต่อไปนี้:

MyProject/
 | settings.gradle
 + app/
    | build.gradle
 + libraries/
    + lib1/
       | build.gradle
    + lib2/
       | build.gradle

เนื้อหาของ settings.gradle นั้นง่ายมาก:

include ':app', ':libraries:lib1', ':libraries:lib2'

สิ่งนี้กำหนดว่าโฟลเดอร์ใดเป็นโครงการ Gradle

โครงการแอปมีแนวโน้มที่จะขึ้นอยู่กับไลบรารีและสิ่งนี้ทำได้โดยการประกาศการพึ่งพาต่อไปนี้:

dependencies {
    compile project(':libraries:lib1')
}

โปรดทราบว่ามีการใช้ Android Studio GUI เพียงเล็กน้อยหรือไม่มีเลยในการทำให้เรื่องนี้เกิดขึ้น

ฉันกำลังใช้submodules gitเพื่อเชื่อมโยงไลบรารีที่ซ้อนกันกับ repo git ของไลบรารีที่แท้จริงเพื่อหลีกเลี่ยงการพึ่งพา


มีประโยชน์มากและที่สำคัญไม่เล่น gui whims ของวัน
RichieHH

1
ขอบคุณมากสำหรับการรวมคำตอบเดียวที่สมเหตุสมผล คำตอบอื่น ๆ นั้นล้าสมัยแล้วและไม่ได้ผล ฉันไม่ได้ลองใช้ CS ที่มหาวิทยาลัยเวอร์จิเนียเทคเพราะทั้งสองปีแรกคือการเรียนรู้ที่จะคลิ๊กในคราส มันไม่สมเหตุสมผลใด ๆ แต่การเห็นผลการไล่ระดับสีของการคลิกแบบสุ่มใน IDE ทำได้
dcunited001

ขอบคุณสำหรับเคล็ดลับ submodules คอมไพล์ ก่อนหน้านี้ฉันเคยใช้ทางแยก แต่ตอนนี้เปลี่ยนไปใช้ SVN externals แล้ว ทำงานเหมือนจับใจ
velis

25

ฉันเพิ่งค้นพบวิธีที่ง่ายกว่า (แทนที่จะเขียนลงในไฟล์. Gradle โดยตรง)

นี่สำหรับ Android Studio 1.1.0

  1. ไฟล์เมนู-> โมดูลใหม่ ... :

    โครงการนำเข้าที่มีอยู่

    คลิกที่ "นำเข้าโครงการที่มีอยู่"

  2. เลือกไลบรารีที่ต้องการและโมดูลที่ต้องการ

  3. คลิกเสร็จสิ้น Android Studio จะนำเข้าไลบรารีไปยังโครงการของคุณ มันจะซิงค์ไฟล์ gradle

  4. เพิ่มโมดูลที่นำเข้าเพื่อการอ้างอิงของโครงการของคุณ

    คลิกขวาที่โฟลเดอร์แอพ -> เปิดการตั้งค่าโมดูล -> ไปที่แท็บการอ้างอิง -> คลิกที่ปุ่ม '+' -> คลิกที่การพึ่งพาโมดูล

    จากนั้นโมดูลห้องสมุดจะถูกเพิ่มเข้ากับการอ้างอิงของโครงการ

    เพิ่มโมดูลห้องสมุด

  5. ???

  6. กำไร


17

วิธีที่ง่ายที่สุดที่ฉันพบเพื่อรวมโครงการห้องสมุดภายนอกคือ (ตัวอย่างเช่นการรวมห้องสมุด Facebook ซึ่งเก็บไว้หนึ่งไดเรกทอรีในโฟลเดอร์อ้างอิง):

  1. ใน settings.gradle เพิ่ม

    include ':facebook'
    
    project(':facebook').projectDir = new File(settingsDir, '../dependencies/FacebookSDK')
  2. ในส่วน build.gradle การอ้างอิงเพิ่ม

    compile project ('facebook')

สิ่งที่ต้องทำทั้งหมดคือซิงโครไนซ์โครงการกับไฟล์ gradle


สวัสดี Vilen การตั้งค่าอะไรที่นี่
Rajnish Mishra

สวัสดี Rajnish จากเอกสาร: settingsDir ส่งคืนไดเรกทอรีการตั้งค่าของบิลด์ ไดเรกทอรีการตั้งค่าเป็นไดเรกทอรีที่มีไฟล์การตั้งค่า คืนค่า: ไดเรกทอรีการตั้งค่า ไม่ส่งคืนค่าว่าง
Vilen

จุดสองจุดก่อนหน้า / การพึ่งพามีความสำคัญมากกว่าที่จะได้รับการดูแลคำตอบของคุณช่วยฉันได้มาก .. ขอบคุณ
Rajnish Mishra

หมายเหตุ:สำหรับการประเมินสตริงใน gradle คุณต้องใช้เครื่องหมายคำพูดคู่ (")" บันทึกวัน "ให้ฉันเชื่อมโยงกับสิ่งนี้
Solata

15

วิธีง่ายๆในการเพิ่มไฟล์ JAR เป็นไลบรารีในโครงการ Android Studio ของคุณ:

a) คัดลอกไฟล์ * .jar ของคุณ

b) วางลงในไดเรกทอรีlibsภายใต้โครงการของคุณ:

ป้อนคำอธิบายภาพที่นี่

c) เพิ่มใน build.gradle:

dependencies {
    ...
    compile files('libs/ScanAPIAndroid.jar', 'libs/ScanAPIFactoryAndroid.jar', .., ..)
}

b) หากโครงการของคุณจากตัวอย่าง com.example.MYProject และไลบรารี com.example.ScanAPI มีเนมสเปซ com.example เดียวกัน Android Studio จะตรวจสอบการสร้างและสร้างการเปลี่ยนแปลงที่จำเป็นทั้งหมดในโครงการของคุณ หลังจากนั้นคุณสามารถตรวจสอบการตั้งค่าเหล่านี้ในเมนูไฟล์ -> โครงสร้างโครงการ

c) หากโครงการและไลบรารีของคุณมีเนมสเปซอื่นคุณต้องคลิกขวาที่ไลบรารีและเลือกตัวเลือก "เพิ่มเป็นห้องสมุด" และเลือกประเภทที่คุณต้องการ

จำไว้ว่าตัวเลือก "โครงสร้างโครงการ" ไม่ได้ทำการเปลี่ยนแปลงอัตโนมัติใน "build.gradle" ใน Android Studio รุ่นปัจจุบัน (0.2.3) บางทีคุณลักษณะนี้อาจมีให้ในรุ่นถัดไป


12

ตัวเลือกที่ 1: วางไฟล์ลงใน libs / ไดเรกทอรีของโครงการ

ไฟล์ build.gradle ที่เกี่ยวข้องจะอัปเดตโดยอัตโนมัติ

ตัวเลือก 2: แก้ไขไฟล์ build.gradle ด้วยตนเอง

เปิดไฟล์ build.gradle ของคุณและเพิ่มกฎการสร้างใหม่เพื่อปิดการอ้างอิง ตัวอย่างเช่นหากคุณต้องการเพิ่มบริการ Google Play ส่วนการอ้างอิงของโครงการของคุณจะมีลักษณะดังนี้:

dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile 'com.google.android.gms:play-services:6.5.+'
   }

ตัวเลือก 3: ใช้ส่วนต่อประสานผู้ใช้ของ Android Studio

ในแผงโครงการControl+ คลิกโมดูลที่คุณต้องการเพิ่มการพึ่งพาและเลือกเปิดการตั้งค่าโมดูล

ป้อนคำอธิบายภาพที่นี่

เลือกแท็บ Dependencies ตามด้วยปุ่ม + ที่มุมล่างซ้าย คุณสามารถเลือกจากรายการตัวเลือกต่อไปนี้:

  • การพึ่งพาห้องสมุด
  • การพึ่งพาไฟล์
  • โมดูลการพึ่งพา

จากนั้นคุณสามารถป้อนข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาที่คุณต้องการเพิ่มในโครงการของคุณ ตัวอย่างเช่นหากคุณเลือก Library Dependency Android Studio จะแสดงรายการไลบรารีเพื่อให้คุณเลือก

เมื่อคุณเพิ่มการพึ่งพาแล้วให้ตรวจสอบไฟล์ build.gradle ระดับโมดูลของคุณ ควรอัปเดตโดยอัตโนมัติเพื่อรวมการพึ่งพาใหม่

แหล่ง


10

นี่คือวิธีการทำงานสำหรับฉันใน Android Studio 1.5+

ในโครงการที่คุณต้องการเพิ่มโครงการห้องสมุดภายนอกให้ไปที่เมนูไฟล์ -> ใหม่ -> * นำเข้าโมดูลใหม่ ** นำทางไปยังโครงการห้องสมุดที่คุณต้องการเพิ่มโครงการของคุณเลือกเพื่อเพิ่มโมดูล 'ห้องสมุด' ใน โครงการของคุณ คุณจะได้รับsettings.gradleในโครงการของคุณ, ข้างแอพ, รวมไลบรารี, สิ่งนี้:

include ':app', ':library'

เพิ่มในbuild.gradle (โมดูล: แอพ)ในส่วนการพึ่งพา:

โครงการคอมไพล์ (': library')

สร้างโครงการอีกครั้งและนั่นคือมัน

* คุณสามารถเพิ่มไลบรารี (โมดูล) ได้มากเท่าที่คุณต้องการ ในกรณีนั้นใน settings.gradle คุณจะมี:

 include ':app', ':lib1', ':lib2', ...

และใน build.gradle คุณจะต้อง:

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

    // Some other dependencies...

    compile project(':lib1')
    compile project(':lib2')
    ...
}

9

หากคุณต้องการเข้าถึงทรัพยากรของโครงการห้องสมุด (เช่นเดียวกับ ABS) ให้แน่ใจว่าคุณเพิ่มโครงการ / โมดูลห้องสมุดเป็น "การพึ่งพาโมดูล" แทน "ห้องสมุด"


9

คุณสามารถทำได้อย่างง่ายดาย ไปที่เมนูไฟล์ -> ใหม่ -> นำเข้าโมดูล ... :

ป้อนคำอธิบายภาพที่นี่

ค้นหาไดเรกทอรีที่มีโมดูล คลิกเสร็จสิ้น:

ป้อนคำอธิบายภาพที่นี่

ไปที่โครงสร้างโครงการและเพิ่มการพึ่งพาโมดูล :

ป้อนคำอธิบายภาพที่นี่

หมายเหตุ: หากคุณได้รับข้อผิดพลาด SDK ให้อัปเดตอันนั้น


1
ในความคิดของฉันวิธีที่ง่ายที่สุดและเร็วที่สุดยังคงทำงานเหมือนวันนี้!
mrj

8
  1. กดF4เพื่อแสดงโครงสร้างโครงการคลิกไลบรารีหรือไลบรารีส่วนกลางและคลิก+เพื่อเพิ่มไฟล์ JAR
  2. คลิกโมดูลสิ่งที่คุณต้องการเพิ่ม jar เลือกแท็บDependenciesคลิก+และเพิ่ม Library

6

การแก้ไขการพึ่งพาไลบรารีผ่าน GUI ไม่แนะนำให้เลือกเนื่องจากจะไม่เขียนการเปลี่ยนแปลงเหล่านั้นไปยังไฟล์ build.gradle ของคุณ ดังนั้นโครงการของคุณจะไม่สร้างจากบรรทัดคำสั่ง เราควรแก้ไขไฟล์ build.gradle โดยตรงดังต่อไปนี้

ตัวอย่างเช่นมอบให้กับโครงสร้างต่อไปนี้:

โครงการของฉัน/

  • app /
  • ห้องสมุด /
    • lib1 /
    • lib2 /

เราสามารถระบุสามโครงการ Gradle จะอ้างอิงพวกเขาด้วยชื่อต่อไปนี้:

  1. : app
  2. : ห้องสมุด: lib1
  3. : ห้องสมุด: lib2

โครงการแอปมีแนวโน้มที่จะขึ้นอยู่กับไลบรารีและสิ่งนี้ทำได้โดยการประกาศการพึ่งพาต่อไปนี้:

dependencies {
    compile project(':libraries:lib1')
}

จริงๆ? แปลกพวกเขามี GUI ทั้งหมด แต่ก็ไม่แนะนำให้ทำ งั้นเหรอ
Alexander Kulyakhtin

เนื่องจากการแก้ไขผ่าน GUI จะไม่เขียนการเปลี่ยนแปลงเหล่านั้นไปยังไฟล์ build.gradle ของคุณ การแก้ไข GUI จะบันทึกการเปลี่ยนแปลงในข้อมูลโครงการของ IntelliJ เท่านั้น นี่เป็นข้อผิดพลาดในขณะนี้ซึ่งจะได้รับการแก้ไขในอนาคต คุณสามารถอ้างถึงคำตอบนี้ได้จากหัวหน้าทีม Google Android Studio Studio stackoverflow.com/questions/16678447/ …
Shakti Malik

5

ในการเพิ่มคำตอบ: หาก IDE ไม่แสดงข้อผิดพลาดใด ๆ แต่เมื่อคุณพยายามรวบรวมคุณจะได้รับสิ่งต่อไปนี้

No resource found that matches the given name 'Theme.Sherlock.Light'

อาจมีการรวบรวมโครงการห้องสมุดของคุณเป็นโครงการแอปพลิเคชัน หากต้องการเปลี่ยนแปลงสิ่งนี้ไปที่:

ไฟล์เมนู-> โครงสร้างโครงการ -> แง่มุม -> [ชื่อห้องสมุด] -> ทำเครื่องหมาย "โมดูลห้องสมุด"


5

วิธีแรกสิ่งนี้ใช้ได้กับ MacBook

ก่อนอื่นให้เลือกไฟล์ builder.gradle ของคุณตามหน้าจอที่กำหนด:

ป้อนคำอธิบายภาพที่นี่

เพิ่มการพึ่งพาเช่นเดียวกับบนหน้าจอที่เลือก:

ป้อนคำอธิบายภาพที่นี่

เลือกซิงค์โครงการ

หากคุณได้รับข้อผิดพลาดเช่น "Project with path ': ไม่พบลายเซ็นต์' ในโปรเจค ': แอพ' ', โปรดใช้วิธีที่สอง:

เลือกเมนูไฟล์ -> ใหม่ -> นำเข้าโมดูล ... :

ป้อนคำอธิบายภาพที่นี่

หลังจากคลิกที่นำเข้าโมดูล ,

ป้อนคำอธิบายภาพที่นี่

ให้เส้นทางของห้องสมุดเหมือนเส้นทาง MacBook ของฉัน:

ป้อนคำอธิบายภาพที่นี่

คลิกที่เสร็จสิ้น ตอนนี้ห้องสมุดของคุณจะถูกเพิ่ม


4

หลังจากนำเข้าโมดูล ABS (จากไฟล์> โครงสร้างโครงการ) และทำให้แน่ใจว่ามี Android 2.2 และ Support Library v4 เป็นการอ้างอิงฉันยังคงได้รับข้อผิดพลาดต่อไปนี้เมื่อคุณ @Alex

Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light.DarkActionBar'

ฉันเพิ่มโมดูลที่นำเข้าใหม่เป็นการพึ่งพาโมดูลแอปหลักของฉันและแก้ไขปัญหาได้แล้ว


ฉันพยายามทุกขั้นตอน inclusing เพิ่มโมดูลที่เป็นพึ่งพา Gradle: Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light'.แต่ฉันยังคงมี ดูเหมือนว่าโครงการหลักของฉันไม่เห็นทรัพยากรของโครงการห้องสมุด (ABS) อย่างไรก็ตาม IDE จะจดจำการอ้างอิงไปยังคลาสและทรัพยากร สกรีน
ช็อต

ฉันย้ายไปที่ IDEA 13 จาก 12 และมีข้อผิดพลาดนี้ด้วย เฉพาะการนำเข้าใหม่สำหรับการอ้างอิงทั้งหมดของฉันจะช่วยได้ ลบโมดูลทั้งหมดด้วยตนเองลบไฟล์ * .iml ที่เกี่ยวข้องและนำเข้า libs ของคุณอีกครั้ง
Dmitriy Tarasov

4

Android Studio 3.0

เพียงเพิ่มชื่อไลบรารีในบล็อกการพึ่งพาของไฟล์build.gradleของแอปของคุณ

dependencies {
    // ...
    implementation 'com.example:some-library:1.0.0'
}

โปรดทราบว่าคุณควรใช้implementationมากกว่าcompileนี้ นี่คือใหม่กับ Android Studio 3.0 ดูคำถาม & คำตอบนี้เพื่ออธิบายความแตกต่าง


มันเป็นการเปลี่ยนแปลงใน Gradle 4 ไม่ใช่ Android Studio 3 คุณสามารถใช้com.android.tools.build:gradle:2.3.3แทน 3.0.0 ใน Android Studio 3 ได้หากคุณต้องการใช้ "คอมไพล์" ต่อไป
chauduyphanvu

3

ในการแก้ไขปัญหานี้คุณเพียงแค่เพิ่มเส้นทางทรัพยากร abs ไปยังไฟล์สร้างโครงการของคุณเช่นเดียวกับด้านล่าง:

sourceSets {
    main {
        res.srcDirs = ['src/main/res','../../ActionBarSherlock/actionbarsherlock/res']
    }
}

ดังนั้นฉันรวบรวมอีกครั้งโดยไม่มีข้อผิดพลาด


3

หากคุณมี Android Studio .0.4.0 คุณสามารถสร้างโฟลเดอร์ใหม่ในเส้นทางการสร้างของคุณYourApp/librariesได้ คัดลอกไฟล์ JAR คลิกขวาบนแล้วคลิก "เพิ่มเป็นห้องสมุด" ตอนนี้คุณมีป๊อปอัป เพียงแค่เลือกไดเรกทอรีของคุณแล้วกดตกลงเท่านั้น


3

เพียงแค่นำเข้าโครงการห้องสมุด Android เป็นโมดูลและBuild.gradle

ใช้ปลั๊กอิน: 'com.android.library'

หลังจากนั้นทำตามขั้นตอนเหล่านี้:

  1. คลิกขวาที่โมดูลและเลือกเปิดการตั้งค่าโมดูล
  2. เลือกการพึ่งพาคลิกที่+เลือกการขึ้นต่อกันของห้องสมุดและเพิ่มโมดูลที่นำเข้าก่อนหน้านี้

3

https://www.dropbox.com/s/1e3eteu3h0pmkf7/Android%20studio%20_doc.doc?dl=0เป็นลิงก์ Dropbox ของวิธีเพิ่มไฟล์ JAR และไลบรารีโครงการใน Android Studio 1.0.1 เวอร์ชันล่าสุด

โปรดดูเอกสารประกอบพร้อมภาพหน้าจอ มันง่ายมากสำหรับผู้ใช้ใหม่


2

ฉันพบวิธีแก้ปัญหา มันง่ายมาก ทำตามคำแนะนำ froger_mcs

ตรวจสอบให้แน่ใจว่าคุณทำให้โฟลเดอร์ src เป็นโฟลเดอร์ซอร์สในโครงสร้างโครงการ -> โมดูล (แหล่งที่มา)

ป้อนคำอธิบายภาพที่นี่


2

โดยทั่วไปคุณสามารถรวมไฟล์ JAR ของคุณได้สามวิธี สุดท้ายคือรีโมตไลบรารีที่ใช้https://bintray.com/ jcenter online repository แต่ถ้าคุณทำอย่างใดอย่างหนึ่งในสองวิธีอื่น ๆ ไฟล์ JAR จะรวมอยู่ในโครงการของคุณ โปรดอ่านลิงค์นี้https://stackoverflow.com/a/35369267/5475941สำหรับข้อมูลเพิ่มเติม ในโพสต์นี้ฉันอธิบายวิธีนำเข้าไฟล์ JAR ของคุณใน Android studio และฉันอธิบายวิธีที่เป็นไปได้ทั้งหมด

โดยสรุปถ้ามันเป็นเช่นนี้ (ที่อยู่ในพื้นที่) พวกเขาจะถูกดาวน์โหลดและไฟล์ JAR เหล่านี้มีอยู่จริงในโครงการ:

ป้อนคำอธิบายรูปภาพที่นี่

แต่ถ้าเป็นที่อยู่อินเทอร์เน็ตเช่นนี้พวกเขาจะเป็นรีโมตไลบรารี (bintray.com jcenter part) และพวกมันจะถูกใช้จากระยะไกล:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันหวังว่ามันจะช่วย


2

เปิดไฟล์แอปโมดูล gradle และเพิ่มการพึ่งพาของคุณ หากคุณดาวน์โหลดไลบรารี่เพียงนำเข้าและสร้างเป็นไฟล์ไล่ระดับ

มิฉะนั้นเพิ่มที่เก็บในแอปโมดูล gradle ด้าน:

repositories {
        maven { url 'http://clinker.47deg.com/nexus/content/groups/public' }
}

ที่เก็บแรกจะดาวน์โหลดห้องสมุดให้คุณ

และรวบรวมไลบรารีที่ดาวน์โหลดมา:

 compile ('com.fortysevendeg.swipelistview:swipelistview:1.0-SNAPSHOT@aar') {
        transitive = true
    }

หากคุณกำลังสร้างห้องสมุดคุณเพียงแค่ต้องนำเข้าโครงการเป็นการนำเข้าโมดูลใหม่


2

ฉันมีสาเหตุที่แตกต่างกันของปัญหาดังนั้นสำหรับคน:

repositories {
    mavenCentral()
}

เปลี่ยน mavenCentral () เป็น jcenter () และเพิ่ม

allprojects {
    repositories {
        jcenter()
    }
}

1

ใน Android Studio ให้ไปที่โฟลเดอร์แอพแล้วเปิดไฟล์ build.gradle ที่นี่คุณจะเห็นการพึ่งพา {} ข้างในนั้นคุณสามารถเพิ่มโครงการห้องสมุดและประสาน ทันทีหลังจากซิงโครไนซ์ไลบรารีมันจะถูกเพิ่มลงในโครงการของคุณและคุณสามารถใช้ฟังก์ชั่นและคลาสของมันในโครงการของคุณ


1

สำหรับ Android Studio:

ป้อนคำอธิบายภาพที่นี่

คลิกที่Build.gradle (โมดูล: app)

และเพิ่มสำหรับ

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile files('libs/commons-io-2.4.jar')
}

และในไดเรกทอรี "แอป" ของคุณให้สร้างไดเรกทอรี "libs" เพิ่มไฟล์ yourfile.jar:

ป้อนคำอธิบายภาพที่นี่

สุดท้ายให้รวบรวมไฟล์ Gradle:

ป้อนคำอธิบายภาพที่นี่


0

ฉันพบปัญหาเดียวกันจากนั้นฉันก็ทำสิ่งต่อไปนี้

  1. ฉันนำเข้าโครงการห้องสมุดลงใน AndroidStudio IDE ของฉันเป็นโมดูลโดยใช้เมนูไฟล์ -> นำเข้าเมนูโมดูล

  2. จากนั้นฉันไปที่โมดูลหลักซึ่งฉันต้องการให้โครงการห้องสมุดเป็นโครงการที่ต้องพึ่งพา

  3. คลิกขวาที่โมดูลหลัก (ในกรณีของฉันชื่อมันคือแอพ ) -> การตั้งค่าโมดูลเปิด -> ไปที่แท็บการพึ่งพา -> คลิกที่ปุ่ม + (คุณจะได้รับทางด้านขวาของหน้าต่าง) -> คลิกที่การพึ่งพาโมดูล - > เลือกโครงการห้องสมุดของคุณจากรายการ

ใช้การเปลี่ยนแปลงและคลิกOKปุ่ม

มันใช้งานได้สำหรับฉัน ฉันหวังว่ามันจะช่วยคนอื่นด้วย



-1

แท้จริงแล้วเมื่อเวอร์ชั่นกำลังเปลี่ยนแปลงดังนั้นการเปลี่ยนอินเทอร์เฟซผู้ใช้และตัวเลือกที่มีอยู่ในเมนู หลังจากที่ได้อ่านมากที่สุดของคำตอบของคำถามเหล่านี้ผมต้องคาดเดาสิ่งที่จะทำงานให้Android 1.1.0

  1. ใช้เมาส์เลือกโครงการที่ระดับหลัก (นี่คือที่ที่จะแสดงชื่อแอพของคุณ)

  2. คลิกขวาและเลือกตัวเลือกเมนูใหม่, โฟลเดอร์สินทรัพย์โฟลเดอร์

  3. หลังจากสร้างโฟลเดอร์สินทรัพย์แล้วให้วางหรือคัดลอกไฟล์ใดก็ได้ที่คุณต้องการสำหรับไฟล์ JAR ของคุณ

  4. จากเมนูหลักของ Android ของสตูดิโอ (ด้านบนของหน้าจอ) เลือกไฟล์ -> โครงสร้างโครงการ

  5. จากนั้นเลือกชื่อโครงการของคุณและไปที่แท็บการพึ่งพา

  6. คลิกที่เครื่องหมายบวก ( +) ที่ด้านล่างซ้ายของกล่องโต้ตอบและเลือกการขึ้นต่อกันของไฟล์

  7. ในที่สุดก็เปิดโฟลเดอร์สินทรัพย์ที่สร้างขึ้นเมื่อเร็ว ๆ นี้เลือกไฟล์ JAR OKที่คุณคัดลอกแล้วคลิกนำมาใช้และ

ทำความสะอาดและสร้างโครงการของคุณใหม่


1
การทำสำเนาไหในสินทรัพย์ไม่ใช่ความคิดที่ดีมันจะเพิ่มขนาด apk โดยไม่จำเป็น
Rajnish Mishra

ขอบคุณสำหรับคำแนะนำ @RajnishMishra ฉันสงสัยว่า แต่คุณเสนออะไรแทน
monn3t
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.