Her uygulama projesinin bir AndroidManifest.xml
dosyası olmalıdır.
ad,
proje kaynak kümesinin kök dizininde yer alır.
Manifest dosyası, temel bilgileri açıklar
Android geliştirme araçları, Android işletim sistemi ve Android
Google Play.
Manifest dosyası, diğer birçok şeyin yanı sıra aşağıdakileri de beyan etmek zorundadır:
- Tüm etkinlikler, hizmetler, yayın alıcıları ve içerik sağlayıcılar. Her bileşen temel özellikleri (ör. Kotlin veya Java sınıfının adı) Ayrıca, hangi cihaz yapılandırmalarını yönetebileceği gibi intent filtreleridir. Aşağıdaki bölümde uygulama bileşenleri hakkında daha fazla bilgi edinebilirsiniz.
- Uygulamanın şunları yapmak için ihtiyaç duyduğu izinler: sistemin korunan bölümlerine veya diğer uygulamalara erişmesine izin verilmez. Ayrıca, Bu uygulamadan içeriğe erişmek isteyen diğer uygulamaların sahip olması gereken tüm izinler. Aşağıdaki bölümden izinler hakkında daha fazla bilgi edinebilirsiniz.
- Uygulamanın gerektirdiği donanım ve yazılım özellikleri Cihazlar, uygulamayı Google Play'den yükleyebilir. Cihaz uyumluluğu hakkında daha fazla bilgi edinmek için aşağıdaki bölümü inceleyin.
Uygulamanızı derlemek için Android Studio kullanıyorsanız manifest dosyası için oluşturulur ve temel manifest öğelerinin çoğu uygulamanızı geliştirirken (özellikle kod şablonlarını kullanırken)
Dosya özellikleri
Aşağıdaki bölümlerde en önemli özelliklerden bazılarının manifesto dosyasında gösterilir.
Uygulama bileşenleri
Her uygulama için bileşenini kullanın, manifest dosyasında buna karşılık gelen bir XML öğesini tanımlayın:
<activity>
. her birActivity
alt sınıfı için<service>
. her birService
alt sınıfı için<receiver>
. her birBroadcastReceiver
alt sınıfı için<provider>
. her birContentProvider
alt sınıfı için
Bu bileşenlerden herhangi birini manifest dosyasında bildirmeden alt sınıfa atarsanız: sistem bu dosyayı başlatamaz.
name
kullanarak alt sınıfınızın adını belirtin
özelliğini kullanın. Örneğin,
Activity
alt sınıf aşağıdaki gibi açıklanmıştır:
<manifest ... > <application ... > <activity android:name="com.example.myapp.MainActivity" ... > </activity> </application> </manifest>
Ancak name
değerindeki ilk karakter noktaysa
uygulamanın ad alanını kullanır. Bu işlem, modül düzeyindeki build.gradle
dosyasının
namespace
özelliği, adın önüne eklenir. Örneğin, ad alanı
"com.example.myapp"
, aşağıdaki etkinlik adı şu şekilde çözümlenir:
com.example.myapp.MainActivity
:
<manifest ... > <application ... > <activity android:name=".MainActivity" ... > ... </activity> </application> </manifest>
Paket adını veya ad alanını ayarlama hakkında daha fazla bilgi için Ad alanını ayarlama bölümüne bakın.
Alt paketlerde (ör.
com.example.myapp.purchases
, name
değeri eksik olan değerleri toplamalıdır
veya ".purchases.PayActivity"
gibi alt paket adlarını
tam paket adıdır.
Intent filtreleri
Uygulama etkinlikleri, hizmetler ve anons
intentler tarafından etkinleştirilir. Amaç, bir projenin
Bir Intent
nesnesini tanımlayan
işlem yapılacak veriler, e-posta adresi kategorisi,
bileşeni ve diğer talimatları içerir.
Bir uygulama sisteme bir istekte bulunduğunda, sistem bir uygulamayı bulur
amaç filtresine göre niyeti işleyebilen bileşen
beyanlarını her uygulamanın manifest dosyasında bulabilirsiniz. Sistem başlatılır.
eşleşen bileşenin bir örneğini verir ve Intent
nesnesini bu bileşene iletir. Birden fazla uygulama
işleme koyduktan sonra kullanıcı hangi uygulamanın kullanılacağını seçebilir.
Bir uygulama bileşeninde sınırsız sayıda intent filtresi (
<intent-filter>
.
öğesi), her biri söz konusu bileşenin farklı bir özelliğini açıklayan bir ifadedir.
Daha fazla bilgi için Amaçlar ve Amaç Filtreleri belgesine bakın.
Simgeler ve etiketler
Bazı manifest öğelerinde icon
ve label
var
özellikleri ile birlikte, sırasıyla küçük bir simge ve metin etiketi görüntüleyebilir.
kullanıcılara gösterir.
Her durumda, bir üst öğede ayarlanan simge ve etiket varsayılan olarak kullanılır
Tüm alt öğeler için icon
ve label
değeri.
Örneğin,
<application>
.
öğesi, uygulamanın her bileşeni (ör. tüm etkinlikler) için varsayılan simge ve etikettir.
Bir bileşenin
<intent-filter>
.
söz konusu bileşen bir seçenek olarak sunulduğunda kullanıcıya
bir amacı ifade eder. Varsayılan olarak bu simge,
veya
<activity>
veya
<application>
öğesi.
Simgeyi değiştirmek isteyebilirsiniz. bir amaç filtresi için, açılış sayfanızda daha iyi belirtmek istediğiniz benzersiz bir işlem sağlıyorsa seçici iletişim kutusu. Daha fazla bilgi için Diğer uygulamaların etkinliğinizi başlatmasına izin verme başlıklı makaleye bakın.
İzinler
Android uygulamaları, hassas kullanıcı verilerine erişim izni istemelidir, Örneğin, kişiler ve SMS gibi belirli sistem özelliklerini kamera ve internet erişimi. Her izin benzersiz bir etiketle tanımlanır. Örneğin, SMS mesajı göndermesi gereken bir uygulama şu özelliklere sahip olmalıdır: satırında şu satırı ekleyin:
<manifest ... > <uses-permission android:name="android.permission.SEND_SMS"/> ... </manifest>
Şununla başlayan:
Android 6.0 (API düzeyi 23) yüklüyse, kullanıcı çalışma zamanında bazı uygulama izinlerini onaylayabilir veya reddedebilir. Ama
Uygulamanızın hangi Android sürümünü desteklediğinden bağımsız olarak, tüm izin isteklerini bir
<uses-permission>
.
öğesine dokunun. İzin verilirse uygulama, korunan
özellikleri. Aksi takdirde, bu özelliklere erişme girişimleri başarısız olur.
Uygulamanız, izinlerle kendi bileşenlerini de koruyabilir. Kullanabileceğim
aşağıdaki listede belirtildiği şekilde, Android tarafından tanımlanmış izinlerden herhangi biri
android.Manifest.permission
veya bir izin
bir uygulamadır. Uygulamanız kendi izinlerini de tanımlayabilir.
Yeni bir izin,
<permission>
.
öğesine dokunun.
Daha fazla bilgi için İzinler bölümüne bakın bakın.
Cihaz uyumluluğu
Manifest dosyasında ayrıca ne tür donanım veya uygulamanızın gerektirdiği yazılım özellikleri ve buna bağlı olarak, uygulamanızın ile uyumludur. Google Play Store, kullanıcıların uygulamanızı yüklemesine izin vermiyor uygulamanızın desteklediği özellikleri veya sistem sürümünü sağlamayan cihazlarda gerekiyor.
Uygulamanızın hangi cihazları içerdiğini tanımlayan birkaç manifest etiketi vardır uyumlu olabiliyor. Aşağıda en yaygın olanları belirtilmiştir.
<uses-feature>
<uses-feature>
öğesi, donanımı ve
en iyi uygulamaları paylaşacağız. Örneğin, uygulamanız temel
olmayan bir cihazda çalışırsanız pusulayı
sensörünü yükleyin:
<manifest ... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" /> ... </manifest>
Not: Uygulamanızı Chromebook'larda kullanıma sunmak istiyorsanız donanım ve yazılım özellikleriyle ilgili önemli sınırlamalar göz önünde bulundurmanız gerekir. Daha fazla bilgi için bkz. Şunun için uygulama manifesti uyumluluğu: Chromebook'lar.
<uses-sdk>
Birbirini izleyen her platform sürümü genellikle
önceki sürümde mevcuttur. Uygulamanızın kullandığı minimum sürümü belirtmek için
uyumlu değilse manifest dosyanız <uses-sdk>
etiketini içermelidir
ve minSdkVersion
özelliğini gönderin.
Ancak <uses-sdk>
öğesindeki özelliklerin şuna dikkat edin:
karşılık gelen mülkler tarafından geçersiz kılınır
build.gradle
dosyasıdır.
Dolayısıyla, Android Studio kullanıyorsanız minSdkVersion
ve
Bunun yerine burada targetSdkVersion
değerleri var:
Eski
android { defaultConfig { applicationId 'com.example.myapp' // Defines the minimum API level required to run the app. minSdkVersion 21 // Specifies the API level used to test the app. targetSdkVersion 33 ... } }
Kotlin
android { defaultConfig { applicationId = "com.example.myapp" // Defines the minimum API level required to run the app. minSdkVersion(21) // Specifies the API level used to test the app. targetSdkVersion(33) ... } }
build.gradle
dosyası hakkında daha fazla bilgi edinmek için derlemenizi nasıl yapılandıracağınızı öğrenin.
Farklı cihazlarda uygulamanızın desteğini beyan etme hakkında daha fazla bilgi edinmek için daha fazla bilgi için Cihaz uyumluluğu genel bakış bölümüne bakın.
Dosya kuralları
Bu bölümde, genel olarak tüm proje yönetimi süreçlerinin öğelerini ve özniteliklerini içermelidir.
- Öğeler
- Yalnızca
<manifest>
ve<application>
öğesi gerektirir. Her biri yalnızca bir kez geçmelidir. Diğer öğelerin çoğu sıfır veya daha fazla kez görülebilir. Ancak bazı manifest dosyasının kullanışlı olması için bunların mevcut olması gerekir.Tüm değerler, özellikler aracılığıyla ayarlanır, içindeki karakter verileri olarak değil. bir öğedir.
Aynı seviyedeki öğeler genellikle sıralanmaz. Örneğin,
<activity>
,<provider>
ve<service>
öğeleri herhangi bir sırada yerleştirilebilir. Bunun iki önemli istisnası vardır: kural:-
<activity-alias>
öğesi,<activity>
takma addır. -
<application>
öğesi,<manifest>
öğesi.
-
- Özellikler
- Teknik olarak tüm özellikler isteğe bağlıdır. Ancak birçok özellik
bir öğenin amacını gerçekleştirebilmesi için belirtilmelidir.
Gerçekten isteğe bağlı özellikler için referans belgeleri
varsayılan değerleri gösterir.
Bazı kök dizin özellikleri hariç,
<manifest>
. öğesi varsa tüm özellik adlarıandroid:
önekiyle başlar,android:alwaysRetainTaskState
gibi. Ön ek olduğu gibi, dokümanlarda genellikle ilişkilendirme modelinden bahsederken yazarsınız. - Birden çok değer
- Birden fazla değer belirtilebiliyorsa öğe neredeyse her zaman
tekrarlanmasına neden olur.
Örneğin, intent filtresi çeşitli işlemleri listeleyebilir:
<intent-filter ... > <action android:name="android.intent.action.EDIT" /> <action android:name="android.intent.action.INSERT" /> <action android:name="android.intent.action.DELETE" /> ... </intent-filter>
- Kaynak değerleri
- Bazı özelliklerde, kullanıcılara gösterilen değerler bulunur. Örneğin:
bir etkinlik veya uygulama simgenizin başlığı. Bu özelliklerin değeri
kullanıcının diline veya diğer cihaz yapılandırmalarına (ör.
cihazın piksel yoğunluğuna göre farklı bir simge boyutu sağlar), bu nedenle
değerleri, kod parçası olarak
manifest dosyası olarak kaydedin. Daha sonra gerçek değer,
kaynaklar hakkında daha fazla bilgi edinin.
Kaynaklar, aşağıdaki biçimde değerler olarak ifade edilir:
"@[package:]type/name"
Kaynak, kuruluşunuz tarafından sağlanıyorsa package adını çıkarabilirsiniz. (bir kitaplık bağımlılığı tarafından sağlanmış olması da buna dahildir, çünkü kitaplık kaynakları sizinkiyle birleştirilecektir). Geçerli olan tek paket adı ise
android
, Android'deki bir kaynağı kullanmak istediğinizde bahsedeceğim.type,
string
veyadrawable
, name ise belirli kaynağı tanımlayan addır. Örnek:<activity android:icon="@drawable/smallPic" ... >
Projenize nasıl kaynak ekleyeceğiniz hakkında daha fazla bilgi için Uygulama kaynaklarına genel bakış.
Bunun yerine, bir tema içinde tanımlanmış bir değeri uygulamak için ilk karakter
@
yerine?
olmalıdır:"?[package:]type/name"
- Dize değerleri
- Özellik değeri dize olduğunda çift ters eğik çizgi kullanın
Karakterlerden çıkış yapmak için (
\\
) (örneğin,\\n
) yeni satır veya Unicode karakteri için\\uxxxx
ekleyin.
Manifest öğeleri referansı
Aşağıdaki tabloda, geçerli tüm siteler için referans belgelerinin bağlantıları verilmiştir:
öğelerini AndroidManifest.xml
dosyasına koyabilirsiniz.
<action> |
Amaç filtresine bir işlem ekler. |
<activity> |
Bir etkinlik bileşeni tanımlar. |
<activity-alias> |
Bir etkinlik için takma ad bildirir. |
<application> |
Uygulamayı tanımlar. |
<category> |
Amaç filtresine kategori adı ekler. |
<compatible-screens> |
Uygulamanın uyumlu olduğu her ekran yapılandırmasını belirtir. |
<data> |
Amaç filtresine veri spesifikasyonu ekler. |
<grant-uri-permission> |
Üst içerik sağlayıcının erişim iznine sahip olduğu uygulama verilerinin alt kümelerini belirtir. |
<instrumentation> |
Bir uygulamanın sistemle etkileşimini izlemenize olanak tanıyan bir Instrumentation sınıfı tanımlar. |
<intent-filter> |
Bir etkinliğin, hizmetin veya yayın alıcısının yanıt verebileceği niyet türlerini belirtir. |
<manifest> |
AndroidManifest.xml dosyasının kök öğesi. |
<meta-data> |
Üst bileşene sağlanabilen ek, rastgele verilere sahip bir öğe için ad-değer çifti. |
<path-permission> |
İçerik sağlayıcı içindeki belirli bir veri alt kümesi için yolu ve gerekli izinleri tanımlar. |
<permission> |
Bu uygulamanın veya diğer uygulamaların belirli bileşenlerine veya özelliklerine erişimi sınırlamak için kullanılabilecek bir güvenlik izni tanımlar. |
<permission-group> |
İlgili izinlerin mantıksal gruplandırması için bir ad tanımlar. |
<permission-tree> |
İzin ağacı için temel adı tanımlar. |
<provider> |
Bir içerik sağlayıcı bileşeni tanımlar. |
<queries> |
Uygulamanızın erişmeyi hedeflediği diğer uygulama grubunu tanımlar. Daha fazla bilgi edinin paket görünürlüğüyle ilgili kılavuza göz atın filtre uygulama. |
<receiver> |
Bir yayın alıcı bileşeni tanımlar. |
<service> |
Bir hizmet bileşeni tanımlar. |
<supports-gl-texture>
| Uygulamanın desteklediği tek bir GL doku sıkıştırma biçimi bildirir. |
<supports-screens> |
Uygulamanızın desteklediği ekran boyutlarını beyan eder ve uygulamanızın desteklediğinden daha büyük ekranlar için ekran uyumluluğu modunu etkinleştirir. |
<uses-configuration> |
Uygulamanın gerektirdiği belirli giriş özelliklerini belirtir. |
<uses-feature> |
Uygulama tarafından kullanılan tek bir donanım veya yazılım özelliğini tanımlar. |
<uses-library> |
Uygulamanın bağlanması gereken paylaşılan kitaplığı belirtir. |
<uses-native-library> |
Uygulamanın bağlanması gereken, satıcı tarafından sağlanan yerel paylaşılan kitaplığı belirtir. |
<uses-permission> |
Uygulamanın doğru şekilde çalışması için kullanıcının vermesi gereken sistem iznini belirtir. |
<uses-permission-sdk-23> |
Bir uygulamanın, yalnızca Android 6.0 (API düzeyi 23) veya sonraki bir sürümü çalıştıran bir cihazda yüklü olması durumunda belirli bir izni istediğini belirtir. |
<uses-sdk> |
Bir uygulamanın, Android platformunun bir veya daha fazla sürümüyle uyumluluğunu, API düzeyindeki bir tam sayı aracılığıyla ifade etmenize olanak tanır. |
Sınırlar
Aşağıdaki etiketlerin, manifest dosyasındaki bulunma sayısı sınırı vardır:
Etiket Adı | Sınır |
---|---|
<package> |
1000 |
<meta-data> |
1000 |
<uses-library> |
1000 |
Aşağıdaki özelliklerin maksimum uzunlukları sınırlıdır:
Özellik | Sınır |
---|---|
name |
1024 |
versionName |
1024 |
host |
255 |
mimeType |
255 |
Örnek manifest dosyası
Aşağıdaki XML, AndroidManifest.xml
API'sinin
iki etkinlik var.
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0">
<!-- Beware that these values are overridden by the build.gradle file -->
<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="26" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- This name is resolved to com.example.myapp.MainActivity
based on the namespace property in the build.gradle file -->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DisplayMessageActivity"
android:parentActivityName=".MainActivity" />
</application>
</manifest>