ความแตกต่างระหว่าง android-support-v7-appcompat และ android-support-v4


147

ผมอยากจะทราบความแตกต่างระหว่างหุ่นยนต์สนับสนุน v4.jar และหุ่นยนต์สนับสนุน v7-appcompat.jar ถ้าผมต้องการที่จะเพิ่ม AppCompat แถบการทำงานในใบสมัครของฉันฉันจะต้องเพิ่มทั้งหุ่นยนต์สนับสนุน v7-appcompat.jarและหุ่นยนต์สนับสนุน v4.jarหรือเฉพาะหุ่นยนต์สนับสนุน v7-appcompat.jar

นอกจากนี้ยังไม่หุ่นยนต์สนับสนุน v13.jarได้ AppCompat?

คำตอบ:


170

UPDATE

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

เริ่มต้นด้วย Support Library รีลีส 26.0.0 (กรกฎาคม 2017) ระดับ API ขั้นต่ำที่สนับสนุนในไลบรารีการสนับสนุนส่วนใหญ่เพิ่มเป็น Android 4.0 (ระดับ API 14) สำหรับแพ็คเกจไลบรารีส่วนใหญ่


ด้านล่างนี้แตกต่างจากแพ็คเกจห้องสมุดสนับสนุน :

ห้องสมุดสนับสนุน v4

ไลบรารีนี้ออกแบบมาเพื่อใช้กับAndroid 1.6 (API ระดับ 4) Android 2.3 (API ระดับ 9) Android 4.0 (API ระดับ 14) และสูงกว่า ประกอบด้วยชุด API ที่ใหญ่ที่สุดเมื่อเทียบกับไลบรารีอื่น ๆ รวมถึงการสนับสนุนส่วนประกอบแอปพลิเคชันคุณลักษณะส่วนต่อประสานผู้ใช้การเข้าถึงการจัดการข้อมูลการเชื่อมต่อเครือข่ายและยูทิลิตี้การเขียนโปรแกรม

v7 ไลบรารี่

มีหลายไลบรารีที่ออกแบบมาเพื่อใช้กับAndroid 2.1 (API ระดับ 7) Android 2.3 (API ระดับ 9) Android 4.0 (API ระดับ 14) และสูงกว่า ไลบรารีเหล่านี้มีชุดคุณลักษณะเฉพาะและสามารถรวมอยู่ในแอปพลิเคชันของคุณโดยอิสระจากกัน

ไลบรารีแอป v7

ไลบรารีนี้เพิ่มการสนับสนุนสำหรับรูปแบบการออกแบบส่วนติดต่อผู้ใช้ Action Bar

หมายเหตุ: ไลบรารีนี้ขึ้นอยู่กับ v4 Support Library หากคุณกำลังใช้ Ant หรือ Eclipse ตรวจสอบให้แน่ใจว่าคุณรวม v4 Support Library เป็นส่วนหนึ่งของ classpath ของไลบรารีนี้

ใช่คุณต้องทั้งสองขวดถ้าคุณต้องการใช้ v7


อัปเดตสำหรับ android-support-v13.jar

ห้องสมุดสนับสนุน v13

อินเทอร์เฟซนี้เลิกใช้แล้วใน API ระดับ 27.1.0 ใช้Fragmentแทน Framework Fragment

ห้องสมุดสนับสนุน v13

ไลบรารีนี้ออกแบบมาเพื่อใช้กับ Android 3.2 (API ระดับ 13) และสูงกว่า มันเพิ่มการสนับสนุนสำหรับรูปแบบส่วนติดต่อผู้ใช้ Fragment ด้วยคลาส (FragmentCompat) และคลาสการสนับสนุนส่วนเพิ่มเติม

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


2
หากคุณกำลังพัฒนาแอพจาก min api 19 คุณต้องการสิ่งเหล่านี้หรือไม่?

2
v4 Support Libraries - ไลบรารีเหล่านี้ถูกออกแบบมาให้ใช้กับ Android 2.3 (API ระดับ 9)และสูงกว่า
Vadik

1
และv7 Support Libraries - มีหลายไลบรารีที่ออกแบบมาเพื่อใช้กับAndroid 2.3 (API ระดับ 9)และสูงกว่า
Vadik

@ user5366495 อาจเป็นไปได้ สิ่งที่ดีส่วนใหญ่มีไว้เพื่อใช้API21 and above และหากคุณต้องการใช้ในระดับต่ำกว่าคุณควรใช้ไลบรารีการสนับสนุนสำหรับสิ่งนั้น API19ดังนั้นคุณอาจยังคงจำเป็นต้องใช้สำหรับ
Mahdi-Malv

48

ห้องสมุดสนับสนุนคืออะไร

ไลบรารีสนับสนุนคือไลบรารีรหัส (ชุดของคลาส) ซึ่งทำให้คุณลักษณะที่เพิ่มเข้ามาใหม่เพื่อทำงานกับอุปกรณ์รุ่นเก่า
ยกตัวอย่างเช่นการออกแบบวัสดุที่ถูกนำมาใช้ใน API 21 (Android 5.0 - Lolipop) แต่ห้องสมุด v7 สนับสนุนทำให้มันใช้ได้สำหรับ API 7 (Android 2.1.x -Eclair) และสูงกว่า

ห้องสมุดสนับสนุนที่แตกต่างกันคืออะไร

ห้องสมุดสนับสนุนหลักบางแห่ง ได้แก่

  • ห้องสมุดสนับสนุน V4

  • ห้องสมุดสนับสนุน V7

  • V8 Support library

  • v13 ห้องสมุดสนับสนุน

7 หมายถึงอะไรใน v7 Support Library?

หมายความว่าไลบรารีนี้มีคุณสมบัติที่ออกแบบมาเพื่อใช้กับ API ระดับ 7 ขึ้นไป เช่นเดียวกันกับ V4 (มีคุณลักษณะที่มีไว้สำหรับ API 4 และสูงกว่า) และอื่น ๆ

ข้อแตกต่างระหว่าง v7 Support library และ v7 appcompat library?

ไม่กี่คนที่รวมถึงฉันสับสนกับคำสองคำนี้ ที่จริงแล้ว v7 appcompat library เป็นส่วนหนึ่งของ v7 Support library ไลบรารีสนับสนุน v7 ได้รับการพัฒนาเพื่อสนับสนุนการออกแบบวัสดุและรูปแบบการออกแบบ ActionBar สำหรับ API 7 และสูงกว่า
V7 สามารถแบ่งออกเป็นประเภทย่อยมากขึ้น

  • ไลบรารีแอป v7

  • ห้องสมุด v7 cardView

  • v7 recyclerView library

  • v7 pallete library ฯลฯ

ไลบรารี appompat v7 มีการติดตามคลาสคีย์ ActionBar, ActionBarActivity, ShareActionProvider

ดังนั้นการเพิ่ม

com.android.support:appcompat-v7:21.0.+

การพึ่งพาในไฟล์ gradle ของคุณนำเข้าชั้นเรียนดังกล่าวข้างต้น

โบนัส

ห้องสมุดสนับสนุนอื่น ๆ

ไลบรารีการสนับสนุน Multidex (สำหรับการสร้างแอปที่มีมากกว่า 65 วิธี)
v17 ไลบรารีการสนับสนุน Leanback (ไลบรารีการสนับสนุนซึ่งมีวิดเจ็ตที่สำคัญสำหรับ Android TV)

ลิงค์ที่เกี่ยวข้อง


6
นี่ควรเป็นคำตอบที่ยอมรับได้อธิบายทุกอย่างด้วยคำง่าย ๆ
gegobyte

44

ต้องมีไลบรารีการสนับสนุนเฉพาะหากเวอร์ชัน sdk ขั้นต่ำของคุณน้อยกว่า API ระดับ 11 ไม่เช่นนั้นคุณไม่จำเป็นต้องเพิ่มไลบรารีการสนับสนุนในโครงการของคุณสำหรับ Api ระดับ 11 หรือสูงกว่า

android-support-v4.jar: รองรับandroid.appคลาสเพื่อช่วยในการพัฒนาแอพพลิเคชั่นสำหรับ android API ระดับ 4 ขึ้นไป เพื่อที่คุณจะสามารถทำให้แอปพลิเคชัน backword ของคุณทำงานร่วมกันได้

android-support-v7.jarมันเพิ่งถูกเพิ่มเข้ามาในการอัพเดทไลบรารีสนับสนุนล่าสุด ActionBar เพื่ออนุญาตการใช้งานรูปแบบการออกแบบส่วนต่อประสานผู้ใช้ของแถบแอ็คชันกลับไปเป็น Android 2.1 (API ระดับ 7) และสูงกว่า การใช้คลาสนี้ต้องการให้คุณใช้งานกิจกรรมของคุณโดยขยายActionBarActivityคลาสใหม่

หากฉันต้องการเพิ่มแอ็คชันบาร์ appcompat ในแอปพลิเคชันของฉันฉันต้องเพิ่มทั้ง android-support-v7-appcompat.jar และ android-support-v4.jar หรือเฉพาะ android-support-v7-appcompat.jar

ใช่คุณต้องเพิ่มการอ้างอิงของทั้งสองไลบรารีหากคุณต้องการใช้

android-support-v13.jar มี appcompat หรือไม่

ไม่มันมีFragmentCompatเพื่อที่หากฟีเจอร์ Fragment บางส่วนเพิ่มเข้ามาหลังจากรุ่น 13 กว่าคุณสามารถทำให้ backword เข้ากันได้กับ Api ระดับ 11 ดังนั้นแอปพลิเคชันที่กำหนดเป้าหมาย API 11 หรือสูงกว่าสามารถใช้คุณลักษณะที่เพิ่มเข้ามาในเวอร์ชันที่ใหม่กว่า


9
DrawerLayout/ NavigationDrawerมีอยู่ในปัจจุบันเท่านั้นในห้องสมุดสนับสนุน
ราน

3
มีส่วนประกอบอื่น ๆ ที่คุณอาจใช้ในแอพ Android ของคุณซึ่งใช้ไลบรารีการสนับสนุนซึ่งไม่รวมอยู่ใน API ที่เป็นค่าเริ่มต้นมากกว่า 11 เช่น com.android.support:multidex:1.0.0 และ com.android การสนับสนุนการออกแบบ: 23.1.0 ตรวจสอบข้อมูลนี้ได้ที่: developer.android.com/tools/support-library/features.html
aselims

อย่างที่ google บอกไว้ในdeveloper.android.com/topic/lไลบรารี/support-library/…ไม่มีความแตกต่างระหว่างการสนับสนุน v4 และการสนับสนุน v7 ทั้งสองสำหรับ api 9 ขึ้นไป จริงหรือ
มาห์ดี

เคนจิใช่มันเป็นเรื่องจริง Google shift min สนับสนุนจาก 4 ถึง 9 และจาก 7 เป็น 9 และห้องสมุดทั้งสองนี้จะทำซ้ำกัน
Yaroslav Havrylovych

หากคุณกำลังพัฒนาแอพจาก min api 19 คุณต้องการสิ่งเหล่านี้หรือไม่?

10

อันดับแรกเราต้องเข้าใจห้องสมุดสนับสนุน Androidคืออะไร

ไลบรารีการสนับสนุน Android นั้นเปิดตัวครั้งแรกในปี 2011 คุณสามารถพูดได้ว่าในฐานะห้องสมุดความเข้ากันได้ของ Android ห้องสมุดสนับสนุน Android ให้ API ที่ใหม่กว่าสำหรับรุ่นเก่า แต่เรื่องราวไม่เพียงพอ

สิ่งนี้อาจสร้างความสับสนเล็กน้อยว่าไลบรารีการสนับสนุนที่มีหมายเลขรุ่นที่สูงกว่านั้นรวมถึงคุณลักษณะจากไลบรารีก่อนหน้า (คุณอาจคิดว่า v7-appcompat ปรับปรุงและรวมคุณลักษณะทั้งหมดจาก v4) ในกรณีส่วนใหญ่นี้ไม่ถูกต้อง แต่ห้องสมุดเองมีหมายเลขการแก้ไข ตัวอย่างเช่น“ AppCompat v21” จริง ๆ แล้วอ้างถึงการสนับสนุนไลบรารี่ v7-appcompat, รุ่นที่ 21

Android Support Library ไม่ใช่ไลบรารีเดียว แต่สามารถแบ่งได้เป็นสองกลุ่ม: ความเข้ากันได้และไลบรารีส่วนประกอบ

ไลบรารีความเข้ากันได้ 1 จะมุ่งเน้นไปที่ฟีเจอร์การแบ็คพอร์ตจากการปล่อยเฟรมเวิร์กที่ใหม่กว่าเพื่อให้อุปกรณ์ที่ใช้รีลีสก่อนหน้านี้สามารถใช้ประโยชน์จาก API ที่ใหม่กว่า ไลบรารีความเข้ากันได้ที่สำคัญคือ v4 และ v7-appcompat

ไลบรารี่ v4 : มันมีคุณสมบัติมากมายและตามชื่อของมันรองรับกลับไปที่ API 4 นอกจากนี้เพื่อสนับสนุนการใช้งานสำหรับคลาสที่สำคัญเช่น Fragment และ Loader (ซึ่งทั้งคู่นำมาใช้ในเฟรมเวิร์กใน API 11) คุณจะต้อง ค้นหาคลาสที่ใช้กันอย่างแพร่หลายหลายอย่างที่ไม่ปรากฏในกรอบเลยเช่น ViewPager และ DrawerLayout

v7-appcompat : ไลบรารี v7-appcompat ให้การสนับสนุนการใช้งานสำหรับ ActionBar (แนะนำใน API 11) และ Toolbar (แนะนำใน API 21) เพื่อเผยแพร่กลับไปที่ API 7 มันต้องใช้ไลบรารี v4 แต่ไม่รวมถึง ดังนั้นคุณสมบัติใด ๆ ที่ขึ้นอยู่กับ v7-appcompat ก็ขึ้นอยู่กับ v4 ด้วย

ไลบรารีแบบ 2 องค์ประกอบไลบรารีการสนับสนุน Android ยังมีไลบรารีคอมโพเนนต์แบบแยกส่วนขนาดเล็กกว่าซึ่งช่วยให้นักพัฒนาสามารถเพิ่มคุณลักษณะที่ไม่ได้เป็นส่วนหนึ่งของกรอบมาตรฐาน ไลบรารีที่มีในตัวเองเหล่านี้สามารถเพิ่มหรือลบออกจากโครงการได้อย่างง่ายดายโดยไม่ต้องกังวลกับการพึ่งพา มีหลายองค์ประกอบไลบรารีที่มีค่าที่ควรพิจารณา:

v7-recyclerview : นำเสนอส่วนประกอบ RecyclerView ซึ่งแสดงและสร้างภาพเคลื่อนไหวของข้อมูลจำนวนมากได้อย่างมีประสิทธิภาพและออกแบบมาเพื่อแทนที่ ListView

v7-cardview : จัดเตรียมส่วนประกอบ CardView ซึ่งเปิดใช้งานรูปแบบการออกแบบ UI ของการ์ด

v7-gridlayout : จัดเตรียมคลาส GridLayout ซึ่งช่วยให้การจัดระเบียบองค์ประกอบ UI เป็นกริดสี่เหลี่ยม ฯลฯ ..

ห้องสมุดอื่น ๆ ห้องสมุดสนับสนุน Android ยังมีห้องสมุดอื่น ๆ อีกไม่กี่แห่งที่ใช้งานน้อยกว่า แต่ก็คุ้มค่าที่จะกล่าวถึง:

v8:ให้การสนับสนุน RenderScript (แนะนำใน API 11) กลับไปที่ API 8

v13 : จัดเตรียมการรองรับความเข้ากันได้เพิ่มเติมสำหรับรูปแบบ Fragment UI และรวม v4 librar เข้าด้วยกัน

v17 : ให้การสนับสนุนสำหรับการสร้าง UIs ทีวี

ฉันควรใช้ห้องสมุดสนับสนุน Android เมื่อใด

คุณควรใช้หนึ่งในไลบรารีการสนับสนุนเมื่อคุณต้องการคุณสมบัติเฟรมเวิร์กเฉพาะที่ใหม่กว่า minSdkVersion ของแอพของคุณหรือที่ไม่สามารถใช้ได้ในเฟรมเวิร์กมาตรฐาน

และฉันอ้างถึงการกวดวิชานี้


5

คำตอบนี้เกี่ยวข้องกับไคลเอนต์ของไลบรารีการสนับสนุนซึ่งรุ่นของพวกเขาคือ> = 26.0.0:

ข้อควรระวัง : เริ่มต้นด้วย Support Library รีลีส 26.0.0 (กรกฎาคม 2017) ระดับ API ขั้นต่ำที่สนับสนุนในไลบรารีการสนับสนุนส่วนใหญ่เพิ่มเป็นAndroid 4.0 (ระดับ API 14)สำหรับแพ็คเกจไลบรารีส่วนใหญ่

ยกตัวอย่างเช่นการสนับสนุน v4 และสนับสนุน V7 แพคเกจทั้งการสนับสนุน API ระดับต่ำสุดของ 14 สำหรับรุ่นของห้องสมุดการสนับสนุนจาก 26.0.0 และสูงกว่า

สำหรับข้อมูลเพิ่มเติมโปรดดูที่การสนับสนุนห้องสมุด - การสนับสนุนเวอร์ชันและแพคเกจชื่อ

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