diff options
author | Andrew Solovay <asolovay@google.com> | 2017-03-08 17:38:01 -0800 |
---|---|---|
committer | Andrew Solovay <asolovay@google.com> | 2017-03-21 14:18:01 -0700 |
commit | 630509478612b560913f7f4e11f63e4ce5594274 (patch) | |
tree | 179ae85004ae041085cfe396429208275f8746cc /docs/html-intl/intl/id/guide/components/fundamentals.jd | |
parent | 7ba04df38cb5a797d81a2776ee227d126b7dd157 (diff) |
cherry-pick from nyc-mr1-dev docs: Removing Android docs from Gerrit
Original Change-Id: I5331cdc968be817ff70ba32dd03fce76493a6ab8
Test: make ds-docs
Android developer docs are now maintained in Piper, go/dac-source
Removing all files from Gerrit, since these files can cause build
errors if they refer to classes that are later removed (whence
bug b/35849713 ).
Gerrit already has readme files in these directories telling people
docs are not maintained here; these readmes will be a lot easier to
spot now.
Ran a doc build with these files deleted, and it seems to work fine,
so submitting this CL *shouldn't* break anything.
Bug: 35849713
Change-Id: Ic74c3f97f9620daf23543930a8b7ed1386f4d172
Diffstat (limited to 'docs/html-intl/intl/id/guide/components/fundamentals.jd')
-rw-r--r-- | docs/html-intl/intl/id/guide/components/fundamentals.jd | 480 |
1 files changed, 0 insertions, 480 deletions
diff --git a/docs/html-intl/intl/id/guide/components/fundamentals.jd b/docs/html-intl/intl/id/guide/components/fundamentals.jd deleted file mode 100644 index 2c925e98edb0..000000000000 --- a/docs/html-intl/intl/id/guide/components/fundamentals.jd +++ /dev/null @@ -1,480 +0,0 @@ -page.title=Dasar-Dasar Aplikasi -@jd:body - -<div id="qv-wrapper"> -<div id="qv"> - -<h2>Dalam dokumen ini</h2> -<ol> -<li><a href="#Components">Komponen Aplikasi</a> - <ol> - <li><a href="#ActivatingComponents">Mengaktifkan komponen</a></li> - </ol> -</li> -<li><a href="#Manifest">File Manifes</a> - <ol> - <li><a href="#DeclaringComponents">Mendeklarasikan komponen</a></li> - <li><a href="#DeclaringRequirements">Mendeklarasikan kebutuhan aplikasi</a></li> - </ol> -</li> -<li><a href="#Resources">Sumber Daya Aplikasi</a></li> -</ol> -</div> -</div> - -<p>Aplikasi Android ditulis dalam bahasa pemrograman Java. Android SDK Tools mengkompilasi -kode Anda—bersama data dan file sumber daya —ke dalam APK: <i>Paket Android</i>, -yaitu file arsip berekstensi {@code .apk}. Satu file APK berisi semua konten -aplikasi Android dan merupakan file yang digunakan perangkat berbasis Android untuk menginstal aplikasi.</p> - -<p>Setelah diinstal di perangkat, setiap aplikasi Android tinggal di sandbox keamanannya sendiri: </p> - -<ul> - <li>Sistem operasi Android merupakan sistem Linux multi-pengguna yang di dalamnya setiap -aplikasi adalah pengguna berbeda.</li> - -<li>Secara default, sistem menetapkan ID pengguna Linux unik kepada setiap aplikasi (ID ini hanya - digunakan oleh sistem dan tidak diketahui aplikasi). Sistem menetapkan izin -bagi semua file dalam aplikasi sehingga hanya ID pengguna yang diizinkan yang bisa mengaksesnya. </li> - -<li>Setiap proses memiliki mesin virtual (VM) sendiri, sehingga kode aplikasi yang berjalan secara terisolasi dari -aplikasi lainnya.</li> - -<li>Secara default, setiap aplikasi berjalan dalam proses Linux-nya sendiri. Android memulai proses -bila ada komponen aplikasi yang perlu dijalankan, kemudian mematikan proses bila tidak lagi diperlukan -atau bila sistem harus memulihkan memori untuk digunakan aplikasi lain.</li> -</ul> - -<p>Dengan cara ini, sistem Android mengimplementasikan <em>prinsip privilese minim</em>. Ini berarti, -secara default aplikasi hanya memiliki akses ke komponen yang diperlukannya untuk melakukan pekerjaannya dan -tidak lebih dari itu. Hal ini menghasilkan lingkungan yang sangat aman sehingga aplikasi tidak bisa mengakses bagian -sistem bila tidak diberi izin.</p> - -<p>Akan tetapi, ada beberapa cara bagi aplikasi untuk berbagi data dengan aplikasi lain dan bagi aplikasi -untuk mengakses layanan sistem:</p> - -<ul> - <li>Dua aplikasi bisa diatur untuk menggunakan ID pengguna Linux yang sama, -dalam hal ini keduanya bisa saling mengakses file masing-masing. Untuk menghemat sumber daya sistem, aplikasi dengan ID -pengguna yang sama juga bisa diatur agar berjalan dalam proses Linux yang sama dan menggunakan VM yang sama ( -aplikasi juga harus ditandatangani dengan sertifikat yang sama).</li> - <li>Aplikasi bisa meminta izin akses ke data perangkat seperti kontak -pengguna, pesan SMS, penyimpanan lepas-pasang (kartu SD), kamera, Bluetooth, dan lainnya. Semua -izin aplikasi harus diberikan oleh pengguna saat menginstal.</li> -</ul> - -<p>Hal tersebut mencakup dasar-dasar tentang cara aplikasi Android berada di dalam sistem. Bagian dokumen -selanjutnya memperkenalkan Anda pada:</p> -<ul> - <li>Komponen kerangka kerja inti yang mendefinisikan aplikasi.</li> - <li>File manifes tempat Anda mendeklarasikan komponen dan fitur yang diperlukan perangkat -untuk aplikasi.</li> - <li>Sumber daya yang terpisah dari kode aplikasi dan memungkinkan -aplikasi mengoptimalkan perilakunya untuk beragam konfigurasi perangkat.</li> -</ul> - - - -<h2 id="Components">Komponen Aplikasi</h2> - -<p>Komponen aplikasi adalah blok pembangun penting dari aplikasi Android. -Setiap komponen merupakan titik berbeda yang digunakan sistem untuk memasuki aplikasi. Tidak semua komponen -merupakan titik masuk sebenarnya bagi pengguna dan sebagian saling bergantung, namun masing-masing komponen tersedia -sebagai kesatuan sendiri dan memainkan peran tertentu—masing-masing merupakan -blok pembangun unik yang mendefinisikan perilaku aplikasi secara keseluruhan.</p> - -<p>Ada empat macam tipe komponen aplikasi. Setiap tipe memiliki kegunaan tersendiri -dan daur hidupnya sendiri yang mendefinisikan cara komponen dibuat dan dimusnahkan.</p> - -<p>Berikut ini empat tipe komponen aplikasi:</p> - -<dl> - -<dt><b>Aktivitas</b></dt> - -<dd>Sebuah <i>aktivitas</i> mewakili satu layar dengan antarmuka pengguna. Misalnya, -aplikasi email mungkin memiliki satu aktivitas yang menampilkan daftar email -baru, aktivitas lain untuk menulis email, dan aktivitas satunya lagi untuk membaca email. Walaupun -semua aktivitas bekerja sama untuk membentuk pengalaman pengguna yang kohesif dalam aplikasi email, -masing-masing tidak saling bergantung. Karenanya, aplikasi berbeda bisa memulai -salah satu aktivitas ini (jika aplikasi email mengizinkannya). Misalnya, aplikasi kamera bisa memulai -aktivitas dalam aplikasi email yang membuat email baru agar pengguna bisa berbagi gambar. - -<p>Aktivitas diimplementasikan sebagai subkelas {@link android.app.Activity} dan Anda bisa mengetahui selengkapnya -tentang hal ini dalam panduan pengembang <a href="{@docRoot}guide/components/activities.html">Aktivitas</a> -.</p> -</dd> - - -<dt><b>Layanan</b></dt> - -<dd>Sebuah <i>layanan</i> adalah komponen yang berjalan di latar belakang untuk melakukan -operasi yang berjalan lama atau untuk melakukan pekerjaan bagi proses jarak jauh. Layanan -tidak menyediakan antarmuka pengguna. Misalnya, sebuah layanan bisa memutar musik di latar belakang sementara -pengguna berada dalam aplikasi lain, atau layanan bisa menarik data lewat jaringan tanpa -memblokir interaksi pengguna dengan aktivitas. Komponen lain, seperti aktivitas, bisa memulai -layanan dan membiarkannya berjalan atau mengikat layanan untuk berinteraksi dengannya. - -<p>Layanan diimplementasikan sebagai subkelas {@link android.app.Service} dan Anda bisa mengetahui selengkapnya -tentang hal ini dalam panduan -pengembang <a href="{@docRoot}guide/components/services.html">Layanan</a>.</p> -</dd> - - -<dt><b>Penyedia konten</b></dt> - -<dd>Sebuah <i>penyedia konten</i> mengelola seperangkat data-bersama aplikasi. Anda bisa menyimpan data -dalam sistem file, database SQLite, di web, atau lokasi penyimpanan permanen lainnya -yang bisa diakses aplikasi. Melalui penyedia konten, aplikasi lain bisa melakukan query atau bahkan -memodifikasi data (jika penyedia konten mengizinkannya). Misalnya, sistem Android menyediakan penyedia -konten yang mengelola informasi kontak pengguna. Karenanya, setiap aplikasi -dengan izin yang sesuai bisa melakukan query mengenai bagian dari penyedia konten (seperti {@link -android.provider.ContactsContract.Data}) untuk membaca dan menulis informasi tentang orang tertentu. - -<p>Penyedia konten juga berguna untuk membaca dan menulis data privat ke aplikasi Anda -dan tidak dibagikan. Misalnya, aplikasi contoh <a href="{@docRoot}resources/samples/NotePad/index.html">Note Pad</a> menggunakan -penyedia konten untuk menyimpan catatan.</p> - -<p>Penyedia konten diimplementasikan sebagai subkelas {@link android.content.ContentProvider} -dan harus mengimplementasikan seperangkat standar API yang memungkinkan aplikasi -lain melakukan transaksi. Untuk informasi selengkapnya, lihat panduan pengembang -<a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Konten</a>.</p> -</dd> - - -<dt><b>Penerima siaran</b></dt> - -<dd>Sebuah <i>penerima siaran</i> adalah komponen yang merespons pengumuman siaran dalam lingkup -sistem. Banyak siaran yang berasal dari sistem—misalnya, siaran yang mengumumkan bahwa -layar telah dimatikan, baterai lemah, atau gambar telah direkam. -Aplikasi juga bisa memulai siaran—misalnya untuk menginformasikan ke -aplikasi lain bahwa sebagian data telah diunduh ke perangkat dan bisa digunakan aplikasi lain tersebut. Walaupun penerima -siaran tidak menampilkan antarmuka pengguna, penerima bisa <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">membuat pemberitahuan baris status</a> -untuk memberi tahu pengguna kapan kejadian siaran dilakukan. Meskipun penerima siaran umumnya cuma menjadi -"gerbang" untuk komponen lain dan dimaksudkan untuk melakukan pekerjaan dalam jumlah sangat minim. Misalnya -, penerima siaran bisa menjalankan layanan untuk melakukan beberapa pekerjaan berdasarkan kejadian. - -<p>Penerima siaran diimplementasikan sebagai subkelas {@link android.content.BroadcastReceiver} -dan setiap siaran dikirim sebagai objek {@link android.content.Intent}. Untuk informasi selengkapnya, -lihat kelas {@link android.content.BroadcastReceiver}.</p> -</dd> - -</dl> - - - -<p>Aspek unik dari desain sistem Android adalah aplikasi mana pun bisa memulai -komponen aplikasi lain. Misalnya, jika Anda menginginkan pengguna mengambil -foto dengan kamera perangkat, bisa saja aplikasi lain yang melakukannya dan aplikasi -Anda bisa menggunakannya, sebagai ganti mengembangkan aktivitas sendiri untuk mengambil foto. Anda tidak -harus menyatukan atau bahkan menautkan ke kode dari aplikasi kamera. -Sebagai gantinya, Anda tinggal memulai aktivitas di aplikasi kamera yang akan mengambil -foto. Bila selesai, foto akan dikembalikan ke aplikasi sehingga Anda bisa menggunakannya. Bagi pengguna, -kamera seakan menjadi bagian dari aplikasi Anda.</p> - -<p>Saat sistem memulai komponen, sistem akan memulai proses untuk aplikasi itu (jika -belum berjalan) dan membuat instance kelas yang diperlukan untuk komponen. Misalnya, jika aplikasi Anda -memulai aktivitas dalam aplikasi kamera yang mengambil foto, aktivitas itu akan -berjalan dalam proses yang dimiliki oleh aplikasi kamera, bukan dalam proses aplikasi Anda. -Karenanya, tidak seperti aplikasi di sebagian besar sistem lain, aplikasi Android tidak memiliki titik -masuk tunggal (misalnya tidak ada fungsi {@code main()}).</p> - -<p>Karena sistem menjalankan setiap aplikasi dalam proses terpisah dengan izin file yang -membatasi akses ke aplikasi lain, aplikasi Anda tidak bisa langsung mengaktifkan komponen dari aplikasi lain. Akan tetapi, sistem -Android bisa melakukannya. Jadi, untuk mengaktifkan -komponen dalam aplikasi lain, Anda harus mengirim pesan ke sistem yang menetapkan <em>intent</em> Anda untuk memulai -komponen tertentu. Selanjutnya sistem akan mengaktifkan komponen untuk Anda.</p> - - -<h3 id="ActivatingComponents">Mengaktifkan Komponen</h3> - -<p>Tiga dari empat tipe komponen—aktivitas, layanan, dan -penerima siaran—diaktifkan oleh pesan asinkron yang disebut <em>intent</em>. -Intent saling mengikat setiap komponen saat runtime (Anda bisa menganggapnya -sebagai pembawa pesan yang meminta tindakan dari komponen lain), baik komponen itu milik aplikasi Anda -atau milik aplikasi lain.</p> - -<p>Intent dibuat dengan objek {@link android.content.Intent}, yang mendefinisikan pesan untuk -mengaktifkan komponen tertentu atau komponen <em>tipe</em> komponen tertentu—masing-masing intent -bisa eksplisit atau implisit.</p> - -<p>Untuk aktivitas dan layanan, intent mendefinisikan tindakan yang akan dilakukan (misalnya, untuk "melihat" atau -"mengirim" sesuatu) dan mungkin menetapkan URI data untuk ditindaklanjuti (salah satu hal yang mungkin perlu diketahui -oleh komponen yang akan dimulai). Misalnya, intent mungkin menyampaikan permintaan suatu -aktivitas untuk menampilkan gambar atau membuka halaman web. Dalam beberapa kasus, Anda bisa memulai -aktivitas untuk menerima hasil, dalam hal ini, aktivitas juga akan mengembalikan hasil -dalam {@link android.content.Intent} (misalnya Anda bisa mengeluarkan intent agar -pengguna bisa memilih kontak pribadi dan memintanya dikembalikan kepada Anda—intent yang dikembalikan menyertakan URI yang -menunjuk ke kontak yang dipilih).</p> - -<p>Untuk penerima siaran, intent hanya mendefinisikan -pengumuman yang sedang disiarkan (misalnya, siaran untuk menunjukkan baterai perangkat hampir habis -hanya menyertakan string tindakan yang menunjukkan "baterai hampir habis").</p> - -<p>Tipe komponen lainnya dan penyedia konten, tidak diaktifkan oleh intent. Melainkan -diaktifkan saat ditargetkan oleh permintaan dari {@link android.content.ContentResolver}. Resolver -konten menangani semua transaksi langsung dengan penyedia konten sehingga komponen yang melakukan -transaksi dengan penyedia tidak perlu dan sebagai gantinya memanggil metode pada objek {@link -android.content.ContentResolver}. Ini membuat lapisan abstraksi antara penyedia -konten dan komponen yang meminta informasi (demi keamanan).</p> - -<p>Ada beberapa metode terpisah untuk mengaktifkan masing-masing tipe komponen:</p> -<ul> - <li>Anda bisa memulai aktivitas (atau memberinya pekerjaan baru) dengan -meneruskan {@link android.content.Intent} ke {@link android.content.Context#startActivity -startActivity()} atau {@link android.app.Activity#startActivityForResult startActivityForResult()} -(bila Anda ingin aktivitas mengembalikan hasil).</li> - <li>Anda bisa memulai layanan (atau memberikan instruksi baru ke layanan yang sedang berlangsung) dengan -meneruskan {@link android.content.Intent} ke {@link android.content.Context#startService -startService()}. Atau Anda bisa mengikat ke layanan dengan meneruskan {@link android.content.Intent} ke -{@link android.content.Context#bindService bindService()}.</li> - <li>Anda bisa memulai siaran dengan meneruskan {@link android.content.Intent} ke metode seperti -{@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}, {@link -android.content.Context#sendOrderedBroadcast(Intent, String) sendOrderedBroadcast()}, atau {@link -android.content.Context#sendStickyBroadcast sendStickyBroadcast()}.</li> - <li>Anda bisa melakukan query ke penyedia konten dengan memanggil {@link -android.content.ContentProvider#query query()} pada {@link android.content.ContentResolver}.</li> -</ul> - -<p>Untuk informasi selengkapnya tentang menggunakan intent, lihat dokumen <a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter - Intent</a>. Informasi selengkapnya tentang mengaktifkan komponen -tertentu juga tersedia dalam dokumen berikut: <a href="{@docRoot}guide/components/activities.html">Aktivitas</a>, <a href="{@docRoot}guide/components/services.html">Layanan</a>, {@link -android.content.BroadcastReceiver} dan <a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Konten</a>.</p> - - -<h2 id="Manifest">File Manifes</h2> - -<p>Sebelum sistem Android bisa memulai komponen aplikasi, sistem harus mengetahui -keberadaan komponen dengan membaca file {@code AndroidManifest.xml} aplikasi (file -"manifes"). Aplikasi Anda harus mendeklarasikan semua komponennya dalam file ini, yang harus menjadi akar -dari direktori proyek aplikasi.</p> - -<p>Manifes melakukan banyak hal selain mendeklarasikan komponen aplikasi, -seperti:</p> -<ul> - <li>Mengidentifikasi izin pengguna yang diperlukan aplikasi, seperti akses Internet atau -akses-baca ke kontak pengguna.</li> - <li>Mendeklarasikan <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level</a> - minimum yang diperlukan aplikasi, berdasarkan API yang digunakan aplikasi.</li> - <li>Mendeklarasikan fitur perangkat keras dan perangkat lunak yang diperlukan aplikasi, seperti kamera, -layanan Bluetooth, atau layar multisentuh.</li> - <li>Pustaka API aplikasi perlu ditautkan (selain -API kerangka kerja Android), seperti pustaka -<a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps.</a></li> - <li>Dan lainnya</li> -</ul> - - -<h3 id="DeclaringComponents">Mendeklarasikan komponen</h3> - -<p>Tugas utama manifes adalah menginformasikan komponen aplikasi pada sistem. Misalnya, -file manifes bisa mendeklarasikan aktivitas sebagai berikut: </p> - -<pre> -<?xml version="1.0" encoding="utf-8"?> -<manifest ... > - <application android:icon="@drawable/app_icon.png" ... > - <activity android:name="com.example.project.ExampleActivity" - android:label="@string/example_label" ... > - </activity> - ... - </application> -</manifest></pre> - -<p>Dalam elemen <code><a -href="{@docRoot}guide/topics/manifest/application-element.html"><application></a></code> -, atribut {@code android:icon} menunjuk ke sumber daya untuk ikon yang mengidentifikasi -aplikasi.</p> - -<p>Dalam elemen <code><a -href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code>, -atribut {@code android:name} menetapkan nama kelas yang sepenuhnya memenuhi syarat subkelas {@link -android.app.Activity} dan atribut {@code android:label} menetapkan string yang akan -digunakan sebagai label yang terlihat oleh pengguna untuk aktivitas tersebut.</p> - -<p>Anda harus mendeklarasikan semua komponen aplikasi dengan cara ini:</p> -<ul> - <li>Elemen <code><a -href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> untuk -aktivitas</li> - <li>Elemen <code><a -href="{@docRoot}guide/topics/manifest/service-element.html"><service></a></code> untuk -layanan</li> - <li>Elemen <code><a -href="{@docRoot}guide/topics/manifest/receiver-element.html"><receiver></a></code> untuk -penerima siaran</li> - <li>Elemen <code><a -href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></a></code> untuk -penyedia konten</li> -</ul> - -<p>Aktivitas, layanan, dan penyedia konten yang Anda sertakan dalam kode sumber, namun tidak -dideklarasikan dalam manifes, tidak akan terlihat pada sistem dan, akibatnya, tidak pernah bisa berjalan. Akan tetapi, -penerima siaran -bisa dideklarasikan dalam manifes atau dibuat secara dinamis dalam kode (sebagai objek -{@link android.content.BroadcastReceiver}) dan didaftarkan pada sistem dengan memanggil -{@link android.content.Context#registerReceiver registerReceiver()}.</p> - -<p>Untuk informasi selengkapnya tentang cara menstrukturkan file manifes untuk aplikasi Anda, -lihat dokumentasi <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">File AndroidManifest.xml</a>. </p> - - - -<h3 id="DeclaringComponentCapabilities">Mendeklarasikan kemampuan komponen</h3> - -<p>Seperti telah dibahas di atas, dalam <a href="#ActivatingComponents">Mengaktifkan Komponen</a>, Anda bisa menggunakan -{@link android.content.Intent} untuk memulai aktivitas, layanan, dan penerima siaran. Anda bisa -melakukannya dengan menamai komponen sasaran secara eksplisit (menggunakan nama kelas komponen) dalam intent. Akan tetapi, -kemampuan intent sebenarnya ada pada konsep <em>intent implisit</em>. Intent implisit -cuma menjelaskan tipe tindakan yang akan dilakukan (dan, secara opsional, data tempat Anda ingin -melakukan tindakan) dan memungkinkan sistem untuk menemukan komponen pada perangkat yang bisa melakukan -tindakan tersebut dan memulainya. Jika ada banyak komponen yang bisa melakukan tindakan yang dijelaskan oleh intent, -maka pengguna bisa memilih komponen yang akan digunakan.</p> - -<p>Cara sistem mengidentifikasi komponen yang bisa merespons intent adalah dengan membandingkan -intent yang diterima dengan <i>filter intent</i> yang disediakan dalam file manifes aplikasi lainnya pada -perangkat.</p> - -<p>Bila mendeklarasikan aktivitas dalam manifes aplikasi, secara opsional Anda bisa menyertakan -filter intent yang mendeklarasikan kemampuan aktivitas agar bisa merespons intent dari -aplikasi lain. Anda bisa mendeklarasikan filter intent untuk komponen dengan -menambahkan elemen <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code -<intent-filter>}</a> sebagai anak elemen deklarasi komponen.</p> - -<p>Misalnya, jika Anda telah membangun aplikasi email dengan aktivitas untuk menulis email baru, Anda bisa -mendeklarasikan filter intent untuk merespons intent "kirim" (untuk mengirim email baru) seperti ini:</p> -<pre> -<manifest ... > - ... - <application ... > - <activity android:name="com.example.project.ComposeEmailActivity"> - <intent-filter> - <action android:name="android.intent.action.SEND" /> - <data android:type="*/*" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </activity> - </application> -</manifest> -</pre> - -<p>Kemudian, jika aplikasi lain membuat intent dengan tindakan {@link -android.content.Intent#ACTION_SEND} dan meneruskannya ke {@link android.app.Activity#startActivity -startActivity()}, sistem bisa memulai aktivitas Anda agar pengguna bisa menulis draf dan mengirim -email.</p> - -<p>Untuk informasi selengkapnya tentang membuat filter intent, lihat dokumen <a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter Intent</a>. -</p> - - - -<h3 id="DeclaringRequirements">Mendeklarasikan kebutuhan aplikasi</h3> - -<p>Ada berbagai macam perangkat yang didukung oleh Android dan tidak -semuanya menyediakan fitur dan kemampuan yang sama. Agar aplikasi Anda tidak dihapus pada perangkat yang tidak memiliki -fitur yang diperlukan aplikasi, Anda harus jelas mendefinisikan profil mengenai -tipe perangkat yang didukung aplikasi dengan mendeklarasikan kebutuhan perangkat dan perangkat lunak dalam file -manifes. Kebanyakan deklarasi ini hanya bersifat informasi dan sistem tidak -membacanya, namun layanan eksternal seperti Google Play akan membacanya untuk menyediakan -penyaringan bagi pengguna saat mereka mencari aplikasi dari perangkat.</p> - -<p>Misalnya, jika aplikasi memerlukan kamera dan menggunakan API yang disediakan dalam Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level</a> 7) -, Anda harus mendeklarasikannya sebagai kebutuhan dalam file manifes seperti ini:</p> - -<pre> -<manifest ... > - <uses-feature android:name="android.hardware.camera.any" - android:required="true" /> - <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" /> - ... -</manifest> -</pre> - -<p>Sekarang, perangkat yang <em>tidak</em> memiliki kamera dan menggunakan -Android versi <em>lebih rendah</em> dari 2.1 tidak bisa menginstal aplikasi Anda dari Google Play.</p> - -<p>Akan tetapi, bisa juga mendeklarasikan bahwa aplikasi Anda menggunakan kamera, namun tidak -<em>mengharuskannya</em>. Dalam hal itu, aplikasi Anda harus mengatur atribut <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a> - ke {@code "false"} dan memeriksa saat runtime apakah -perangkat memiliki kamera dan menonaktifkan setiap fitur kamera yang sesuai.</p> - -<p>Informasi selengkapnya tentang cara mengelola kompatibilitas aplikasi dengan -perangkat yang berbeda disediakan dalam dokumen -<a href="{@docRoot}guide/practices/compatibility.html">Kompatibilitas Perangkat</a>.</p> - - - -<h2 id="Resources">Sumber Daya Aplikasi</h2> - -<p>Aplikasi Android tidak hanya terdiri dari kode—Aplikasi memerlukan sumber daya yang -terpisah dari kode sumber, seperti gambar, file audio, dan apa saja yang berkaitan dengan -presentasi visual dari aplikasi. Misalnya, Anda harus mendefinisikan animasi, menu, gaya, warna, -dan layout antarmuka pengguna aktivitas dengan file XML. Penggunaan sumber daya aplikasi -mempermudah pembaruan berbagai karakteristik aplikasi Anda tanpa memodifikasi kode dan—dengan menyediakan -seperangkat sumber daya alternatif—memungkinkan Anda mengoptimalkan aplikasi untuk berbagai konfigurasi -perangkat berbeda (seperti bahasa dan ukuran layar yang berbeda).</p> - -<p>Untuk setiap sumber daya yang Anda sertakan dalam proyek Android, alat bawaan SDK akan mendefinisikan ID integer -unik, yang bisa Anda gunakan untuk mengacu sumber daya dari kode aplikasi atau dari sumber daya lainnya yang -didefinisikan dalam XML. Misalnya, jika aplikasi berisi file gambar bernama {@code -logo.png} (disimpan dalam direktori {@code res/drawable/}), alat SDK akan menghasilkan ID sumber daya -bernama {@code R.drawable.logo}, yang bisa Anda gunakan untuk mengacu gambar dan memasukkannya dalam -antarmuka pengguna.</p> - -<p>Salah satu aspek paling penting dari penyediaan sumber daya yang terpisah dari -kode sumber adalah kemampuan Anda menyediakan sumber daya alternatif untuk konfigurasi perangkat -yang berbeda. Misalnya, dengan mendefinisikan string UI dalam XML, Anda bisa menerjemahkan string ke dalam -bahasa lain dan menyimpan string itu dalam file terpisah. Kemudian, berdasarkan <em>qualifier</em> -bahasa yang ditambahkan ke nama direktori sumber daya (seperti {@code res/values-fr/} untuk nilai -string Prancis) dan pengaturan bahasa pengguna, sistem Android akan menerapkan string bahasa yang sesuai -untuk UI Anda.</p> - -<p>Android mendukung banyak <em>qualifier</em> berbeda untuk sumber daya alternatif Anda. Qualifier -adalah string pendek yang Anda sertakan dalam nama direktori sumber -daya untuk mendefinisikan konfigurasi perangkat yang harus digunakan sumber daya tersebut. Contoh lainnya, -Anda harus sering membuat layout berbeda untuk aktivitas, bergantung pada -orientasi layar dan ukuran perangkat. Misalnya, saat layar perangkat dalam orientasi -tegak, Anda mungkin ingin layout tombolnya vertikal, tetapi saat layar dalam orientasi -mendatar, tombolnya harus sejajar horizontal. Untuk mengubah layout -sesuai orientasi, Anda bisa mendefinisikan dua layout berbeda dan menerapkan qualifier yang -tepat untuk setiap nama direktori layout. Kemudian, sistem secara otomatis menerapkan -layout yang tepat sesuai dengan orientasi perangkat saat ini.</p> - -<p>Untuk informasi selengkapnya tentang berbagai jenis sumber daya yang bisa disertakan dalam aplikasi dan cara -membuat sumber daya alternatif untuk konfigurasi perangkat berbeda, bacalah <a href="{@docRoot}guide/topics/resources/providing-resources.html">Menyediakan Sumber Daya</a>.</p> - - - -<div class="next-docs"> -<div class="col-6"> - <h2 class="norule">Teruskan membaca tentang:</h2> - <dl> - <dt><a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter Intent</a> - </dt> - <dd>Informasi tentang cara menggunakan API {@link android.content.Intent} untuk - mengaktifkan komponen aplikasi, seperti aktivitas dan layanan, dan cara menyediakan komponen aplikasi - untuk digunakan oleh aplikasi lain.</dd> - <dt><a href="{@docRoot}guide/components/activities.html">Aktivitas</a></dt> - <dd>Informasi tentang cara membuat instance kelas {@link android.app.Activity}, -yang menyediakan layar tersendiri dalam aplikasi bersama antarmuka pengguna.</dd> - <dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">Menyediakan Sumber Daya</a></dt> - <dd>Informasi tentang cara aplikasi Android disusun untuk memisahkan sumber daya aplikasi dari -kode aplikasi, termasuk cara Anda bisa menyediakan sumber daya alternatif untuk -konfigurasi perangkat tertentu. - </dd> - </dl> -</div> -<div class="col-6"> - <h2 class="norule">Anda juga mungkin tertarik dengan:</h2> - <dl> - <dt><a href="{@docRoot}guide/practices/compatibility.html">Kompatibilitas Perangkat</a></dt> - <dd>Informasi tentang cara kerja Android pada berbagai tipe perangkat dan -pengenalan mengenai cara mengoptimalkan aplikasi untuk setiap perangkat atau membatasi ketersediaan aplikasi Anda untuk -perangkat berbeda.</dd> - <dt><a href="{@docRoot}guide/topics/security/permissions.html">Izin Sistem</a></dt> - <dd>Informasi tentang cara Android membatasi akses aplikasi pada API tertentu dengan sistem izin -yang mengharuskan persetujuan pengguna agar aplikasi dapat menggunakan API tersebut.</dd> - </dl> -</div> -</div> - |