เหตุใด Eclipse จึงเพิ่มการสนับสนุนไลบรารี appcompat v7 โดยอัตโนมัติทุกครั้งที่ฉันสร้างโครงการใหม่


217

เหตุใด Eclipse จึงเพิ่มappcompat v7การสนับสนุนห้องสมุดโดยอัตโนมัติทุกครั้งที่ฉันสร้างโครงการใหม่

ฉันกำลังสร้างโครงการง่ายๆที่MainActivityควรขยายActivityแต่ก็ไม่เป็นเช่นนั้น Eclipse เพิ่มการสนับสนุนแถบแอ็คชันโดยอัตโนมัติ

ฉันจะสร้างโครงการอย่างง่ายโดยไม่มีappcompatห้องสมุดได้อย่างไร FYI ฉันได้ดาวน์โหลด ADT เวอร์ชันล่าสุดพร้อมทุกอย่างที่อัปเดตล่าสุด ฉันใช้ Window 7 x64

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

คำตอบ:


105

ตามที่ระบุไว้ในภาพรวม Library สนับสนุนของ Android ถือว่าเป็นแนวปฏิบัติที่ดีในการรวมไลบรารีการสนับสนุนตามค่าเริ่มต้นเนื่องจากอุปกรณ์มีความหลากหลายและการกระจายตัวที่มีอยู่ระหว่าง Android รุ่นต่าง ๆ (และจาก API ที่ระบุ)

นี่คือเหตุผลที่เครื่องมือเท็มเพลตรหัส Android รวมอยู่ใน Eclipse ผ่านการAndroid Development Tools (ADT)รวมเข้าด้วยกันโดยค่าเริ่มต้น

ฉันสังเกตว่าคุณกำหนดเป้าหมายAPI 15ในตัวอย่างของคุณ แต่ SDK ที่จำเป็นสำหรับ miminum สำหรับแพ็คเกจของคุณคือAPI 10ซึ่งไลบรารีความเข้ากันได้สามารถให้ API ที่เข้ากันได้แบบย้อนหลังจำนวนมหาศาล ตัวอย่างเช่นความสามารถในการใช้งานFragment APIซึ่งปรากฏบนAPI 11 (Android 3.0 Honeycomb)บนอุปกรณ์ที่ใช้ระบบรุ่นเก่ากว่านี้

มีการบันทึกไว้ว่าคุณสามารถปิดการใช้งานการรวมอัตโนมัติของไลบรารีการสนับสนุนโดยค่าเริ่มต้น


54
นั่นก็คือ BS ฉันใช้ eclipse ที่ระดับ API 10 ในช่วง 2 เดือนที่ผ่านมาและไม่เคยนำเข้าไลบรารีความเข้ากันได้หรือโครงร่างชิ้นส่วนจนกว่าชุดคิทแคท api ที่ผิดเพี้ยนนี้จะออกมา ดูเหมือนว่า ณ จุดนี้วิธีที่ง่ายที่สุดในการหยุดมันไม่ได้เป็นการสร้างกิจกรรมโดยอัตโนมัติ ดังนั้นคุณจะต้องยกเลิกการเลือก "สร้างกิจกรรม" และสร้างของคุณเองเมื่อสร้างโครงการแล้ว
user3223214

2
ใช่นั่นคือประเด็นห้องสมุดจะรวมอยู่เสมอเพราะเหตุผลข้างต้น
Halim Qarroum

1
ห้องสมุดสนับสนุนจะให้ความเข้ากันได้แบบย้อนหลังสำหรับส่วนประกอบต่าง ๆ ของ Android SDK ไม่เพียง แต่สำหรับ ActionBar คุณสามารถค้นหา API ที่สนับสนุนทั้งหมดได้ในไลบรารีการสนับสนุนเวอร์ชันล่าสุด คุณอาจต้องการดูที่developer.android.com/tools/support-library/index.htmlสำหรับรายละเอียดเพิ่มเติม
Halim Qarroum

1
ดีกว่าที่จะหลีกเลี่ยง app_compat?
Neolardo Va Dinci

2
Jeez google !!! ออกจากการปะแก้และการปะแก้และการแก้ไขข้อผิดพลาดเหล่านี้ทั้งหมดของการสนับสนุนไลบรารีข้อผิดพลาดและเวอร์ชันกำลังช่วยเรา
Josh

59

สร้างใหม่Android Application Projectและยกเลิกการเลือก Create activityในขั้นตอนที่สอง (กำหนดค่าโครงการ)


ขอบคุณ แต่menuโฟลเดอร์ไม่ได้ถูกสร้างในโครงการของฉัน
Steve

1
การลบโปรเจ็กต์ appcompat_v7 ออกจากพื้นที่ทำงานของฉันและสร้างโปรเจ็กต์ Android ใหม่โดยการยกเลิกการทำเครื่องหมายตัวเลือก 'สร้างกิจกรรม' ซึ่งเป็นเคล็ดลับสำหรับฉัน สิ่งที่ระบุในคำตอบอื่น ๆ ใช้ไม่ได้สำหรับฉัน ขอบคุณ
Srinivasan N

22

เหตุใด eclipse ของฉันจึงเพิ่มการสนับสนุนไลบรารี appcompat v7 โดยอัตโนมัติทุกครั้งที่ฉันสร้างโครงการใหม่

เนื่องจาก SDK เป้าหมายของคุณถูกตั้งค่าเป็น 15 โดยที่ค่าเริ่มต้นคือ Action Bar และ SDK ที่สนับสนุนขั้นต่ำของคุณถูกตั้งค่าเป็น 10 แถบการกระทำออกมาใน 11 ดังนั้นคุณต้องมีไลบรารีสนับสนุน Eclipse จึงเพิ่มให้คุณ การอ้างอิง

คุณสามารถกำหนดค่าไลบรารีโครงการในเส้นทางการสร้างของคุณสมบัติโครงการ


12
ถ้าฉันกำหนดค่า SDK ขั้นต่ำเป็น 12 หรือ 13 ผมยังคงได้รับพฤติกรรมเดียวกันจากคราส ...
กี้

18

Eclipse สร้างขึ้นโดยอัตโนมัติ appcompat_v7.Because ของใช้ KitKat Api เปิดตัวเองจะเพิ่มโดยอัตโนมัติและappcompat_v7fragment_main.xml

วิธีที่ดีที่สุดในการแก้ปัญหาเหล่านี้:

  1. ประการแรกในโครงการRight click->properties->Android.There คุณสามารถเห็นวางไว้ในred marked appcompat Referenceคลิกที่และนำ it.Then Tick Project Build Targetชื่อเป้าหมายที่เหมาะสมในการ

  2. ลบfragment_main.xmlและAppCompatไฟล์ที่สร้างในของคุณคราส

  3. แก้ไขและเปลี่ยนแปลงactivity_main.xmlของคุณเช่นนี้:

    <?xml version="1.0" encoding="utf-8"?>
    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
    
    </RelativeLayout>
  4. ใน res / values ​​/ styles.xml:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
    
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
    
        </style>
    
    </resources>
  5. ใน res / values-v11 / styles.xmlคุณต้องเปลี่ยนดังนี้:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        </style>
    
    </resources>
  6. ใน res / values-v14 / styles.xmlคุณต้องเปลี่ยนดังนี้:

      <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
        </style>
    
        <style name="AppTheme" parent="AppBaseTheme">
        </style>
    
    </resources>
  7. เปลี่ยนของคุณ เมนู / main.xmlดังนี้:

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:id="@+id/action_settings"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="@string/action_settings"/>
    
    </menu>
  8. ในที่สุดก็เปลี่ยนของคุณ MainActivity.javaเช่นนี้:

    import android.app.Activity;
    import android.os.Bundle;
    
    
    public class MainActivity extends Activity {
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    }
    
    }

LikeWise คุณต้องทำเพื่อสร้างโครงการใหม่


2
พวกเขากำลังคิดอะไรอยู่ Eclipse ไม่ควรมีโซลูชันแบบคลิกเดียวสำหรับสิ่งนี้
Pacerier

1
@Pacerier: ใช่ โดยใช้ appcompat_v7
David Liu

8

มันรวมอยู่เนื่องจากเวอร์ชั่น SDK ขั้นต่ำของคุณถูกตั้งค่าเป็น 10 ซึ่งActionBarถูกนำมาใช้ใน API 11 Eclipse จะเพิ่มโดยอัตโนมัติเพื่อให้แอปของคุณสามารถดูสอดคล้องกันมากขึ้นในทุกรุ่นของ Android ที่คุณสนับสนุน


4

หากคุณไม่ได้กำหนดเป้าหมายเวอร์ชัน 2.x คุณสามารถตั้งค่ารุ่น sdk ขั้นต่ำที่ 4.x จากนั้นสร้างโครงการ Appcompat V7 lib จะไม่ถูกสร้างขึ้น


4

ฉันใหม่กับ Android และโครงการ appcompat_v7 จะถูกสร้างขึ้นเสมอเมื่อฉันสร้างโครงการแอปพลิเคชัน Android ใหม่ทำให้ฉันรู้สึกไม่สบายใจ

นี่เป็นเพียงการเดินรอบ ๆ เลือกคุณสมบัติของโครงการ -> Android จากนั้นที่กล่องไลบรารีเพียงลบ appcompat_v7_x และเพิ่ม appcompat_v7 ตอนนี้คุณสามารถลบ appcompat_v7_x

ยกเลิกการเลือกสร้างกิจกรรมในตัวช่วยสร้างโครงการไม่ทำงานเพราะเมื่อสร้างกิจกรรมโดยตัวช่วยสร้างappcompat_v7_xจะปรากฏขึ้นอีกครั้ง รุ่น ADT ของฉันคือv22.6.2-1085508
ฉันขอโทษถ้าภาษาอังกฤษของฉันไม่ดี


1
ลองดูคำตอบมากมายมีอยู่ที่นี่ส่วนนี้เป็นคำตอบคุณได้โพสต์คำถามในส่วนคำตอบ
Talha Q

1
ฉันแค่ต้องการแสดงวิธีลบ appcompat_v7_x และฉันไม่คิดว่านี่เป็นคำถาม ถ้าฉันทำผิดพลาดโปรดยกโทษให้ฉันเพราะฉันใหม่กับ stackoverflow
Lê Quang Duy

3

ขออภัยด้วยภาษาอังกฤษของฉันเมื่อคุณสร้างโครงการ Android ใหม่คุณควรเลือก api ระดับสูงเช่นจาก api 17 ถึง api 21 มันจะไม่มี appcompat และง่ายต่อการแชร์โปรเจ็กต์ หากคุณทำด้วย API ที่ต่ำกว่าคุณเพียงแก้ไขใน Android Manifest เพื่อให้มี API บน :) หลังจากนั้นคุณสามารถลบ Appcompat V7 ได้


2

ตามhttp://developer.android.com/guide/topics/ui/actionbar.html

ActionBar API ถูกเพิ่มครั้งแรกใน Android 3.0 (API ระดับ 11) แต่ยังมีอยู่ใน Support Library สำหรับความเข้ากันได้กับ Android 2.1 (API ระดับ 7) และสูงกว่า

กล่าวโดยย่อนั่นคือโครงการที่สร้างขึ้นโดยอัตโนมัติที่คุณเห็นว่าเป็นโมดูลในกระบวนการเพิ่ม ActionBar ไปยัง APIs 7-10

ตัวอย่างของ ActionBar บน Froyo

ดูhttp://hmkcode.com/add-actionbar-to-android-2-3-x/สำหรับคำอธิบายที่ง่ายขึ้นและการสอนเกี่ยวกับหัวข้อ


0

ฉันสังเกตเห็นการสร้างห้องสมุด 'appcompat' ในขณะที่สร้างโครงการ android ใหม่ด้วยรุ่น ADT 22.6.2 แม้ว่า minSDK จะถูกตั้งค่าเป็น 11 และ targetSDK ถูกตั้งค่า 19

สิ่งนี้เกิดขึ้นเพราะใน Android แม่แบบโครงการใหม่กำลังใช้คุณลักษณะบางอย่างที่มาจากไลบรารีการสนับสนุน ตัวอย่างเช่นหากโครงการใหม่ถูกสร้างขึ้นด้วย actionbar จากนั้นใน main.xml ของเมนูหนึ่งสามารถหาapp:showAsAction="never"ที่มาจากห้องสมุดสนับสนุน

  • หากแอปกำหนดเป้าหมายเป็น Android เวอร์ชัน 11 ขึ้นไปแอปหนึ่งสามารถเปลี่ยนคุณสมบัตินี้android:showAsActionเป็น main.xml ของเมนู
  • ด้วยชุดรูปแบบเริ่มต้นอาจเป็น "Theme.AppCompat.Light.DarkActionBar" ตามที่แสดงด้านล่าง (styles.xml)

    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
           <!-- API 14 theme customizations can go here. -->
       </style> 

    ในกรณีนี้ธีมหลักใน style.xml จะต้องเปลี่ยนเป็น "android: style / Theme.Holo.Light.DarkActionBar"

  • นอกจากนี้หากอ้างอิงถึง Fragment Manager Fragments จากไลบรารีการสนับสนุนถูกสร้างขึ้นในรหัสของ MainActivity.java สิ่งเหล่านี้จะต้องเปลี่ยนเป็น Fragment, FragmentManager ของ SDK อย่างเหมาะสม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.