Niit - Ict Hà Nội » Tin tức » Tin tức công nghệ » Bản địa hóa ứng dụng Android của bạn
Bản địa hóa ứng dụng Android của bạn

Tài liệu này mô tả các thực tiễn tốt nhất để bản địa hóa các ứng dụng Android.

 

Bạn đã có kiến ​​thức làm việc về ngôn ngữ lập trình Java và làm quen với việc tải tài nguyên Android khai báo các thành phần giao diện người dùng trong XML các cân nhắc phát triển như vòng đời hoạt động và các nguyên tắc chung về quốc tế hóa và bản địa hóa.

Học lập trình Android bằng cách bản địa nó nó

Bản địa hóa ứng dụng Android của bạn

 

Cách tốt nhất là sử dụng khung tài nguyên Android để phân tách các khía cạnh được bản địa hóa của ứng dụng của bạn càng nhiều càng tốt khỏi chức năng dựa trên Java cốt lõi:

 

  • Bạn có thể đặt hầu hết hoặc tất cả nội dung trong giao diện người dùng của ứng dụng vào các tệp tài nguyên, như được mô tả trong tài liệu này và trong cung cấp tài nguyên.
  • Mặt khác, hành vi của giao diện người dùng được điều khiển bởi mã dựa trên Java của bạn. Ví dụ: nếu người dùng nhập dữ liệu cần được định dạng hoặc sắp xếp khác nhau tùy theo ngôn ngữ thì bạn sẽ sử dụng ngôn ngữ lập trình Java để xử lý dữ liệu theo chương trình. Tài liệu này không đề cập đến cách bản địa hóa mã dựa trên Java của bạn.

 

Để có hướng dẫn ngắn để bản địa hóa các chuỗi trong ứng dụng của bạn hãy xem bài học đào tạo, hỗ trợ các ngôn ngữ khác nhau.

 

Tổng quan: Chuyển đổi tài nguyên trong Android

 

Tài nguyên là chuỗi văn bản bố cục âm thanh đồ họa và bất kỳ dữ liệu tĩnh nào khác mà ứng dụng Android của bạn cần. Một ứng dụng có thể bao gồm nhiều bộ tài nguyên mỗi bộ được tùy chỉnh cho một cấu hình thiết bị khác nhau. 

 

Khi người dùng chạy ứng dụng Android sẽ tự động chọn và tải các tài nguyên phù hợp nhất với thiết bị.

 

Tài liệu này tập trung vào nội địa hóa và bản địa. Để biết mô tả đầy đủ về chuyển đổi tài nguyên và tất cả các loại cấu hình mà bạn có thể chỉ định - hướng màn hình loại màn hình cảm ứng v.v. - xem cung cấp tài nguyên thay thế.

 

Khi bạn viết ứng dụng của mình bạn tạo các tài nguyên mặc định và thay thế để ứng dụng của bạn sử dụng. Khi người dùng chạy ứng dụng của bạn hệ thống Android sẽ chọn tài nguyên nào sẽ tải dựa trên ngôn ngữ của thiết bị. 

 

Để tạo tài nguyên bạn đặt các tệp trong các thư mục con được đặt tên đặc biệt của thư mục của dự án res/.

 

Tại sao tài nguyên mặc định là quan trọng

 

Bất cứ khi nào ứng dụng chạy ở một miền mà bạn chưa cung cấp văn bản dành riêng cho miền địa phương Android sẽ tải các chuỗi mặc định từ đó res/values/strings.xml. 

 

Nếu tệp mặc định này vắng mặt hoặc nếu nó thiếu một chuỗi mà ứng dụng của bạn cần, thì ứng dụng của bạn không chạy và hiển thị lỗi. Ví dụ dưới đây minh họa những gì có thể xảy ra khi tệp văn bản mặc định không đầy đủ.

 

Mã dựa trên Java của một ứng dụng chỉ hai chuỗi text_a và text_b. Ứng dụng này bao gồm một tệp tài nguyên được bản địa hóa ( res/values-en/strings.xml) xác định text_a và text_b bằng tiếng Anh. 

 

Ứng dụng này cũng bao gồm tệp tài nguyên mặc định ( res/values/strings.xml) bao gồm định nghĩa cho text_a, nhưng không bao gồm text_b:

 

  • Khi ứng dụng này được khởi chạy trên một thiết bị có ngôn ngữ được đặt thành tiếng Anh ứng dụng có thể chạy mà không gặp vấn đề gì, vì res/values-en/strings.xml chứa cả hai chuỗi văn bản cần thiết.
  • Tuy nhiên, người dùng sẽ thấy thông báo lỗi và nút Buộc đóng khi ứng dụng này được khởi chạy trên thiết bị được đặt thành ngôn ngữ khác tiếng Anh. Ứng dụng không tải.

 

Để ngăn chặn tình huống này hãy đảm bảo rằng một res/values/strings.xml tệp tồn tại và nó xác định mọi chuỗi cần thiết. Tình huống áp dụng cho tất cả các loại tài nguyên không chỉ các chuỗi:

 

Bạn cần tạo một tập hợp các tệp tài nguyên mặc định có chứa tất cả các tài nguyên mà ứng dụng của bạn yêu cầu trên các lớp các bản vẽ hoạt hình, v.v. Để biết thông tin về kiểm tra hãy xem kiểm tra cho mặc định tài nguyên.

 

Sử dụng tài nguyên để bản địa hóa

 

Cách tạo tài nguyên mặc định

 

Đặt văn bản mặc định của ứng dụng vào res/values/strings.xml.

 

Các chuỗi văn bản res/values/strings.xml nên sử dụng ngôn ngữ mặc định đây là ngôn ngữ mà bạn mong đợi hầu hết người dùng ứng dụng của mình sẽ nói.

 

Bộ tài nguyên mặc định cũng phải bao gồm bất kỳ bản vẽ và bố cục mặc định nào và có thể bao gồm các loại tài nguyên khác như hình động:

 

  • res/drawable/(thư mục bắt buộc chứa ít nhất một tệp đồ họa cho biểu tượng của ứng dụng trên Google Play)
  • res/layout/ (thư mục bắt buộc giữ tệp XML xác định bố cục mặc định)
  • res/anim/ (bắt buộc nếu bạn có bất kỳ thư mục nào ) res/anim-<qualifiers>
  • res/xml/ (bắt buộc nếu bạn có bất kỳ thư mục nào ) res/xml-<qualifiers>
  • res/raw/ (bắt buộc nếu bạn có bất kỳ thư mục nào ) res/raw-<qualifiers>

 

Cách tạo tài nguyên thay thế

 

Một phần lớn trong việc bản địa hóa một ứng dụng là cung cấp văn bản thay thế cho các ngôn ngữ khác nhau. Trong một số trường hợp bạn cũng cung cấp đồ họa thay thế âm thanh bố cục và các tài nguyên dành riêng cho địa phương khác.

 

Một ứng dụng có thể chỉ định nhiều thư mục, mỗi thư mục có vòng loại khác nhau. Để tạo tài nguyên thay thế cho một miền địa phương khác bạn sử dụng vòng loại chỉ định ngôn ngữ hoặc kết hợp vùng ngôn ngữ. 

 

Tên của thư mục tài nguyên phải tuân theo sơ đồ đặt tên được mô tả trong cung cấp tài nguyên thay thế nếu không ứng dụng của bạn không thể biên dịch. res/<qualifiers>/

 

Giả sử rằng ngôn ngữ mặc định của ứng dụng của bạn là tiếng Anh. Giả sử bạn cũng muốn bản địa hóa tất cả văn bản trong ứng dụng của mình sang tiếng Pháp và hầu hết các văn bản trong ứng dụng của bạn (mọi thứ trừ tiêu đề của ứng dụng) sang tiếng Nhật. 

 

Trong trường hợp này bạn có thể tạo ba strings.xml tệp thay thế mỗi tệp được lưu trữ trong thư mục tài nguyên dành riêng cho miền địa phương:

 

  1. res/values/strings.xml
    Chứa văn bản tiếng Anh cho tất cả các chuỗi mà ứng dụng sử dụng bao gồm văn bản cho một chuỗi có tên title.
  2. res/values-fr/strings.xml
    Chứa văn bản tiếng Pháp cho tất cả các chuỗi bao gồm title.
  3. res/values-ja/strings.xml
    Chứa văn bản tiếng Nhật cho tất cả các chuỗi ngoại trừ title .

 

Nếu mã dựa trên Java của bạn đề cập đến R.string.title đây là những gì xảy ra trong thời gian chạy:

 

  • Nếu thiết bị được đặt thành bất kỳ ngôn ngữ nào ngoài tiếng Pháp, Android sẽ tải title từ res/values/strings.xml tệp.
  • Nếu thiết bị được đặt thành tiếng Pháp, Android sẽ tải title từ res/values-fr/strings.xml tệp.

 

Lưu ý rằng nếu thiết bị được đặt thành tiếng Nhật Android sẽ tìm title trong res/values-ja/strings.xml tệp. Nhưng vì không có chuỗi như vậy được bao gồm trong tệp đó Android rơi trở lại mặc định và tải title bằng tiếng Anh từ res/values/strings.xml tệp.

 

Những nguồn lực nào được ưu tiên?

 

>> Nếu nhiều tệp tài nguyên khớp với cấu hình của thiết bị, cũng như những nguồn để các bạn có thể học lập trình Android thì Android sẽ tuân theo một bộ quy tắc trong việc quyết định sử dụng tệp nào <<

Trong số các vòng loại có thể được chỉ định trong tên thư mục tài nguyên miền địa phương hầu như luôn được ưu tiên.

 

Giả sử rằng một ứng dụng bao gồm một bộ đồ họa mặc định và hai bộ đồ họa khác mỗi bộ được tối ưu hóa cho một thiết lập thiết bị khác nhau:

 

  • res/drawable/
    Chứa đồ họa mặc định.
  • res/drawable-small-land-stylus/
    Chứa đồ họa được tối ưu hóa để sử dụng với một thiết bị mong đợi đầu vào từ bút stylus và có màn hình mật độ thấp QVGA theo hướng ngang.
  • res/drawable-ja/ 
    Chứa đồ họa được tối ưu hóa để sử dụng với tiếng Nhật.

 

Nếu ứng dụng chạy trên thiết bị được định cấu hình để sử dụng tiếng Nhật, Android sẽ tải đồ họa từ res/drawable-ja/, ngay cả khi thiết bị đó là ứng dụng mong đợi đầu vào từ bút stylus và có màn hình mật độ thấp QVGA theo hướng ngang.

 

Giả sử rằng bạn có tình huống sau:

 

  • Mã ứng dụng gọi cho R.string.text_a
  • Hai tệp tài nguyên có liên quan có sẵn:
    • res/values-mcc404/strings.xml, bao gồm text_a ngôn ngữ mặc định của ứng dụng trong trường hợp này là tiếng Anh.
    • res/values-hi/strings.xml, bao gồm text_atrong tiếng Hindi.
  • Ứng dụng đang chạy trên thiết bị có cấu hình sau:
    • Thẻ SIM được kết nối với mạng di động ở Ấn Độ (MCC 404).
    • Ngôn ngữ được đặt thành Tiếng Hindi ( hi).

 

Android tải text_a từ res/values-mcc404/strings.xml (bằng tiếng Anh), ngay cả khi thiết bị được định cấu hình cho tiếng Hindi. Đó là bởi vì trong quá trình lựa chọn tài nguyên, Android thích kết hợp MCC hơn so với đối sánh ngôn ngữ.

 

Quá trình lựa chọn không phải lúc nào cũng đơn giản như những ví dụ này gợi ý. Vui lòng đọc cách Android tìm tài nguyên phù hợp nhất để biết mô tả quy trình nhiều sắc thái hơn. Tất cả các vòng loại được mô tả và liệt kê theo thứ tự ưu tiên trong bảng 2 của cung cấp tài nguyên thay thế.

 

Nói đến tài nguyên trong mã

 

Trong mã dựa trên Java của ứng dụng, bạn tham khảo các tài nguyên bằng cú pháp hoặc . Để biết thêm về điều này, xem truy cập tài nguyên .R.resource_type.resource_nameandroid.R.resource_type.resource_name

 

Quản lý chuỗi để bản địa hóa

 

Di chuyển tất cả các chuỗi vào String.xml

 

Khi bạn xây dựng ứng dụng của mình, đừng mã cứng bất kỳ chuỗi nào. Thay vào đó hãy khai báo tất cả các chuỗi của bạn dưới dạng tài nguyên trong một strings.xml tệp mặc định giúp dễ dàng cập nhật và bản địa hóa. 

 

Các chuỗi trong strings.xml tệp sau đó có thể dễ dàng trích xuất, dịch và tích hợp trở lại vào ứng dụng của bạn (với các vòng loại phù hợp) mà không có bất kỳ thay đổi nào đối với mã được biên dịch.

 

Nếu bạn tạo hình ảnh bằng văn bản hãy đặt các chuỗi đó vào strings.xml và tạo lại hình ảnh sau khi dịch.

 

Thực hiện theo các hướng dẫn của Android cho chuỗi UI

 

Khi bạn thiết kế và phát triển giao diện người dùng của mình hãy đảm bảo rằng bạn chú ý đến cách bạn nói chuyện với người dùng của mình. Nói chung hãy sử dụng kiểu gọn gàng và nén thân thiện nhưng ngắn gọn và sử dụng kiểu nhất quán trong toàn bộ UI của bạn.

 

Đảm bảo rằng bạn đã đọc và làm theo các đề xuất Thiết kế Vật liệu để viết kiểu và lựa chọn từ. Làm như vậy để ứng dụng của bạn xuất hiện bóng bẩy hơn với người dùng và giúp người dùng hiểu giao diện người dùng của bạn nhanh hơn.

 

Ngoài ra, luôn luôn sử dụng thuật ngữ tiêu chuẩn của Android ở bất cứ nơi nào có thể, chẳng hạn như các thành phần UI như Action Bar, Menu Tùy chọn, Thanh hệ thống, Thông báo, v.v. 

 

Sử dụng thuật ngữ Android một cách chính xác và nhất quán giúp dịch thuật dễ dàng hơn và mang lại sản phẩm cuối tốt hơn cho người dùng.

 

Cung cấp đủ ngữ cảnh cho các chuỗi khai báo

 

Khi bạn khai báo các chuỗi trong strings.xml tệp của mình, hãy đảm bảo mô tả bối cảnh sử dụng chuỗi. Thông tin này là vô giá đối với người dịch và dẫn đến chất lượng dịch tốt hơn. Nó cũng giúp bạn quản lý chuỗi hiệu quả hơn.

 

Đây là một ví dụ:

 

ví dụ 1

 

Xem xét việc cung cấp thông tin ngữ cảnh có thể bao gồm:

 

  • Chuỗi này để làm gì? Khi nào và ở đâu nó được trình bày cho người dùng?
  • Đây là nơi nào trong bố trí? Ví dụ, bản dịch ít linh hoạt hơn trong các nút so với trong hộp văn bản.

 

Đánh dấu các phần tin nhắn không nên dịch

 

Các chuỗi thường chứa văn bản không nên dịch sang các ngôn ngữ khác. Các ví dụ phổ biến có thể là một đoạn mã, giữ chỗ cho một giá trị, ký hiệu đặc biệt hoặc tên. Khi bạn chuẩn bị các chuỗi để dịch, hãy tìm và đánh dấu văn bản vẫn giữ nguyên trạng, không cần dịch, để người dịch không thay đổi nó.

 

Để đánh dấu văn bản không nên dịch, hãy sử dụng <xliff:g> thẻ giữ chỗ. Dưới đây là thẻ ví dụ đảm bảo văn bản "% 1 $ s" không bị thay đổi trong quá trình dịch (nếu không nó có thể phá vỡ thông báo):

 

ví dụ

 

Khi bạn khai báo thẻ giữ chỗ, luôn luôn thêm một thuộc tính id giải thích những gì giữ chỗ dành cho. Nếu các ứng dụng của bạn sau này thay thế giá trị giữ chỗ, hãy đảm bảo cung cấp một thuộc tính ví dụ để làm rõ việc sử dụng dự kiến.

 

Dưới đây là một số ví dụ khác về thẻ giữ chỗ:

 

ví dụ

 

Danh sách kiểm tra nội địa hóa

 

Để biết tổng quan đầy đủ về quá trình bản địa hóa và phân phối ứng dụng Android, hãy xem tài liệu danh sách kiểm tra bản địa hóa.

 

Mẹo bản địa hóa

 

Thiết kế ứng dụng của bạn để làm việc ở bất kỳ địa phương nào

 

Bạn không thể thừa nhận bất cứ điều gì về thiết bị mà người dùng chạy ứng dụng của bạn. Thiết bị có thể có phần cứng mà bạn không lường trước được hoặc có thể được đặt thành ngôn ngữ mà bạn không có kế hoạch hoặc bạn không thể kiểm tra. 

 

Thiết kế ứng dụng của bạn để nó hoạt động bình thường hoặc không hoạt động một cách duyên dáng cho dù nó chạy trên thiết bị nào.

 

Đảm bảo bao gồm res/drawable/ và một res/values/ thư mục (không có bất kỳ sửa đổi bổ sung nào trong tên thư mục) có chứa tất cả hình ảnh và văn bản mà ứng dụng của bạn cần.

 

Nếu một ứng dụng bị thiếu ngay cả một tài nguyên mặc định, nó sẽ không chạy trên thiết bị được đặt thành ngôn ngữ không được hỗ trợ. Ví dụ: res/values/strings.xml tệp mặc định có thể thiếu một chuỗi mà ứng dụng cần: Khi ứng dụng chạy ở một địa điểm không được hỗ trợ và cố tải res/values/strings.xml, người dùng sẽ thấy thông báo lỗi và nút Buộc đóng.

 

Để biết thêm thông tin, hãy xem kiểm tra tài nguyên mặc định.

 

Thiết kế bố trí linh hoạt

 

Nếu bạn cần sắp xếp lại bố cục của mình để phù hợp với một ngôn ngữ nhất định (ví dụ tiếng Đức với các từ dài), bạn có thể tạo bố cục thay thế cho ngôn ngữ đó (ví dụ res/layout-de/main.xml). Tuy nhiên, làm điều này có thể làm cho ứng dụng của bạn khó bảo trì hơn. Nó là tốt hơn để tạo ra một bố cục duy nhất linh hoạt hơn.

 

Một tình huống điển hình khác là một ngôn ngữ đòi hỏi một cái gì đó khác biệt trong cách bố trí của nó. Ví dụ: bạn có thể có một biểu mẫu liên hệ bao gồm hai trường tên khi ứng dụng chạy bằng tiếng Nhật, nhưng ba trường tên khi ứng dụng chạy bằng một số ngôn ngữ khác. Bạn có thể xử lý việc này theo một trong hai cách:

 

  • Tạo một bố cục với một trường mà bạn có thể bật hoặc tắt theo chương trình, dựa trên ngôn ngữ hoặc
  • Có bố cục chính bao gồm một bố cục khác bao gồm trường thay đổi. Bố cục thứ hai có thể có các cấu hình khác nhau cho các ngôn ngữ khác nhau.

 

Tránh tạo nhiều tệp tài nguyên và chuỗi văn bản hơn bạn cần

 

Bạn có thể không cần phải tạo một thay thế cụ thể cho từng địa điểm cho mọi tài nguyên trong ứng dụng của mình.

Ngoài ra, bạn có thể không cần tạo văn bản thay thế cho mỗi chuỗi. Ví dụ: giả sử như sau:

  • Ngôn ngữ mặc định của ứng dụng của bạn là tiếng Anh Mỹ. Mỗi chuỗi mà ứng dụng sử dụng được xác định, sử dụng chính tả tiếng Anh Mỹ, trong res/values/strings.xml.
  • Đối với một vài cụm từ quan trọng, bạn muốn cung cấp chính tả tiếng Anh. Bạn muốn các chuỗi thay thế này được sử dụng khi ứng dụng của bạn chạy trên thiết bị ở Vương quốc Anh.

Để thực hiện việc này, bạn có thể tạo một tệp nhỏ gọi là res/values-en-rGB/strings.xml chỉ bao gồm các chuỗi khác nhau khi ứng dụng chạy ở Vương quốc Anh Đối với tất cả các chuỗi còn lại, ứng dụng rơi trở lại mặc định và sử dụng những gì được xác định trong res/values/strings.xml.

 

Sử dụng đối tượng Ngữ cảnh Android để tra cứu ngôn ngữ thủ công

 

Bạn có thể tra cứu ngôn ngữ bằng cách sử dụng Context đối tượng mà Android cung cấp:

 

ví dụ

 

Sử dụng Dịch vụ dịch thuật ứng dụng 

 

Các dịch vụ dịch ứng được tích hợp vào chơi điều khiển, và nó cũng có thể truy cập từ Android Studio. Đó là một cách nhanh chóng và đơn giản để nhận được báo giá ngay lập tức và đặt hàng với một công ty dịch thuật. 

 

Bạn có thể đặt hàng bản dịch sang một hoặc nhiều ngôn ngữ cho chuỗi UI ứng dụng, văn bản Danh sách cửa hàng Play, tên IAP và văn bản chiến dịch quảng cáo.

 

Kiểm tra các ứng dụng cục bộ

Kiểm tra trên thiết bị

 

Hãy nhớ rằng thiết bị bạn đang thử nghiệm có thể khác biệt đáng kể so với các thiết bị có sẵn cho người tiêu dùng ở các khu vực địa lý khác. 

 

Các địa điểm khả dụng trên thiết bị của bạn có thể khác với các địa điểm khả dụng trên các thiết bị khác. Ngoài ra độ phân giải và mật độ của màn hình thiết bị có thể khác nhau điều này có thể ảnh hưởng đến việc hiển thị chuỗi và dây rút trong giao diện người dùng của bạn.

 

Để thay đổi ngôn ngữ hoặc ngôn ngữ trên thiết bị hãy sử dụng ứng dụng Cài đặt.

 

Thử nghiệm trên một trình giả lập

 

Để biết chi tiết về cách sử dụng trình giả lập hãy xem trình giả lập Android.

 

Tạo và sử dụng ngôn ngữ tùy chỉnh

 

Ngôn ngữ "tùy chỉnh" là sự kết hợp ngôn ngữ / khu vực mà hình ảnh hệ thống Android không hỗ trợ rõ ràng. Bạn có thể kiểm tra cách ứng dụng của bạn chạy trong một miền địa phương tùy chỉnh bằng cách tạo một miền địa phương tùy chỉnh trong trình giả lập. Có hai cách để làm điều này:

 

  • Sử dụng ứng dụng Địa điểm tùy chỉnh có thể truy cập từ tab ứng dụng.
  • Thay đổi thành một miền địa phương tùy chỉnh từ vỏ adb như được mô tả dưới đây.

 

Khi bạn đặt trình giả lập thành một ngôn ngữ không có sẵn trong hình ảnh hệ thống Android hệ thống sẽ tự hiển thị theo ngôn ngữ mặc định. Ứng dụng của bạn tuy nhiên nên bản địa hóa đúng.

 

Thay đổi miền địa phương giả lập từ vỏ adb

 

Để thay đổi miền địa phương trong trình giả lập bằng cách sử dụng trình bao adb.

 

  1. Chọn ngôn ngữ bạn muốn kiểm tra và xác định thẻ ngôn ngữ BCP-47 của nó.
  2. Khởi chạy một trình giả lập.
  3. Từ trình vỏ dòng lệnh trên máy tính chủ, hãy chạy lệnh sau: 
    adb shell
    hoặc nếu bạn có thiết bị đi kèm, hãy xác định rằng bạn muốn trình giả lập bằng cách thêm -etùy chọn:
    adb -e shell
  4. Tại dấu nhắc shell adb ( #), hãy chạy lệnh này: Thay thế các phần được đặt dấu ngoặc bằng các mã thích hợp từ Bước 1.
    setprop persist.sys.locale [BCP-47 language tag];stop;sleep 5;start 

 

Ví dụ, để kiểm tra bằng tiếng Pháp Canada:

 

setprop persist.sys.locale fr-CA;stop;sleep 5;start

 

Điều này khiến trình giả lập khởi động lại. (Trông giống như khởi động lại hoàn toàn, nhưng không phải.) Khi màn hình chính xuất hiện lại khởi chạy lại ứng dụng của bạn và ứng dụng sẽ khởi chạy cùng với ngôn ngữ mới.

 

Kiểm tra tài nguyên mặc định

 

Dưới đây là cách kiểm tra xem một ứng dụng có bao gồm mọi tài nguyên chuỗi mà nó cần hay không:

 

- Đặt trình giả lập hoặc thiết bị thành ngôn ngữ mà ứng dụng của bạn không hỗ trợ. (Bạn có thể sử dụng ứng dụng Địa điểm tùy chỉnh để đặt trình giả lập thành ngôn ngữ không được hỗ trợ.)

- Chạy ứng dụng.

- Nếu ứng dụng hiển thị thông báo lỗi và nút Buộc đóng, ứng dụng có thể đang tìm kiếm một chuỗi không khả dụng. Đảm bảo   rằng res/values/strings.xml tệp của bạn bao gồm định nghĩa cho mọi chuỗi mà ứng dụng sử dụng.

Nếu thử nghiệm thành công lặp lại nó cho các loại cấu hình khác. Ví dụ: nếu ứng dụng có tệp bố cục được gọi res/layout-land/main.xml nhưng không chứa tệp được gọi res/layout-port/main.xml, thì hãy đặt trình giả lập hoặc thiết bị theo hướng dọc và xem ứng dụng có chạy không.