web-dev-qa-db-fra.com

Pourquoi Eclipse ajoute-t-il automatiquement le support de la bibliothèque appcompat v7 lorsque je crée un nouveau projet?

Pourquoi Eclipse ajoute-t-il automatiquement le support de la bibliothèque appcompat v7 chaque fois que je crée un nouveau projet?

Je crée un projet simple dont MainActivity devrait s'étendre Activity, mais ce n'est pas le cas. Eclipse ajoute automatiquement le support de la barre d’action.

Comment créer un projet simple sans la bibliothèque appcompat? Pour votre information, j'ai téléchargé la dernière version de ADT avec tout mis à jour récemment. J'utilise Windows 7 x64.

Enter image description here

216
Talha Qamar

Comme indiqué dans Android Support Library Overview , il est recommandé d'inclure la bibliothèque de support par défaut en raison de la grande diversité de périphériques et de la fragmentation existant entre les différentes versions de Android. _ (et donc des API fournies).

C'est la raison pour laquelle Android outils de modèles de code inclus dans Eclipse via la Android Development Tools (ADT) les intègre par défaut.

J'ai remarqué que vous ciblez _API 15_ dans votre exemple, mais que le SDK minimum requis pour votre package est _API 10_, pour lequel les bibliothèques de compatibilité peuvent fournir une quantité considérable d'API compatibles avec les versions antérieures. Un exemple serait la possibilité d'utiliser les Fragment API apparaissant sur _API 11_ (Android 3.0 Honeycomb) sur un appareil qui exécute une ancienne version de ce système.

Il est également à noter que vous pouvez désactiver l'inclusion automatique de la bibliothèque de support par défaut.

105
Halim Qarroum

Créez un nouveau Android Application Project et décochezCreate activity à l'étape deux (Configurer le projet).

59
songhir

Pourquoi mon Eclipse ajoute automatiquement le support de la bibliothèque appcompat v7 lorsque je crée un nouveau projet

Étant donné que votre kit SDK cible est défini sur 15, la barre d'actions est activée par défaut et votre kit SDK minimum pris en charge sur 10. La barre d'actions apparaît dans la version 11; vous avez donc besoin d'une bibliothèque de prise en charge. Eclipse l'ajoute pour vous. Référence.

Vous pouvez configurer les bibliothèques de projet dans le chemin de génération des propriétés du projet.

22

Eclipse a créé automatiquement l'appcompat_v7.Parce que KitKat Api s'est lancé, il ajoute automatiquement appcompat_v7 et fragment_main.xml.

Les meilleurs moyens de résoudre ces problèmes:

  1. Tout d'abord dans le projet, Right click->properties->Android. Vous pouvez y voir le red marked appcompat placé dans Reference. Cliquez dessus et supprimez-le. Cochez ensuite le bon nom de cible dans Project Build Target.

  2. Supprimez le fichier fragment_main.xml et Appcompat créé dans votre Eclipse .

  3. Editez et changez votre activity_main.xml comme ceci:

    <?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. Dans res/values ​​/ styles.xml:

    <resources>
    
        <style name="AppBaseTheme" parent="Android:Theme.Light">
    
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
    
        </style>
    
    </resources>
    
  5. Dans res/values-v11/styles.xml vous devez changer comme ceci:

    <resources>
    
        <style name="AppBaseTheme" parent="Android:Theme.Holo.Light">
        </style>
    
    </resources>
    
  6. Dans res/values-v14/styles.xml vous devez changer comme ceci:

      <resources>
    
        <style name="AppBaseTheme" parent="Android:Theme.Light">
        </style>
    
        <style name="AppTheme" parent="AppBaseTheme">
        </style>
    
    </resources>
    
  7. Changez votre menu/main.xml comme ceci:

    <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. Enfin, changez votre MainActivity.Java comme ceci:

    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 vous devez le faire pour créer un nouveau projet

18
Stephen

Il est inclus car votre version minimale du SDK est définie sur 10. La ActionBar a été introduite dans l'API 11. Eclipse l'ajoute automatiquement afin que votre application puisse paraître plus cohérente dans toutes les versions de Android que vous êtes. justificatif.

8
Ahmad

Si vous ne ciblez pas les versions 2.x, vous pouvez définir la version minimale de 4.x de votre kit de développement, puis créer un projet. La bibliothèque Appcompat V7 ne sera pas créée.

4
Swapnil

Je suis nouveau avec Android et le projet appcompat_v7 est toujours créé lorsque je crée un nouveau projet d'application Android, ce qui me met tellement mal à l'aise.

Ceci est juste une promenade. Choisissez Propriétés du projet -> Android, puis dans la zone Bibliothèque, supprimez simplement appcompat_v7_x et ajoutez appcompat_v7. Vous pouvez maintenant supprimer appcompat_v7_x.

Décocher Créer une activité dans l'assistant de création de projet ne fonctionne pas, car lors de la création d'activité par l'assistant, le signe appcompat_v7_x apparaît à nouveau. La version de mon ADT est v22.6.2-1085508 .
Je suis désolé si mon anglais est mauvais.

4
Lê Quang Duy

Désolé avec mon anglais, lorsque vous créez un nouveau projet Android, vous devez choisir un api de haut niveau, par exemple: de api 17 à api 21, le projet ne sera pas appcompat et très facile à partager. Si vous l'avez fait avec une API inférieure, vous modifiez simplement dans Android le manifeste pour avoir une API supérieure :), après quoi, vous pouvez supprimer Appcompat V7.

3
nobjta_9x_tq

Selon http://developer.Android.com/guide/topics/ui/actionbar.html

Les API ActionBar ont été ajoutées pour la première fois dans Android 3.0 (API de niveau 11) , mais elles sont également disponibles dans la bibliothèque de support pour compatibilité avec Android 2.1 (niveau de l'API). 7) et au-dessus.

En bref, ce projet généré automatiquement que vous voyez modularise le processus d’ajout du ActionBar à API 7-10.

Example of ActionBar on Froyo

Voir http://hmkcode.com/add-actionbar-to-Android-2-3-x/ pour une explication simplifiée et un didacticiel sur le sujet.

2
b1nary.atr0phy

J'ai remarqué la création de la bibliothèque 'appcompat' lors de la création du nouveau projet Android avec la version ADT 22.6.2, même lorsque minSDK était défini sur 11 et que targetSDK était défini sur 19

Cela était dû au fait que, dans le nouveau modèle de projet, Android utilise certains attributs de la bibliothèque de support. Par exemple, si un nouveau projet a été créé avec actionbar, alors dans le fichier principal.xml du menu, vous pouvez trouver app:showAsAction="never" qui provient de la bibliothèque de support.

  • Si l'application est ciblée sur Android version 11 et ultérieure, vous pouvez modifier cet attribut en Android:showAsAction dans le menu principal.xml.
  • Le thème par défaut pourrait également être "Theme.AppCompat.Light.DarkActionBar", comme indiqué ci-dessous (styles.xml).

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

    Dans ce cas, le thème parent dans style.xml doit être remplacé par "Android: style/Theme.Holo.Light.DarkActionBar".

  • En plus de cela si référence à Fragment, Fragments Manager de la bibliothèque de support a été créée dans le code de MainActivity.Java, ceux-ci doivent être modifiés de manière appropriée en Fragment, FragmentManager du SDK.
0
Jeevan