Attribute application@name
trong AndroidManifest.xml Flutter: Hướng dẫn A-ZBạn đang gặp lỗi "Attribute application@name at AndroidManifest.xml requires a placeholder substitution" khi phát triển ứng dụng Flutter? Đừng lo lắng! Bài viết này sẽ cung cấp cho bạn các giải pháp đã được kiểm chứng, giúp bạn nhanh chóng khắc phục vấn đề và tiếp tục quá trình phát triển ứng dụng một cách suôn sẻ. Chúng tôi sẽ đi sâu vào nguyên nhân gây ra lỗi và cung cấp các bước thực hiện chi tiết, dễ hiểu.
Attribute application@name
?Lỗi này thường xảy ra khi bạn cấu hình các thuộc tính trong file AndroidManifest.xml
của ứng dụng Android Flutter. Cụ thể, thuộc tính android:name="${applicationName}"
trong thẻ <application>
yêu cầu một giá trị placeholder, nhưng giá trị này lại không được cung cấp hoặc bị ghi đè.
Vấn đề thường gặp khi sử dụng các plugin hoặc thư viện bên ngoài, hoặc khi bạn tự cấu hình các giá trị trong file build.gradle
. Các cấu hình này có thể vô tình ghi đè các giá trị placeholder cần thiết cho ứng dụng Flutter hoạt động đúng cách. Việc thiếu cấu hình hoặc cấu hình sai manifestPlaceholders
là nguyên nhân chính.
Attribute application@name
build.gradle
File build.gradle
(module level, thường là android/app/build.gradle
) là nơi chứa các cấu hình build của ứng dụng Android. Hãy kiểm tra kỹ phần defaultConfig
để đảm bảo rằng bạn đã cấu hình manifestPlaceholders
đúng cách. Thay vì gán trực tiếp (=
), hãy sử dụng toán tử +=
để thêm các giá trị placeholder mà không ghi đè các giá trị mặc định của Flutter.
Ví dụ:
android {
...
defaultConfig {
...
manifestPlaceholders += [appAuthRedirectScheme: "your_custom_scheme"]
}
}
Thay "your_custom_scheme"
bằng scheme tùy chỉnh của bạn. **Lưu ý:** scheme này phải viết thường. Việc sử dụng +=
đảm bảo rằng các placeholder do Flutter tạo ra không bị mất.
applicationName
vào manifestPlaceholders
Trong một số trường hợp, bạn cần phải thêm thuộc tính applicationName
một cách tường minh vào manifestPlaceholders
. Giá trị của thuộc tính này phải là tên đầy đủ của class Application Android (class kế thừa FlutterApplication
).
Ví dụ:
defaultConfig {
...
manifestPlaceholders = [appAuthRedirectScheme: "your_custom_scheme",
applicationName: "com.example.your_app_name.Application"]
}
Thay com.example.your_app_name.Application
bằng tên package và tên class Application của bạn. Nếu bạn không có class Application riêng, hãy sử dụng android.app.Application
(hoặc io.flutter.app.FlutterMultiDexApplication
nếu bạn bật multidex và minSdkVersion
nhỏ hơn 21).
Một số phiên bản Flutter SDK cũ có thể không tự động inject các manifestPlaceholders
mà Flutter cần. Hãy đảm bảo rằng bạn đang sử dụng phiên bản Flutter mới nhất bằng cách chạy lệnh flutter upgrade
.
Sau khi nâng cấp, hãy thử build lại ứng dụng để xem lỗi còn tồn tại hay không.
AndroidManifest.xml
Mở file AndroidManifest.xml
(thường nằm tại android/app/src/main/AndroidManifest.xml
) và kiểm tra thẻ <application>
. Đảm bảo rằng thuộc tính android:name
tồn tại và có giá trị là ${applicationName}
.
Ví dụ:
<application
android:label="Your App Name"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
...
</application>
Nếu thuộc tính này bị thiếu, hãy thêm nó vào. Nếu nó có giá trị khác, hãy sửa lại thành ${applicationName}
.
Đôi khi, build cache cũ có thể gây ra các vấn đề không mong muốn. Hãy thử xóa build cache bằng cách chạy các lệnh sau:
flutter clean
build
trong thư mục android/app
.Sau khi xóa cache, hãy build lại ứng dụng.
Lỗi Attribute application@name
trong AndroidManifest.xml có thể gây khó chịu, nhưng với các giải pháp trên, bạn có thể dễ dàng khắc phục nó. Hãy kiểm tra kỹ cấu hình build.gradle
, đảm bảo bạn sử dụng phiên bản Flutter mới nhất, và kiểm tra file AndroidManifest.xml
. Chúc bạn thành công!
Bài viết liên quan