Mengapa Eclipse secara otomatis menambahkan dukungan perpustakaan appcompat v7 setiap kali saya membuat proyek baru?

217

Mengapa Eclipse secara otomatis menambahkan appcompat v7dukungan perpustakaan setiap kali saya membuat proyek baru?

Saya membuat proyek sederhana yang MainActivityharus diperluas Activity, tetapi tidak. Eclipse secara otomatis menambahkan dukungan bilah tindakan.

Bagaimana cara membuat proyek sederhana tanpa appcompatperpustakaan? FYI, saya telah mengunduh ADT versi terbaru dengan semua yang diperbarui baru-baru ini. Saya menggunakan Window 7 x64.

Masukkan deskripsi gambar di sini

Talha Q
sumber

Jawaban:

105

Seperti yang dinyatakan dalam Ikhtisar Perpustakaan Dukungan Android , dianggap praktik yang baik untuk memasukkan perpustakaan dukungan secara default karena keragaman besar perangkat dan fragmentasi yang ada antara versi Android yang berbeda (dan dengan demikian, dari API yang disediakan).

Ini adalah alasan mengapa alat templat kode Android termasuk dalam Eclipse melalui Android Development Tools (ADT)integrasi secara default.

Saya mencatat bahwa Anda menargetkan API 15dalam sampel Anda, tetapi SDK miminum yang diperlukan untuk paket Anda adalah API 10, yang pustaka kompatibilitas dapat menyediakan sejumlah besar API kompatibel yang terbelakang. Contohnya adalah kemampuan menggunakan Fragment APIyang muncul di API 11 (Android 3.0 Honeycomb) pada perangkat yang menjalankan versi lebih lama dari sistem ini.

Perlu dicatat bahwa Anda dapat menonaktifkan penyertaan otomatis Perpustakaan Dukungan secara default.

Halim Qarroum
sumber
54
Nah, itu BS. Saya telah menggunakan gerhana di level API 10 selama 2 bulan terakhir dan tidak pernah mengimpor perpustakaan kompatibilitas atau tata letak fragmen sampai api kitkat yang aneh ini keluar. Tampaknya pada titik ini cara paling sederhana untuk menghentikannya tidak muncul untuk membuat Kegiatan secara otomatis. Jadi, Anda harus menghapus centang "buat aktivitas" dan buat sendiri ketika proyek telah dibuat.
user3223214
2
Ya, itu intinya, perpustakaan akan selalu dimasukkan karena alasan di atas.
Halim Qarroum
1
Yah, pustaka dukungan memang memberikan kompatibilitas ke belakang untuk banyak komponen SDK Android. Tidak hanya untuk ActionBar. Anda dapat menemukan sejumlah besar API yang didukung di versi terbaru dari perpustakaan dukungan. Anda mungkin ingin melihat developer.android.com/tools/support-library/index.html untuk perincian lebih lanjut.
Halim Qarroum
1
Apakah lebih baik menghindari app_compat?
Neolardo Va Dinci
2
Astaga google !!! berhenti menambal dan menambal dan menambal, semua kelompok ini mendukung kesalahan dan versi Library membuat kita gila.
Josh
59

Buat yang baru Android Application Projectdan hapus centang Create activity di langkah dua (Konfigurasikan proyek).

songhir
sumber
Terima kasih Tapi menufolder tidak dibuat di proyek saya.
Steve
1
Menghapus proyek appcompat_v7 dari ruang kerja saya dan membuat proyek android baru dengan menghapus centang opsi 'Buat aktivitas' melakukan trik untuk saya. Hal-hal yang ditentukan dalam jawaban lain tidak berhasil untuk saya. Terima kasih.
Srinivasan N
22

Mengapa gerhana saya secara otomatis menambahkan dukungan perpustakaan appcompat v7 setiap kali saya membuat proyek baru

Karena SDK target Anda diatur ke 15, di mana Bilah Tindakan diaktifkan secara default dan SDK minimum yang didukung Anda diatur ke 10. Bilah Tindakan keluar di 11, sehingga Anda memerlukan pustaka dukungan, Eclipse menambahkannya untuk Anda. Referensi.

Anda bisa mengonfigurasi pustaka proyek di jalur pembangunan properti proyek.

Adam Stelmaszczyk
sumber
12
Jika saya mengkonfigurasi minimum SDK sebagai 12 atau 13 saya masih mendapatkan perilaku yang sama dari gerhana ...
mikey
18

Eclipse secara otomatis membuat appcompat_v7. Karena Kitkat Api meluncurkannya sendiri ia menambahkan secara otomatis appcompat_v7dan fragment_main.xml.

Cara terbaik untuk mengatasi ini:

  1. Pertama dalam proyek Right click->properties->Android,. Di sana Anda dapat melihat red marked appcompatditempatkan di Reference. Klik itu dan Hapus itu. Kemudian Centang nama target yang tepat di Project Build Target.

  2. Hapus fragment_main.xml dan file Appcompat yang dibuat di Eclipse Anda .

  3. Edit dan ubah activity_main.xml seperti ini:

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

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
    
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
    
        </style>
    
    </resources>
  5. Di res / values-v11 / styles.xml Anda harus mengubah seperti ini:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        </style>
    
    </resources>
  6. Di res / values-v14 / styles.xml Anda harus mengubah seperti ini:

      <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
        </style>
    
        <style name="AppTheme" parent="AppBaseTheme">
        </style>
    
    </resources>
  7. Ubah menu / main.xml Anda seperti ini:

    <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. Terakhir, ubah MainActivity.java Anda seperti ini:

    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 Anda harus melakukannya untuk membuat proyek baru

Steve
sumber
2
Apa yang mereka pikirkan? Tidakkah Eclipse memiliki solusi satu klik untuk ini?
Pacerier
1
@Pacerier: Ya. Dengan menggunakan appcompat_v7.
David Liu
8

Ini disertakan karena versi SDK minimum Anda diatur ke 10. Yang ActionBardiperkenalkan di API 11. Eclipse menambahkannya secara otomatis sehingga aplikasi Anda dapat terlihat lebih konsisten di seluruh spektrum semua versi android yang Anda dukung.

Ahmad
sumber
4

Jika Anda tidak menargetkan versi 2.x, Anda dapat mengatur versi SDK minimum Anda dari 4.x dan kemudian membuat proyek. Appcompat V7 lib tidak akan dibuat.

Swapnil
sumber
4

Saya baru dengan Android dan appcompat_v7 proyek selalu dibuat ketika saya membuat proyek aplikasi Android baru membuat saya sangat tidak nyaman.

Ini hanya berjalan-jalan saja. Pilih Project Properties -> Android lalu di kotak Library cukup hapus appcompat_v7_x dan tambahkan appcompat_v7. Sekarang Anda dapat menghapus appcompat_v7_x.

Hapus centang Buat Aktivitas di proyek buat wizard tidak berfungsi, karena ketika membuat aktivitas oleh program, appcompat_v7_x muncul lagi. Versi ADT saya adalah v22.6.2-1085508 .
Maaf kalau bahasa Inggris saya jelek.

Lê Quang Duy
sumber
1
Lihat begitu banyak jawaban hadir di sini. Bagian ini untuk menjawab. Anda telah memposting pertanyaan di bagian jawaban.
Talha Q
1
Saya hanya ingin menunjukkan cara untuk menghapus appcompat_v7_x dan saya pikir ini bukan pertanyaan. Jika saya melakukan kesalahan tolong maafkan saya karena saya baru dengan stackoverflow.
Lê Quang Duy
3

Maaf dengan bahasa Inggris saya, Ketika Anda membuat proyek android baru, Anda harus memilih api tingkat tinggi, misalnya: dari api 17 ke api 21, itu tidak akan memiliki appcompat dan sangat mudah untuk berbagi proyek. Jika Anda melakukannya dengan API yang lebih rendah, Anda cukup mengedit di Android Manifest untuk memiliki API yang lebih tinggi :), setelah itu, Anda dapat menghapus Appcompat V7.

nobjta_9x_tq
sumber
2

Menurut http://developer.android.com/guide/topics/ui/actionbar.html

API ActionBar pertama kali ditambahkan di Android 3.0 (API level 11) tetapi mereka juga tersedia di Perpustakaan Dukungan untuk kompatibilitas dengan Android 2.1 (API level 7) dan di atasnya.

Singkatnya, proyek yang dibuat secara otomatis yang Anda lihat memodulasi proses menambahkan ActionBar ke API 7-10.

Contoh dari ActionBar di Froyo

Lihat http://hmkcode.com/add-actionbar-to-android-2-3-x/ untuk penjelasan dan tutorial yang disederhanakan tentang topik tersebut.

b1nary.atr0phy
sumber
0

Saya perhatikan pembuatan perpustakaan 'appcompat' sambil membuat proyek android baru dengan versi ADT 22.6.2, bahkan ketika minSDK ditetapkan ke 11 dan targetSDK ditetapkan 19

Ini terjadi karena, dalam templat proyek baru android menggunakan beberapa atribut yang berasal dari pustaka dukungan. Misalnya jika proyek baru dibuat dengan actionbar maka di menu main.xml orang dapat menemukan app:showAsAction="never"yang dari pustaka dukungan.

  • Jika aplikasi ini ditargetkan pada versi android 11 dan di atasnya maka seseorang dapat mengubah atribut ini menjadi android:showAsActiondi menu main.xml
  • Set tema default juga bisa "Theme.AppCompat.Light.DarkActionBar" seperti yang ditunjukkan di bawah ini (styles.xml)

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

    Dalam hal ini tema induk di style.xml harus diubah ke "android: style / Theme.Holo.Light.DarkActionBar"

  • Selain ini jika referensi untuk Fragmen, Manajer Fragmen dari pustaka dukungan dibuat dalam kode MainActivity.java, ini harus diubah dengan tepat ke Fragmen, Manajer Fragmen dari SDK.
Astaga
sumber