CĂN BẢN
INTENTS
GIAO DIỆN
CÁC KHÁI NIỆM
VÍ DỤ
TÀI LIỆU
HỌC LẬP TRÌNH ANDROID
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

File AndroidManifest.xml trong Android

Nếu AndroidManifest.xml của ứng dụng không được thiết lập chính xác thì bạn có thể gặp phải rất nhiều sự cố – ​​có thể hệ thống Android sẽ không thể định vị tất cả Activity và Services của bạn. Tại sao lại như thế?

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong bài viết này, freetuts sẽ giới thiệu và phân tích cho các bạn về file AndroidManifest trong Android, giúp các bạn hiểu hơn về bản chất của file AndroidManifest để xử lí các sự cố nếu có gặp phải do bắt nguồn từ file này.

Giới thiệu về AndroidManifest.xml trong Android

AndroidManifest.xml là file quan trọng nhất trong một ứng dụng Android, nó cung cấp thông tin về ứng dụng cho hệ thống Android, bao gồm tên ứng dụng, biểu tượng ứng dụng, phiên bản ứng dụng, quyền truy cập và các thành phần khác của ứng dụng.

Trong file AndroidManifest.xml, các phần quan trọng được định nghĩa bởi các thẻ.

Bài viết này được đăng tại [free tuts .net]

Ví dụ: Thẻ <manifest> chứa thông tin chung về ứng dụng như tên package, phiên bản tối thiểu của hệ điều hành Android được yêu cầu, tên ứng dụng, thẻ <activity> định nghĩa các activity...

Nếu bạn tạo một project Android bằng Android Studio, thì một file Manifest duy nhất sẽ tự động được tạo cho bạn, sau đó điền tất cả các yếu tố cần thiết để project này chạy trên thiết bị Android.

android studio manifest 768x507 jpg

Đoạn code dưới đây là file Manifest được tự động tạo bởi "Empty Activity" của project trong Android Studio.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.jessicathornsby.myapplication">

   <application
       android:allowBackup="true"
       android:icon="@mipmap/ic_launcher"
       android:label="@string/app_name"
       android:roundIcon="@mipmap/ic_launcher_round"
       android:supportsRtl="true"
       android:theme="@style/AppTheme">
       <activity android:name=".MainActivity">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
   </application>

</manifest>

Hầu hết các mục Manifest bao gồm một phần tử và một thuộc tính.Nếu bạn cần chỉ định nhiều thuộc tính cho cùng một phần tử, thì thông thường bạn sẽ lặp lại phần tử đó với các thuộc tính khác thay vì thêm nhiều thuộc tính vào cùng một phần tử. Ví dụ ở đây, chúng tôi đang khai báo nhiều thuộc tính cho phần tử <uses-feature>:

<uses-feature android:name="android.hardware.sensor.proximity"
   android:required="true" />

<uses-feature android:name="android.hardware.sensor.relative_humidity"
   android:required="true" />

<uses-feature android:name="android.hardware.sensor.heartrate"
   android:required="true" />

Bây giờ chúng ta sẽ phân tích kỹ hơn về bản chất của file AndroidManifest.xml trong Android.

Phân tích các thành phần trong file AndroidManifest.xml

  • Package Name: Định nghĩa tên package của ứng dụng. Nó phải là duy nhất trên toàn hệ thống Android.
  • Thẻ Application: Định nghĩa các thuộc tính chung cho toàn bộ ứng dụng, bao gồm tên, biểu tượng, phiên bản, quyền truy cập,...
  • Thẻ Activity : Định nghĩa một hoạt động của ứng dụng. Mỗi hoạt động thường có một giao diện người dùng riêng, và được sử dụng để thực hiện một số chức năng cụ thể của ứng dụng.
  • Thẻ Service : Định nghĩa một dịch vụ của ứng dụng. Dịch vụ là một thành phần không có giao diện người dùng, được sử dụng để thực hiện các tác vụ nền, không cần tương tác với người dùng.
  • Thẻ BroadcastReceiver : Định nghĩa một BroadcastReceiver. BroadcastReceiver là một thành phần được sử dụng để nhận các thông báo từ hệ thống hoặc ứng dụng khác, và thực hiện các tác vụ liên quan.
  • Thẻ Content Provider : Định nghĩa một Content Provider. Content Provider là một thành phần được sử dụng để quản lý và cung cấp dữ liệu cho các ứng dụng khác.
  • Thẻ Permission : Định nghĩa các quyền truy cập mà ứng dụng yêu cầu từ hệ thống. Quyền truy cập có thể được cấp cho các tài nguyên như camera, microphone, địa chỉ,...
  • Thẻ Uses-feature : Định nghĩa các tính năng phần cứng hoặc phần mềm mà ứng dụng yêu cầu để hoạt động. Ví dụ như camera, màn hình cảm ứng,...
  • Thẻ Intent Filter : Định nghĩa các bộ lọc Intent cho các thành phần của ứng dụng. Bộ lọc Intent được sử dụng để xác định các loại Intent mà thành phần có thể xử lý, và khi nếu có một Intent phù hợp, hệ thống sẽ gửi nó đến thành phần đó để xử lý.
  • Thẻ Metadata : Định nghĩa các thông tin bổ sung về thành phần, nhưng không ảnh hưởng đến việc hoạt động của nó. Ví dụ như thông tin về đối tác của ứng dụng,...
  • Thẻ Application Theme: Định nghĩa giao diện mặc định cho toàn bộ ứng dụng.

Ngoài những thành phần chính của file AndroidManifest.xml thì còn một số thuộc tính quan trọng mà lập trình viên cần lưu ý:

  • android:versionCode: Định nghĩa version code của ứng dụng. Version code là một số nguyên, được sử dụng để phân biệt các version khác nhau của ứng dụng.
  • android:versionName: Định nghĩa version name của ứng dụng. Version name là một chuỗi ký tự, được sử dụng để giới thiệu về version của ứng dụng cho người dùng.
  • android:label: Định nghĩa tên của ứng dụng hiển thị trên giao diện người dùng.
  • android:icon: Định nghĩa biểu tượng của ứng dụng hiển thị trên giao diện người dùng.
  • android:theme: Định nghĩa giao diện của một hoạt động hoặc của toàn bộ ứng dụng.
  • android:exported: Xác định xem thành phần có thể được gọi từ ứng dụng khác hay không.
  • android:enabled: Xác định xem thành phần có hoạt động hay không.
  • android:configChanges: Xác định các sự kiện thay đổi cấu hình mà hoạt động có thể xử lý mà không cần bị khởi động lại.
  • android:screenOrientation: Xác định hướng màn hình của activity.
  • android:permission: Xác định quyền truy cập cần thiết để sử dụng thành phần.

Nắm vững các thành phần và thuộc tính này sẽ giúp bạn hiểu rõ hơn về cách ứng dụng Android hoạt động và cách thiết kế, xây dựng các thành phần trong nó.

Cách để ghép nhiều file AndroidManifest.xml trong Android

Mỗi project Android Studio phải chứa ít nhất một file Manifest , nhưng một project cũng có thể chứa nhiều file Manifest. Điều này có thể xảy ra trong các trường hợp sau:

  • Sử dụng các thư viện bên thứ ba: Các thư viện bên thứ ba có thể yêu cầu các quyền hoặc cấu hình cụ thể, cần phải thêm vào file AndroidManifest.xml của ứng dụng chính.
  • Phân tách các thành phần ứng dụng: Khi phát triển ứng dụng, bạn có thể muốn phân tách các thành phần như activity, service, BroadcastReceiver,... ra thành các file AndroidManifest.xml riêng biệt để quản lý dễ dàng hơn.

Để ghép nhiều file AndroidManifest.xml lại với nhau, bạn có thể sử dụng các công cụ build của Android Studio, bao gồm cả Gradle và Android Asset Packaging Tool (AAPT).

  • Sử dụng Gradle: Gradle là công cụ build được sử dụng rộng rãi trong phát triển ứng dụng Android. Để ghép nhiều file AndroidManifest.xml lại với nhau bằng Gradle, bạn có thể sử dụng các lệnh build Gradle để merge các file này lại với nhau. Để thực hiện việc này, bạn có thể sử dụng plugin Gradle Android và cấu hình file build.gradle để chỉ định các file AndroidManifest.xml cần merge.
  • Sử dụng Android Asset Packaging Tool (AAPT): AAPT là công cụ được sử dụng để đóng gói các tài nguyên của ứng dụng Android, bao gồm cả file AndroidManifest.xml. Để ghép nhiều file AndroidManifest.xml lại với nhau bằng AAPT, bạn có thể sử dụng lệnh aapt để merge các file này lại với nhau.

Tùy thuộc vào nhu cầu và công cụ build mà bạn sử dụng, bạn có thể tìm hiểu thêm về cách thực hiện việc ghép nhiều file AndroidManifest.xml lại với nhau trong tài liệu hướng dẫn của Gradle và Android Asset Packaging Tool.

Dưới đây là các bước ghép và kiểm tra việc ghép file AndroidManifest.xml.

  • Bước 1: Mở một trong các file Manifest của bạn trong Android Studio.
  • Bước 2: Chọn tab “Merged Manifest” (nơi con trỏ được định vị trong ảnh chụp màn hình sau). Thao tác này sẽ mở ra chế độ xem “Merged Manifest”.

android studio merged manifest view jpgDạng xem file Manifest đã hợp nhất hiển thị kết quả hợp nhất ở bên trái và thông tin về file Manifest đã hợp nhất ở bên phải.

merging multiple android manifests jpg

Nếu bạn bối rối về bất kỳ thành phần nào của file Manifest được hợp nhất, thì bạn có thể xem thêm thông tin về một thành phần cụ thể bằng cách chọn thành phần đó trong ngăn bên trái, sau đó đọc “Manifest log ” trong ngăn bên phải.

android manifest log jpg

Nếu có bất kỳ xung đột hợp nhất nào xảy ra thì chúng sẽ xuất hiện trong phần “Merging Errors” ở phía bên tay phải của Android Studio, kèm theo một số đề xuất về cách giải quyết xung đột cụ thể này, bằng cách sử dụng các điểm đánh dấu quy tắc hợp nhất.

Tổng kết

Trong bài viết này, chúng ta đã tìm hiểu về thành phần cấu trúc của file AndroidManifest.xml. Việc hiểu rõ các thành phần này sẽ giúp bạn tối ưu hóa quản lý và phát triển ứng dụng Android của mình. Ngoài ra, chúng ta cũng đã tìm hiểu cách để ghép nhiều file AndroidManifest.xml lại với nhau, qua việc sử dụng các công cụ build của Android Studio như Gradle và Android Asset Packaging Tool (AAPT). Hy vọng những kiến thức mà freetuts cung cấp về AndroidManifest.xml trong Android phần nào giúp bạn hiểu được bản chất của nó, hỗ trợ bạn phát triển ứng dụng của mình.

Cùng chuyên mục:

Tìm hiểu về vòng đời của Activity trong Android

Tìm hiểu về vòng đời của Activity trong Android

AlarmManager trong Android

AlarmManager trong Android

Menu trong Android

Menu trong Android

Fragments trong Android

Fragments trong Android

SearchView trong Android

SearchView trong Android

TabLayout trong Android

TabLayout trong Android

ViewStub trong Android

ViewStub trong Android

Image Slider trong Android

Image Slider trong Android

Trình chuyển đổi hình ảnh (Image Switcher) trong Android

Trình chuyển đổi hình ảnh (Image Switcher) trong Android

ScrollView trong Android

ScrollView trong Android

ProgressBar trong Android

ProgressBar trong Android

Đồng hồ Analog và đồng hồ kỹ thuật số trong Android

Đồng hồ Analog và đồng hồ kỹ thuật số trong Android

Cách dùng TimePicker trong Android

Cách dùng TimePicker trong Android

Cách dùng DatePicker trong Android

Cách dùng DatePicker trong Android

Cách dùng SeekBar trong Android

Cách dùng SeekBar trong Android

Cách dùng WebView trong Android

Cách dùng WebView trong Android

Cách dùng RatingBar trong Android

Cách dùng RatingBar trong Android

Cách dùng ListView trong Android

Cách dùng ListView trong Android

AutoCompleteTextView trong Android

AutoCompleteTextView trong Android

Spinner trong Android

Spinner trong Android

Top