แอนดรอยด์แอป (Android App) ถูกเขียนขึ้นด้วภาษาจาวา โดยมี Android SDK เป็นตัวแปลภาษา โดยผู้พัฒนาสามารถเพิ่มเติมข้อมูลที่อยู่ในรูปแบบไฟล์ลงไปใน app จากนั้นจะทำการแปลงไฟล์ไปเป็นไฟล์สำหรับติดตั้งที่เรียกว่า APKAPK: คือ Android package โดยมีนามสกุลของไฟล์เป็น .apk ทุกสิ่งทุกอย่างที่ผู้พัฒนาใส่เข้าไปใน app จะถูกบรรจุอยู่ในไฟล์ APK
เนื่องจาก Android OS เป็นระบบ multi-user แอนดรอยด์ app จึงทำงานแยกกันเป็นอิสระ
แต่ละ app จะมี UserID และแอนดรอยด์จะกำหนดสิทธิ์เข้าถึงไฟล์ที่อยู่ใน app ดังนั้น app อื่นจะเข้ามาใช้ไฟล์ไม่ได้
แต่ละ app จะมี virtual machine (VM) เป็นของตัวเอง แต่ละ app จึงทำงานแยกเป็นอิสระจากกัน
Native App คือ แอปที่ถูกเขียนขึ้นด้วยเครื่องมือและภาษาเฉพาะสำหรับระบบปฏิบัติการแอนดรอยด์ โดยแอปที่ถูกสร้างขึ้นนี้จะเรียกใช้องค์ประกอบต่างๆของระบบปฏิบัติการแอนดรอยด์ เช่น บัญชีเบอร์โทรศัพท์ กล้อง หรือระบบเซนเซอร์ต่างๆ ได้ โดยทั่วไป ภาษาที่ใช้ในการพัฒนา Native App คือภาษา JAVA โปรแกรมหลักที่ใช้ในการพัฒนาแอปคือ Android Studio
Web App คือแอปที่พัฒนาจากเวบไซต์มาแสดงผลบนมือถือ จริงๆแล้ว Web App ไม่ใช่แอป เพราะแอปประเภทนี้ได้ทำการดัดแปลงเวบไซต์ที่เขียนด้วย HTML5 หรือ PHP ให้สามารถแสดงผลบนระบบปฏิบัติการได้
Hybrid apps คือ แอปที่มีส่วนผสมทั้ง Native App และ Web App
Top level views คือ หน้าจอแรกหรือหน้าจอหลักของ app
Category views คือ หน้าจอที่เป็นเมนูหรือตัวเลือกเพื่อเข้าถึงหน้าที่จะแสดงรายละเอียด
Detail/edit view คือ หน้าจอที่ใช้แสดงรายละเอียด
หน้าจอหลักที่มีเพียงหน้าจอเดียว
โดยทั่วไป หน้าที่ของ Category View คือเป็นสารบัญหรือเมนูย่อย เพื่อลิงค์ไปยังหน้าต่างๆของแอป หน้าจอแบบ Category views สามารถสร้างได้หลายรูปแบบดังตัวอย่าง
Fix Tab
Spinner
Navigation Drawer
The detail view allows you to view and act on your data. The layout of the detail view depends on the data type being displayed, and therefore differs widely among apps.
องค์ประกอบของ app แบ่งออกเป็น 4 ส่วน โดยแต่ละส่วนมีจุดประสงค์และวงจรในการทำงานที่แตกต่างกันออกไป องค์ประกอบของ app ทั้ง 4 คือ:
Activity คือการกิจกรรมของ app ที่เกิดขึ้นบนหน้าจอ โดย Activity จะกำหนดการทำงานของหน้าจอ 1 หน้าจอ เช่น หากต้องการให้ app มีการทำงาน 2 หน้าจอ ได้แก่ หน้าจอสำหรับแสดงรายชื่อหนังสือและหน้าจอสำหรับแก้ไขชื่อหนังสือ ผู้พัฒนาต้องเขียน activity 2 activity เพื่อควบคุมการทำงานแต่ละหน้าจอ ถึงแม้ทั้ง 2 activity จะทำงานร่วมกันบน app เดียวกัน แต่ทั้ง 2 activity ก็ทำงานแยกขาดจากกันอย่างชัดเจน โดยแต่ละ activity สามารถติดต่อสื่อสารกันได้ และสามารถสั่งให้อีก activity หนึ่งเริ่มต้นทำงานได้ เช่น ที่หน้าจอสำหรับแสดงรายชื่อหนังสือ จะมีปุ่ม “แก้ไขชื่อหนังสือ” เมื่อกดปุ่มจะทำให้หน้าจอแก้ไขชื่อหนังสือทำงาน
Services จะทำงานคล้ายกันกับ activity ต่างกันคือ service จะทำงานอยู่ด้านหลัง (run background) และไม่ต้องมีหน้าจอก็สามารถทำงานได้ ยกตัวอย่างเช่น ผู้ใช้สามารถฟังเพลงได้ในระหว่างที่ใช้งาน Facebook app โดย service จะไม่ขัดจังหวะการทำงานของ activity ที่ผู้ใช้ติดต่ออยู่ service สามารถติดต่อกับ service ด้วยกันเองและ activity ด้วย
Content provider เป็นองค์ประกอบของ app ที่ใช้ในการจัดการการใช้งานข้อมูลร่วมกันของ app. ผู้พัฒนาสามารถบันทึกข้อมูลในรูปแบบของไฟล์ ฐานข้อมูล โดยสามารถเก็บข้อมูลหรือติดต่อข้อมูลที่อยู่บนระบบเครือข่ายหรือภายในเครื่องก็ได้ผ่านทาง content provider, app อื่นสามารถติดต่อหรือแม้กระทั่งแก้ไขข้อมูลของ app ได้ เช่น ผู้พัฒนาสามารถสร้าง app เพื่อดึงเอาข้อมูลจาก Contact ซึ่งเป็น app พื้นฐานของแอนดรอยด์มาแสดงผลได้ ทั้งยังสามารถแก้ไขข้อมูลที่ดึงมาจาก Contact ได้ด้วย
Broadcast receivers คือ องค์ประกอบของ app ที่ใช้ตอบรับ broadcast announcement ของระบบ broadcast หรือ การแจ้งข่าวสารจะถูกสร้างขึ้นจากระบบ เช่น การแจ้งเมื่อมีการปิดหน้าจอ การแจ้งเมื่อแบตเตอรี่ใกล้หมด นอกจากการแจ้งที่สร้างด้วยตัวแอนดรอยด์แล้ว app ก็สามารถแจ้งข่าวสารได้ด้วยเช่นกัน เช่น การแจ้งเมื่อมีการดาวน์โหลดรูปภาพโดย browser การแจ้งข่าวสารจาก app จะไม่ได้แจ้งที่หน้าจอ แต่จะใช้วิธีแจ้งข่าวสารผ่านทาง Notification โดยแสดงที่ notification bar
AndroidManifest.xml เป็นไฟล์ที่รวบรวมทุกองค์ประกอบของ app ไว้ เพื่อที่ระบบแอนดรอยด์จะได้รู้ว่า app นี้มีองค์ประกอบอะไรบ้าง โดย manifest ไฟล์นี้จะอยู่ที่ root ของ app project หน้าที่ของ manifest ไฟล์ ได้แก่:
หน้าที่หลักของ manifest file ก็คือการแจ้งให้ระบบแอนดรอยด์ทราบว่า app นี้องค์ประกอบอะไรบ้าง
Layout คือ ส่วนติดต่อผู้ใช้ หรือ User Interface (UI) นั่นเอง โดยจะแบ่งออกเป็น
Layout ของ Android Studio จะใช้ภาษา XML ในการควบคุม
Resources หมายถึง สิ่งต่างๆที่เราสามารถนำเข้าไปแสดงผลหรือใช้งานบนแอพที่สร้างด้วย Android Studio เช่น String, ฐานข้อมูล, รูปภาพ
Class R หรือ R.java จะเป็นคลาสที่ Android Studio สร้างขึ้นมาโดยอัตโนมัติเมื่อเราเพิ่ม layout, View หรือ resources ต่างๆเข้าไปในแอพ โดยแต่ละ object ที่เพิ่มเข้าไปจะมีหลายเลขประจำตัว(ID) ของตัวเอง