Android Studio: วิธีแนบซอร์ส Android SDK


112

ฉันจะแนบซอร์ส Android SDK กับ Android Studio ได้อย่างไร

เมื่อฉันเปิดคลาส Android รายการหนึ่งหน้าต่าง "ไม่พบแหล่งที่มา" พร้อมตัวเลือก "แนบแหล่งที่มา" จะไม่ปรากฏขึ้น

วิธีอื่นในการทำเช่นนี้คืออะไร?

คำตอบ:


67

เปิดตัวจัดการ sdk จากเมนูแถบเครื่องมือและดาวน์โหลด "Sources for Android SDK" สำหรับระดับ API ที่กำหนดไว้ในไฟล์ build.gradle ของคุณเช่น

compileSdkVersion 19 // compile with API level 19

ไม่มีอะไรต้องทำอีก

หมายเหตุ: Sources สำหรับ SDK มีให้เฉพาะ API ระดับ 14 ขึ้นไป

อัปเดต (อิงตามรุ่นที่เสถียร 3.2.1):

Google เปลี่ยนวิธีการจัดส่งแหล่งที่มาดังนั้นมาดูกันว่ามีอะไรเปลี่ยนแปลงบ้าง

ไปที่ตำแหน่งต่อไปนี้

Preferences -> Apperance & Behaviour -> System Settings -> Android SDK

ค่อนข้างขี้เกียจที่จะนำทางประเภทSDKในการค้นหาและสตูดิโอจะช่วยให้คุณไปยังสถานที่ที่เหมาะสม

ใส่คำอธิบายภาพที่นี่

คุณสามารถอ่านคำอธิบายส่วนใหญ่บอกว่าต้องทำอย่างไร หลังจากคลิกที่ "แสดงรายละเอียดแพ็กเกจ" คุณจะเห็นว่ามีการติดตั้งแหล่งที่มาหรือไม่ (ดังแสดงในภาพด้านล่าง) หากยังไม่ได้ติดตั้งให้ทำการติดตั้งและคุณทำได้ดี

ใส่คำอธิบายภาพที่นี่


1
@takumar นี่เป็นเพราะแหล่งที่มาของ SDK ไม่พร้อมใช้งานสำหรับ Android API 20 ในขณะนี้ฉันแน่ใจว่าเมื่อ Android "L" ออกมาจากหน้าตัวอย่างแหล่งที่มาจะพร้อมใช้งานในตัวจัดการ SDK
Dick Lucas

37
หลังจากดาวน์โหลดแหล่งที่มาฉันต้องรีสตาร์ท Android Studio เพื่อให้ใช้งานได้
Sathesh

3
หากคุณกำลังแก้ไขข้อบกพร่องบนเวอร์ชันเก่ากว่า compileSdkVersion ซอร์สโค้ดจะไม่ตรงกัน
เดวิด

ฉันจะเพิ่มความคิดเห็นของ Sathesh ในการแก้ปัญหา ดูเหมือนหลายคนต้องเริ่มต้นใหม่ฉันก็เช่นกัน
Ferran Maylinch

คุณต้องทำเครื่องหมายในช่อง "แสดงรายละเอียดแพ็กเกจ" เพื่อค้นหารายการ "Sources for Android ... "
Flimm

247

การรายงานใน Android Studio 3.2.1: แก้ไขปัญหาโดยการรีเซ็ต SDK

ค่ากำหนด -> ลักษณะที่ปรากฏและพฤติกรรม -> การตั้งค่าระบบ -> Android SDK

คลิกที่แก้ไขทางด้านขวาของตำแหน่ง Android SDK ถัดไปถัดไปเสร็จสิ้นเพื่อให้ตัวช่วยสร้างและ voila เสร็จสมบูรณ์!


3
@ ไฟล์ 0xF / การตั้งค่าสำหรับ Windows (Linux?) ค่ากำหนดสำหรับ Mac เพิ่มลักษณะที่ปรากฏและพฤติกรรมขอบคุณมาก พลาดอย่างสิ้นเชิง
Alexander Mayatsky

1
@AlexanderMayatsky ไฟล์ / การตั้งค่าอยู่บน Linux
0xF

2
บน Linux:File -> Settings -> Appearance&Behavior -> System Settings -> Android SDK
lenooh

2
พบปัญหาเดียวกันกับที่ไม่มีการแสดงเอกสาร สิ่งนี้แก้ไขได้สำหรับเวอร์ชันเสถียรล่าสุดซึ่งก็คือ 3.1.4
Challenge ยอมรับเมื่อ

สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันดาวน์โหลดแหล่งที่มาสำหรับ compileSdkVersion 28 และ build.gradle ของฉันก็มี targetSdkVersion 28 เช่นกันและเมื่อฉันเรียกใช้แอปของฉันในดีบักเกอร์ฉันจะเห็นสิ่งต่างๆเช่นart::ArtMethod::InvokeและStartBackgroundThread(นี่คือเธรดตัวช่วย JNI ในแอปของฉัน) แต่ การคลิกอะไรก็ได้ในส่วน Android ของสแต็กจะไม่แสดงไฟล์ต้นฉบับที่เกี่ยวข้อง ฉันขาดอะไรไป?
kbro

32

ฉันไม่พบตัวเลือก gui ข้างต้นใน v8.11 บน osx แต่grep-fuบอกฉัน:

config ถูกเก็บไว้ใน~ / Library / Preferences / AndroidStudioBeta / options / jdk.table.xml

หลังจากแก้ไขไฟล์นี้ (โดย Studio หยุดทำงาน) และการรีสตาร์ทการแมปซอร์สทำงานได้ดีสำหรับฉัน

diff --git a/options/jdk.table.xml b/options/jdk.table.xml
index 0112b91..33828b8 100644
--- a/options/jdk.table.xml
+++ b/options/jdk.table.xml
@@ -76,7 +76,7 @@
         </javadocPath>
         <sourcePath>
           <root type="composite">
-            <root type="simple" url="file:///Applications/Android Studio.app/sdk/sources/android-19" />
+            <root type="simple" url="file:///Users/tehdawgz/dev/android-sdk/sources/android-19" />
           </root>
         </sourcePath>
       </roots>

AndroidStudio 2.1.2 ที่นี่บน Mac OS สิ่งต่อไปนี้ใช้ได้ผลสำหรับฉัน: <root type="simple" url="file://$USER_HOME$/Library/Android/sdk/sources/android-23" />
G.Steigert

1
ทำงานให้ฉัน Ubuntu 14.04 / Android Studio 2.2 ฉันใช้ 'locate jdk.table.xml' ซึ่งในกรณีของฉันอยู่ที่ ~ / .AndroidStudio2.2 / config / options / jdk.table.xml ที่น่าสนใจคือในบางจุดในกระบวนการนี้มีบางอย่างแทนที่เส้นทางสัมบูรณ์ของฉันด้วย "file: // $ USER_HOME $ ... " ?? ไม่ว่าในกรณีใดสิ่งต่างๆเริ่มทำงานหลังจากที่ฉันแก้ไขไฟล์แล้ว
สตีเวนสมิ ธ

16

สำหรับฉันเมื่อวันที่ 2016/08/29 ที่ใช้ Android Studio 2.1.3:

ฉันได้ดาวน์โหลดและรวบรวมกับ api 24 ก่อนที่แหล่งข้อมูลจะออก ฉันต้องการชี้ไปที่แหล่งที่มาตอนนี้ว่าพวกเขาได้รับการปล่อยตัวแล้ว การรีสตาร์ท Android Studio หลังจากดาวน์โหลดแหล่งที่มาในตัวจัดการ SDK ใช้งานไม่ได้

ฉันต้องทำเหมือนกำลังจะแก้ไขตำแหน่ง SDK ในตัวจัดการ SDK เมื่อฉันทำเช่นนั้นฉันสามารถคลิก 'ถัดไป' ผ่านกล่องโต้ตอบและจัดทำดัชนีข้อมูล sdk ใหม่โดยอัตโนมัติ

ปุ่มสำหรับแก้ไขตำแหน่ง SDK ที่จะคลิกถัดไป


7

โซลูชันของ gdawg ใช้งานได้สำหรับฉันเช่นกันใน Windows 10 และ Android Studio 2.0 ด้วยการแก้ไขเล็กน้อยที่ไฟล์ jdk.table.xml อยู่ที่

C: \ Users \ {USER_NAME} \. AndroidStudio2.0 \ config \ options \ jdk.table.xml


5

ไม่แน่ใจว่าทำไมคำตอบที่ยอมรับจึงใช้ได้กับ API ระดับ 19 เท่านั้นฉันสามารถแนบแหล่งที่มาของ SDK สำหรับ API ระดับ 15 ได้โดยระบุเส้นทางต้นทางสำหรับ SDK อย่างชัดเจน นี่คือสิ่งที่ฉันทำ:

  1. ตรวจสอบให้แน่ใจว่าฉันได้ดาวน์โหลดแหล่งที่มาของ SDK ที่ต้องการและตั้งค่า build.gradle ด้วยระดับ API ที่ต้องการ
  2. ในหน้าต่างโครงการทางด้านซ้ายให้เลือกดรอปดาวน์ไลบรารีภายนอก
  3. คลิกขวาที่รายการเมนูแล้วเลือกเปิดการตั้งค่าไลบรารี
  4. คลิกแท็บ Sourcepath และใช้ไอคอน + ที่ด้านล่างซ้ายเพื่อเชื่อมโยงไปยังแหล่ง SDK ที่ต้องการ (ควรอยู่ในบางสิ่ง / sdk / แหล่งที่มา)

6
> คลิกขวาที่รายการเมนูแล้วเลือกเปิดการตั้งค่าไลบรารี - คุณหาสิ่งนั้นได้ที่ไหน?
kiruwka

1
ดูเหมือนว่ารายการเมนูนี้จะไม่มีแล้ว มีหลายวิธีในการดำเนินการนี้ใน InteliJ ปกติ
David

3

ใน android studio 0.8.6 (Beta) (OSX 10.9.4) ดูเหมือนว่าคุณจะสามารถดูซอร์สโค้ดของ Android ได้โดยตรงโดยไม่ต้องแนบ Sources ด้วยตนเอง

ข้อกำหนดเบื้องต้นคือคุณควรดาวน์โหลด "Sources for Android SDK" ใน "SDK Manager" และรีสตาร์ท "Android Studio"


1

เพียงทำตามขั้นตอนเหล่านี้: การตั้งค่า -> Android SDK -> เปิดตัวจัดการ SDK แบบสแตนด์อโลน -> ดาวน์โหลดแหล่งที่มาของ SDK ที่คุณต้องการ (ในทุกเวอร์ชันของSources for Android SDKแอนดรอยด์) -> รีสตาร์ท Android Studio ของคุณ หากข้างต้นไม่ช่วยตรวจสอบให้แน่ใจว่าคุณได้ดาวน์โหลดแหล่งที่มาของ SDK ที่จำเป็นแล้วและรีเซ็ตAndroid SDK Locationเพื่อรีเฟรช ฉันหวังว่ามันจะช่วยได้


0

ฉันไม่รู้ว่าเมนูขั้นตอนที่ 3 ของคำตอบของ sfridman หมายถึงอะไร อีกวิธีหนึ่งที่ฉันจัดการเพื่อไปยังแหล่งที่มาที่ฉันสนใจคือหลังจากที่ Android Studio ได้นำ. class ที่ฉันต้องการเจาะลึกเข้าไป:

Breadcrumbs เป็นไฟล์. class

จากนั้นฉันสามารถคลิกขวาที่เบรดครัมบ์นั้นแล้วเลือก "ข้ามไปที่แหล่งที่มา":

ใส่คำอธิบายภาพที่นี่

ดูเหมือนว่าจะพบโดยอัตโนมัติจากการทำเช่นนั้นอาจเป็นเพราะฉันได้ติดตั้งซอร์สผ่านตัวจัดการ Android SDK ตามที่อธิบายไว้ที่อื่น


0

ขั้นแรกตรวจสอบว่าคุณมีโหลดซอร์สแล้ว

แล้วรีเซ็ต Android SDK settingsสถานที่

ฉันแก้ไขปัญหาของฉันด้วยวิธีการข้างต้น


0

สิ่งเดียวที่เหมาะกับฉันคือ:

  • เปิดตัวจัดการ SDK Android (เครื่องมือ -> Android -> ผู้จัดการ SDK -> เปิดตัวจัดการ SDK แบบสแตนด์อโลน)
  • ถอนการติดตั้งแพลตฟอร์ม SDKและแหล่งที่มาทั้งหมดสำหรับ Android SDK (จากทุกระดับ API)
  • รีสตาร์ท Android Studio

เมื่อรีสตาร์ท Android Studio ตัวช่วยสร้างจะปรากฏขึ้นเนื่องจากไม่ได้ติดตั้ง SDK: ติดตั้งแพลตฟอร์ม SDK และแหล่งที่มาสำหรับระดับ API ที่ใช้ในปัจจุบัน


0

ในAndroid Studio 2.3.3บน Windows 7 ฉันมีปัญหาว่าไฟล์ต้นทางที่ดาวน์โหลดมาแล้วสำหรับ API-Level 26 ในโฟลเดอร์SDK\sources\android-26ไม่รู้จัก การใช้"File | Invalidate Caches / Restart"ช่วยแก้ปัญหาให้ฉันได้


0

สำหรับฉันการดาวน์โหลดและรีเฟรชไม่ได้ช่วยอะไร ฉันพยายามเลือกแหล่งที่มา แต่ยังคงเป็นปัญหาเดิม ดังนั้นฉันจึงทำการ Invalidate Cache / Restart ตอนนี้มันทำงาน

ฉันพยายามแก้ไขไฟล์ jdk.table.xml แต่ไม่มีรายการสำหรับ android-26 มันอยู่ได้จนถึง android-25 เท่านั้นดังนั้นฉันจึงตัดสินใจที่จะไม่แก้ไขไฟล์นั้น


0

สำหรับ 09/08/2019 มีแหล่งข้อมูลดังกล่าว

sources;android-15
    Description:        Sources for Android 15
    Version:            2

sources;android-16
    Description:        Sources for Android 16
    Version:            2

sources;android-17
    Description:        Sources for Android 17
    Version:            1

sources;android-18
    Description:        Sources for Android 18
    Version:            1

sources;android-19
    Description:        Sources for Android 19
    Version:            2

sources;android-20
    Description:        Sources for Android 20
    Version:            1

sources;android-21
    Description:        Sources for Android 21
    Version:            1

sources;android-22
    Description:        Sources for Android 22
    Version:            1

sources;android-23
    Description:        Sources for Android 23
    Version:            1

sources;android-24
    Description:        Sources for Android 24
    Version:            1

sources;android-25
    Description:        Sources for Android 25
    Version:            1

sources;android-26
    Description:        Sources for Android 26
    Version:            1

sources;android-27
    Description:        Sources for Android 27
    Version:            1

sources;android-28
    Description:        Sources for Android 28
    Version:            1

คุณสามารถแสดงรายการโดย ./pathtoandroidsdk/tools/bin/sdkmanager --list --verbose --no_https

ตัวอย่างเช่นติดตั้งโดย ./pathtoandroidsdk/tools/bin/sdkmanager "sources;android-28"

ไม่จำเป็นต้องดาวน์โหลดใน Android Studio

ตั้งค่าคำแนะนำใน Android Studio

ในแอปbuild.gradleตั้งค่า sdk เวอร์ชันที่ถูกต้องซึ่งจะรวมแหล่งที่มาที่ต้องการ

android {
    compileSdkVersion 28
    ...

หากต้องการใช้การเปลี่ยนแปลง - รีสตาร์ท IDE


0

ฉันเพิ่งได้พบกับปัญหาที่คล้ายกันเมื่อฉันต้องดาวน์โหลดแพลตฟอร์มหุ่นยนต์ 28 ./pathtoandroidsdk/tools/bin/sdkmanager "sources;android-28"ผ่านบรรทัดคำสั่งผมเห็นคำตอบที่จะเรียกใช้คำสั่ง

แต่ในความเป็นจริงจากdeveloper.android.comก็แสดงให้เห็นเป็นตัวอย่างดังนั้นผมคิดว่ามันควรจะเป็นsdkmanager "platform-tools" "platforms;android-28"./pathToAndroidSdk/tools/bin/sdkmanager "platforms;android-28"


0

การแบ่งปันเนื่องจากฉันใช้เวลาสักพักกว่าจะรู้: ในขณะนี้ (สิงหาคม 2020) API ระดับ 30 ไม่มีแหล่งที่มา (ไม่มีตัวเลือกดังกล่าวในตัวจัดการ SDK) ฉันเปลี่ยนแอปพลิเคชันเป็นเป้าหมาย API ระดับ 29 (แทนที่จะเป็น 30) และตรวจสอบให้แน่ใจว่าได้ดาวน์โหลดซอร์สสำหรับเวอร์ชัน 29 แล้วและใช้งานได้

ตรวจสอบให้แน่ใจว่า "แสดงรายละเอียดแพ็กเกจ" เปิดอยู่เพื่อดูว่ามีแหล่งที่มาสำหรับเวอร์ชัน SDK ที่คุณกำหนดเป้าหมายหรือไม่

นอกจากนี้ยังสามารถใช้ "Tools -> SDK Manager" แทน "File -> Settings -> etc ... " ได้

ผู้จัดการ SDK

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