जब भी मैं एक नया प्रोजेक्ट बनाता हूं, ग्रहण स्वचालित रूप से appcompat v7 पुस्तकालय समर्थन क्यों जोड़ता है?


217

appcompat v7जब भी मैं एक नया प्रोजेक्ट बनाता हूं, तो ग्रहण स्वचालित रूप से लाइब्रेरी समर्थन को क्यों जोड़ता है ?

मैं एक साधारण प्रोजेक्ट बना रहा MainActivityहूं Activity, जिसका विस्तार होना चाहिए , लेकिन यह नहीं हुआ। ग्रहण स्वचालित रूप से एक्शन बार समर्थन जोड़ता है।

मैं appcompatपुस्तकालय के बिना एक साधारण परियोजना कैसे बनाऊं ? FYI करें, मैंने हाल ही में अपडेट की गई सब कुछ के साथ ADT का नवीनतम संस्करण डाउनलोड किया है। मैं विंडो 7 x64 का उपयोग कर रहा हूं।

यहां छवि विवरण दर्ज करें

जवाबों:


105

जैसा कि एंड्रॉइड के सपोर्ट लाइब्रेरी अवलोकन में कहा गया है , उपकरणों की बड़ी विविधता और विखंडन के कारण डिफॉल्ट रूप से सपोर्ट लाइब्रेरी को शामिल करना अच्छा अभ्यास माना जाता है, जो एंड्रॉइड के विभिन्न संस्करणों (और इस प्रकार, प्रदान की गई एपीआई) के बीच मौजूद है।

यही कारण है कि ग्रहण के माध्यम से एंड्रॉइड कोड टेम्प्लेट टूलAndroid Development Tools (ADT) को डिफ़ॉल्ट रूप से एकीकृत किया गया है।

मैंने नोट किया कि आप API 15अपने नमूने में निशाना लगाते हैं, लेकिन आपके पैकेज के लिए एसडीकेएन की आवश्यकता होती है API 10, जिसके लिए अनुकूलता लाइब्रेरियां पिछड़े संगत एपीआई की एक बड़ी मात्रा प्रदान कर सकती हैं। एक उदाहरण एक डिवाइस पर इस प्रणाली के पुराने संस्करण को चलाने वाले (Android 3.0 हनीकॉम्ब) पर Fragment APIदिखने वाले का उपयोग करने की क्षमता होगी ।API 11

यह भी ध्यान दिया जाना चाहिए कि आप डिफ़ॉल्ट रूप से समर्थन लाइब्रेरी के स्वचालित समावेश को निष्क्रिय कर सकते हैं ।


54
खैर बीएस। मैं पिछले 2 महीनों से एपीआई स्तर 10 पर ग्रहण का उपयोग कर रहा हूं और इसकी कभी भी कॉम्पेटिबिलिटी लाइब्रेरी या एक खंड लेआउट का आयात नहीं किया गया जब तक कि यह अजीब किटकैट एप बाहर नहीं आया। यह इस बिंदु पर लगता है कि इसे प्रदर्शित करने से रोकने का सबसे सरल तरीका है कि स्वचालित रूप से गतिविधि बनाना नहीं है। तो आपको "गतिविधि बनाना" और प्रोजेक्ट बनाने के बाद अपना स्वयं का निर्माण करना होगा।
user3223214 13

2
हाँ, यह बात है, उपरोक्त कारणों की वजह से पुस्तकालय को हमेशा शामिल किया जाएगा।
हलीम क़र्रौम

1
खैर, समर्थन पुस्तकालय एंड्रॉइड एसडीके के कई घटकों के लिए पिछड़े संगतता प्रदान करता है। केवल ActionBar के लिए नहीं। आप समर्थित लायब्रेरी के नवीनतम संस्करण में समर्थित API का एक पूरा गुच्छा पा सकते हैं। आप अधिक जानकारी के लिए developer.android.com/tools/support-library/index.html पर एक नज़र रखना चाह सकते हैं ।
हलीम क़र्रौम

1
क्या app_compat से बचना बेहतर है?
नेओलार्दो वा दिनसी

2
जीजस गूगल !!! पैचिंग और पैचिंग और पैचिंग को छोड़ दें, तो ये सभी समर्थन त्रुटियों और संस्करणों के गुच्छा हमें पागल कर रहे हैं।
जोश

59

चरण दो में एक नया Android Application Projectऔर अनचेक बनाएं Create activity(प्रोजेक्ट कॉन्फ़िगर करें)।


धन्यवाद लेकिन menuफ़ोल्डर मेरी परियोजना में नहीं बनाया गया था।
स्टीव

1
मेरे कार्यक्षेत्र से appcompat_v7 प्रोजेक्ट को हटाना और 'क्रिएट एक्टिविटी' विकल्प को अनचेक करके एक नया एंड्रॉइड प्रोजेक्ट बनाना मेरे लिए ट्रिक था। अन्य उत्तरों में निर्दिष्ट बातें मेरे लिए कारगर नहीं रहीं। धन्यवाद।
श्रीनिवासन एन

22

जब भी मैं एक नई परियोजना बनाता हूं, तो मेरा ग्रहण स्वचालित रूप से appcompat v7 पुस्तकालय समर्थन क्यों जोड़ता है

क्योंकि आपका लक्ष्य एसडीके 15 पर सेट है, जिसमें एक्शन बार डिफ़ॉल्ट रूप से है और आपका न्यूनतम समर्थित एसडीके 10 पर सेट है। एक्शन बार 11 में निकलता है, इसलिए आपको एक समर्थन पुस्तकालय की आवश्यकता है, एक्लिप्स इसे आपके लिए जोड़ता है। संदर्भ।

आप प्रोजेक्ट गुणों के निर्माण पथ में प्रोजेक्ट लाइब्रेरी कॉन्फ़िगर कर सकते हैं।


12
अगर मैं न्यूनतम sdk को 12 या 13 के रूप में कॉन्फ़िगर करता हूं तो मुझे अभी भी ग्रहण से समान व्यवहार मिलता है ...
mikey

18

ग्रहण ने स्वचालित रूप से appcompat_v7 बनाया। किटकैट आपी के स्वतः लॉन्च ने इसे स्वचालित रूप से जोड़ा appcompat_v7और fragment_main.xml

इन्हें हल करने के सर्वोत्तम तरीके:

  1. सबसे पहले परियोजना में, Right click->properties->Androidजहाँ आप red marked appcompatरखा हुआ देख सकते हैं Reference। उस पर क्लिक करें और इसे हटा दें। फिर सही लक्ष्य नाम पर टिक करें Project Build Target

  2. अपने ग्रहण में बनाई गई fragment_main.xml और Appcompat फ़ाइल हटाएं ।

  3. संपादित करें और अपनी गतिविधि_ 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);
    
    }
    
    }
    

लाइक वाइज आपको एक नया प्रोजेक्ट बनाने के लिए करना होगा


2
वे क्या सोच रहे हैं? क्या ग्रहण के लिए इसके लिए एक-क्लिक समाधान नहीं होना चाहिए?
पचेरियर 7

1
@ स्पेसर: हाँ। Appcompat_v7 का उपयोग करके।
डेविड लियू

8

यह शामिल है क्योंकि आपका न्यूनतम एसडीके संस्करण 10 पर सेट है। ActionBarएपीआई 11 में पेश किया गया था। ग्रहण स्वचालित रूप से जोड़ता है जिससे आपका ऐप आपके द्वारा समर्थित सभी एंड्रॉइड संस्करणों के स्पेक्ट्रम में अधिक सुसंगत दिख सकता है।


4

यदि आप 2.x संस्करणों को लक्षित नहीं कर रहे हैं, तो आप 4.x का अपना न्यूनतम एसडीके संस्करण सेट कर सकते हैं और फिर प्रोजेक्ट बना सकते हैं। Appcompat V7 lib अभ्यस्त बनाया जाना चाहिए।


4

मैं एंड्रॉइड के साथ नया हूं और प्रोजेक्ट appcompat_v7 हमेशा बनाया जाता है जब मैं नया एंड्रॉइड एप्लिकेशन प्रोजेक्ट बनाता हूं तो मुझे बहुत असुविधा होती है।

यह सिर्फ घूमना है। प्रोजेक्ट गुण चुनें -> Android के बाद लाइब्रेरी बॉक्स में बस appcompat_v7_x निकालें और appcompat_v7 जोड़ें। अब आप appcompat_v7_x को हटा सकते हैं।

प्रोजेक्ट विज़ार्ड बनाने में गतिविधि अनचेक करें काम नहीं करता है, क्योंकि विज़ार्ड द्वारा गतिविधि बनाते समय appcompat_v7_x फिर से दिखाई देते हैं। मेरा ADT का संस्करण v22.6.2-1085508 है
मुझे खेद है कि मेरी अंग्रेजी खराब है।


1
इतने सारे उत्तर यहां मौजूद हैं। यह खंड उत्तर के लिए है। आपने उत्तर अनुभाग में प्रश्न पोस्ट किया है।
तल्हा क्यू

1
मैं सिर्फ appcompat_v7_x को निकालने का एक रास्ता दिखाना चाहता हूं और मुझे नहीं लगता कि यह कोई सवाल है। अगर मैंने कोई गलती की है तो कृपया मुझे माफ़ करें क्योंकि मैं स्टैकओवरफ़्लो के साथ नया हूं।
Lê Quang Duy

3

मेरी अंग्रेजी के साथ क्षमा करें, जब आप एक नया एंड्रॉइड प्रोजेक्ट बनाते हैं, तो आपको उच्च स्तर की एपीआई का चयन करना चाहिए, उदाहरण के लिए: एपी 17 से एपी 21 तक, इसमें एपकॉम नहीं होगा और प्रोजेक्ट साझा करना बहुत आसान होगा। यदि आपने इसे लोअर एपीआई के साथ किया है, तो आप ऊपरी एपीआई :) के लिए एंड्रॉइड मैनिफेस्ट में संपादित करते हैं, इसके बाद, आप ऐप्पोमैट 7 को हटा सकते हैं।


2

Http://developer.android.com/guide/topics/ui/actionbar.html के अनुसार

ActionBar API को पहली बार Android 3.0 (API स्तर 11) में जोड़ा गया था, लेकिन वे Android 2.1 (API स्तर 7) और इसके बाद के संस्करण की संगतता के लिए समर्थन लाइब्रेरी में भी उपलब्ध हैं।

संक्षेप में, कि स्वत: जनरेट परियोजना आप कर रहे हैं देख modularizes एपीआई 7-10 को ActionBar जोड़ने की प्रक्रिया।

Froyo पर ActionBar का उदाहरण

विषय पर सरलीकृत स्पष्टीकरण और ट्यूटोरियल के लिए http://hmkcode.com/add-actionbar-to-android-2-3-x/ देखें ।


0

मैंने ADT 22.6.2 संस्करण के साथ नया एंड्रॉइड प्रोजेक्ट बनाते समय 'एप्कोम्पैट' लाइब्रेरी के निर्माण पर ध्यान दिया, तब भी जब minSDK को 11 पर सेट किया गया था और targetSDK को 19 पर सेट किया गया था

ऐसा इसलिए हो रहा था, क्योंकि नए प्रोजेक्ट टेम्पलेट में एंड्रॉइड कुछ विशेषताओं का उपयोग कर रहा है जो समर्थन लाइब्रेरी से हैं। उदाहरण के लिए यदि एक्शनबार के साथ एक नया प्रोजेक्ट बनाया गया था, तो मेनू के main.xml में वह मिल सकता है app:showAsAction="never"जो सपोर्ट लाइब्रेरी से है।

  • अगर ऐप को एंड्रॉइड के संस्करण 11 और उसके बाद लक्षित किया जाता है, तो इस विशेषता को android:showAsActionमेनू के main.xml में बदल सकते हैं
  • साथ ही डिफ़ॉल्ट थीम सेट "Theme.AppCompat.Light.DarkActionBar" हो सकता है जैसा कि नीचे दिखाया गया है (style.xml)

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

    इस स्थिति में style.xml में पैरेंट थीम को "android: style / Theme.Holo.Light.DarkAndBB" में बदलना होगा।

  • इसके अलावा अगर फ्रैगमेंट के संदर्भ में, समर्थन पुस्तकालय से फ्रैगमेंट्स मैनेजर को MainActivity.java के कोड में बनाया गया था, तो उन्हें एसडीके के फ्रैगमेंट मैनर को उचित रूप से बदल दिया गया है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.