Tại sao cửa hàng Google Play cho biết ứng dụng Android của tôi không tương thích với thiết bị của chính tôi?


91

Tôi do dự khi hỏi câu hỏi này, vì có vẻ như nhiều người gặp vấn đề tương tự nhưng tôi vẫn chưa tìm thấy giải pháp nào giải quyết được trường hợp cụ thể của mình.

Tôi đã phát triển một ứng dụng Android ( liên kết đến ứng dụng thực tế ) và đã tải nó lên Cửa hàng Play. Cửa hàng Play nói

"This app is incompatible with your XT Mobile Network HTC HTC Wildfire S A510b."

Tất nhiên đó là điện thoại mà tôi đã phát triển ứng dụng, vì vậy nó phải tương thích. Một số người sử dụng các thiết bị khác nói rằng nó báo cáo tương thích, những người khác nói rằng nó báo cáo không tương thích, nhưng tôi không tìm thấy xu hướng nào. (Rõ ràng là tôi không biết nhiều người sử dụng thiết bị Android.)

Tôi đã thử những cách sau:

  • di chuyển một tệp lớn ra khỏi res/rawthư mục theo gợi ý của câu trả lời này . Tệp duy nhất trong đó có tệp văn bản ~ 700 kB, nhưng tôi đã chuyển nó sang assets/mà không có thay đổi rõ ràng.

  • thêm hai xác nhận tính năng sau:

    <uses-feature android:name="android.hardware.faketouch" />
    <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
    

    nghĩ rằng có thể điện thoại của tôi không hỗ trợ android.hardware.touchscreentính năng thông thường , nhưng một lần nữa, không có thay đổi rõ ràng.

Khi tải APK lên Cửa hàng Play, bộ lọc duy nhất mà APK đó báo cáo là đang hoạt động là android.hardware.faketouchtính năng.

Sau đây là kết quả của aapt dump badging bin/NZSLDict-release.apk:

package: name='com.hewgill.android.nzsldict' versionCode='3' versionName='1.0.2'
sdkVersion:'4'
targetSdkVersion:'4'
uses-feature:'android.hardware.faketouch'
uses-feature-not-required:'android.hardware.touchscreen'
application-label:'NZSL Dictionary'
application-icon-160:'res/drawable/icon.png'
application: label='NZSL Dictionary' icon='res/drawable/icon.png'
launchable-activity: name='com.hewgill.android.nzsldict.NZSLDictionary'  label='NZSL Dictionary' icon=''
main
other-activities
supports-screens: 'small' 'normal' 'large'
supports-any-density: 'true'
locales: '--_--'
densities: '160'

và để đầy đủ, tệp kê khai của tôi:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.hewgill.android.nzsldict"
      android:versionCode="3"
      android:versionName="1.0.2">
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="4" />
    <uses-feature android:name="android.hardware.faketouch" />
    <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
    <application android:label="@string/app_name"
        android:icon="@drawable/icon">
        <activity android:name="NZSLDictionary"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".WordActivity" />
        <activity android:name=".VideoActivity" />
        <activity android:name=".AboutActivity" />
    </application>
</manifest> 

Trong phần "Tính khả dụng của thiết bị" của cửa hàng Play, tôi có thể thấy rằng tất cả các thiết bị HTC, bao gồm cả Wildfire S, đều được hỗ trợ ngoại trừ "G1 (cá hồi)" và "Touch Viva (opal)", bất kể đó là gì. Trên thực tế, tôi thấy rằng cả "Wildfire S (marvel)" và "Wildfire S A515c (marvelc)" đều được liệt kê là được hỗ trợ, nhưng "Wildfire S A510b" của tôi không được đề cập cụ thể. Loại mã định danh mô hình con này có thể quan trọng đến vậy không? Tôi đã có thể tải một số ứng dụng khác từ Google Play xuống điện thoại của mình mà không gặp sự cố nào.

Điều duy nhất tôi chưa làm tại thời điểm này là đợi 4-6 giờ sau khi tải lên phiên bản mới nhất (như trong nhận xét này ) để xem liệu nó có còn thông báo rằng nó không tương thích với điện thoại của tôi hay không. Tuy nhiên, trang cửa hàng Play hiện đang hiển thị 1.0.2, đây là phiên bản mới nhất mà tôi đã tải lên.


Một điều gì đó đã giúp tôi giải quyết rất nhiều vấn đề liên quan đến điện thoại là thiết lập ACRA: code.google.com/p/acra Tôi chạy nó vào lần khởi động đầu tiên của ứng dụng để kéo xuống thông số kỹ thuật đầy đủ của điện thoại và sử dụng handleSilentExceptionphương pháp này để báo cáo một cách im lặng. Nó ít nhất sẽ cho bạn biết ứng dụng đang hoạt động trên phần cứng nào.
Gavin Miller

2
@GavinMiller: Cảm ơn, nhưng tôi không chắc điều đó sẽ hữu ích khi Cửa hàng Play từ chối cung cấp ứng dụng.
Greg Hewgill

Có thể tôi đã hiểu lầm nhận xét của bạn: "Một số người có thiết bị khác nói rằng nó báo cáo tương thích, những người khác nói rằng nó báo cáo không tương thích, nhưng tôi không thể tìm thấy xu hướng nào." Nếu nhiều người bạn không biết có thể tải xuống và cài đặt ứng dụng, bạn có thể thu thập một lượng lớn dữ liệu phần cứng để thử và tạo thành xu hướng. Do đó làm giảm bớt tình trạng "Tôi không biết nhiều người sử dụng thiết bị Android." vấn đề.
Gavin Miller

@GavinMiller: Tuy nhiên, điều đó sẽ chỉ cho tôi biết Google Play tin rằng nó có thể được cài đặt trên thiết bị nào và sẽ không cung cấp thông tin về những thiết bị mà Google Play cho rằng nó không thể được cài đặt. Bên cạnh đó, ngay cả khi biết chắc chắn thiết bị nào tốt và thiết bị nào không, sẽ không thực sự giúp tôi giải quyết vấn đề này.
Greg Hewgill

kiểm tra giải pháp này có hoạt động đối với tôi stackoverflow.com/a/14020303/3392323
SAndroidD

Câu trả lời:


84

Câu trả lời dường như chỉ liên quan đến kích thước ứng dụng. Tôi đã tạo một ứng dụng "hello world" đơn giản mà không có gì đặc biệt trong tệp kê khai, tải nó lên cửa hàng Play và nó được báo cáo là tương thích với thiết bị của tôi.

Tôi không thay đổi gì trong ứng dụng này ngoại trừ việc thêm nhiều nội dung hơn vào res/drawablethư mục. Khi .apkkích thước đạt khoảng 32 MB, Cửa hàng Play bắt đầu báo cáo rằng ứng dụng của tôi không tương thích với điện thoại của tôi.

Tôi sẽ cố gắng liên hệ với bộ phận hỗ trợ nhà phát triển của Google và yêu cầu làm rõ lý do của giới hạn này.

CẬP NHẬT : Đây là phản hồi của bộ phận hỗ trợ nhà phát triển của Google về vấn đề này:

Cảm ơn về chú thích của bạn. Hiện tại, giới hạn kích thước tệp tối đa để tải ứng dụng lên Google Play là khoảng 50 MB.

Tuy nhiên, một số thiết bị có thể có phân vùng bộ nhớ cache nhỏ hơn 50 MB khiến người dùng không thể tải xuống ứng dụng. Ví dụ, một số thiết bị HTC Wildfire có phân vùng bộ nhớ cache 35-40 MB. Nếu Google Play có thể xác định thiết bị không có bộ nhớ cache đủ lớn để lưu trữ ứng dụng, nó có thể lọc thiết bị đó để không hiển thị cho người dùng.

Tôi đã giải quyết vấn đề của mình bằng cách chuyển đổi tất cả các tệp PNG sang JPG, với chất lượng bị giảm một chút. Các .apktập tin bây giờ là 28 MB, mà là dưới bất kỳ ngưỡng Google Play đang thực thi cho điện thoại của tôi.

Tôi cũng đã xóa tất cả <uses-feature>nội dung và bây giờ chỉ có cái này:

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />

Thông tin rất thú vị và có giá trị. Và khó chịu đến nỗi điều này không được ghi lại ở bất cứ đâu.
Michael A.

2
Thật vậy, tôi thậm chí sẽ không bao giờ biết về vấn đề này nếu tôi không tình cờ có một chiếc điện thoại Wildfire.
Greg Hewgill

Tôi có 3 trò chơi: dung lượng 32MB, 35MB và 44MB. HTC Bravo của riêng tôi nhìn thấy hai trò chơi đầu tiên và không thấy trò chơi thứ ba trên cửa hàng. HTC của bạn tôi mong muốn S chỉ xem trò chơi đầu tiên. Vì vậy, rõ ràng kích thước của trò chơi phải dưới 33MB hoặc hơn để hiển thị cho hầu hết các thiết bị (?). Thật không may, tôi đã thấy câu trả lời này quá muộn và không biết về vấn đề này trong nhiều tháng ... Tôi chắc chắn rằng điều này phụ thuộc vào loại bộ xử lý của thiết bị, phiên bản OpenGL được hỗ trợ, các giới hạn được đặt trong tệp kê khai hoặc điều gì đó. Thở dài ..
iseeall 20/1213

7
Thật điên rồ khi Google không liệt kê lý do không tương thích trên Cửa hàng Play. Tôi luôn cho rằng ít nhất các nhà phát triển ứng dụng đã nhận được thông tin này và sẽ có ý thức chọn không hỗ trợ thiết bị của tôi. Làm thế nào mà tình hình vẫn như thế này trong thời gian dài?
Gerry

1
@GregHewgill Xin chào Greg. Tôi đã liên hệ với bộ phận hỗ trợ của Google về một loại sự cố tương tự. Vì kích thước ứng dụng của tôi chỉ có 5 MB nên tôi đã xem xét các tùy chọn khác nhau tại sao Google Play lại lọc ứng dụng của tôi trên một thiết bị cụ thể. Đã 72 giờ kể từ khi tôi liên lạc với họ và họ không quay lại với bất kỳ hình thức giải thích nào. Có cách nào tôi có thể liên hệ với Bộ phận hỗ trợ của Google ngoài Liên hệ với chúng tôi thông thường không?
hemanth kumar

15

Tôi cũng gặp phải vấn đề này - Tôi đã thực hiện tất cả quá trình phát triển của mình trên Lenovo IdeaTab A2107A-F và có thể chạy các bản phát triển trên đó và thậm chí phát hành các APK đã ký (được cài đặt bằng adb install) mà không gặp vấn đề gì. Sau khi nó được xuất bản ở chế độ thử nghiệm Alpha và có sẵn trên Google Play, tôi đã nhận được thông báo lỗi "không tương thích với thiết bị của bạn".

Hóa ra tôi đã đặt những AndroidManifest.xmlthứ sau đây từ một hướng dẫn:

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />

Vâng, Lenovo IdeaTab A2107A-F không có camera tự động lấy nét trên nó (điều mà tôi đã học được từ http://www.phonearena.com/phones/Lenovo-IdeaTab-A2107_id7611 , trong Nhược điểm: thiếu camera tự động lấy nét). Bất kể tôi có đang sử dụng tính năng đó hay không, Google Play đều từ chối. Khi điều đó đã bị xóa, tôi đã tạo lại APK của mình, tải nó lên Google Play và chắc chắn rằng IdeaTab của tôi hiện đã có trong danh sách thiết bị tương thích.

Vì vậy, hãy kiểm tra lại mọi thứ <uses-feature>và nếu bạn đã thực hiện một số thao tác sao chép từ web, hãy kiểm tra lại. Tỷ lệ cược là bạn yêu cầu một số tính năng mà bạn thậm chí không sử dụng.


3
Cảm ơn bạn ! Tôi đang sử dụng một <uses-feature>: <use-feature android: name = "android.hardware.camera2" /> khác và do đó tôi KHÔNG có thiết bị tương thích. Tôi đã xóa dòng và bây giờ có 10000.
Jack '

Bạn có thể thiết lập nó để vẫn tận dụng nó, nhưng không đòi hỏi nó: <sử dụng tính năng-android: name = "android.hardware.camera.autofocus" android: yêu cầu = "false" />
DrChandra

<use-feature android: name = "android.hardware.camera2" /> khiến ứng dụng của tôi không tương thích nên tôi không thể tìm thấy ứng dụng trên playstore. Cứu mạng tôi
Anand Savjani

11

Tôi cũng đã gặp sự cố này khi phát triển ứng dụng cho một khách hàng muốn có video ngoại tuyến từ ứng dụng của họ. Tôi đã viết một bài đăng trên blog về lý do tại sao ứng dụng tôi đã làm việc trong nhiều tháng không hiển thị trong cửa hàng Play cho thiết bị của tôi ( có thể tìm thấy bài đăng tại đây ). Tôi tìm thấy giống như @Greg Hewgill đã tìm thấy: Giới hạn phân vùng bộ nhớ cache trên một số thiết bị .

Cuộc hành trình không dừng lại đối với tôi ở đó. Khách hàng muốn có những video này trong ứng dụng và không muốn chất lượng của video bị giảm. Sau một số nghiên cứu, tôi phát hiện ra rằng việc sử dụng các tệp mở rộng là giải pháp hoàn hảo cho vấn đề của chúng tôi.

Để chia sẻ kiến ​​thức của mình với cộng đồng Android, tôi đã tổ chức một buổi nói chuyện tại droidconNL 2012 về các tệp mở rộng. Tôi đã tạo bản trình bày và mã mẫu để minh họa việc bắt đầu sử dụng tệp mở rộng có thể dễ dàng như thế nào. Đối với bất kỳ ai trong số các bạn muốn sử dụng tệp mở rộng để giải quyết vấn đề này, vui lòng xem bài đăng có chứa bản trình bày và mã mẫu


4
Liên kết hỗ trợ của Google được đề cập trong bài đăng của bạn hiện đã lỗi thời, liên kết mới là support.google.com/googleplay/android-developer/answer/… . Mong các bạn cập nhật bài viết với link mới nhất và btw, bài viết hay. !!
Rohan Kandwal

7

Bạn có thể muốn thử và đặt thuộc tính màn hình hỗ trợ:

<supports-screens
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:xlargeScreens="true" >
</supports-screens>

Wildfire có màn hình nhỏ và theo tài liệu thì thuộc tính này nên mặc định là "true" trong mọi trường hợp, nhưng có một số vấn đề đã biết với cài đặt màn hình hỗ trợ trên các điện thoại khác nhau, vì vậy tôi vẫn sẽ thử điều này.

Ngoài ra - như David gợi ý - luôn biên dịch và nhắm mục tiêu dựa trên phiên bản Android API mới nhất, trừ khi bạn có lý do chính đáng để không làm như vậy. Khá nhiều SDK trước 2.2 có một số vấn đề nghiêm trọng hoặc hành vi kỳ lạ; sự trợ giúp của SDK thứ hai để giải quyết hoặc che đậy rất nhiều (mặc dù không phải tất cả) chúng. Bạn có thể (và nên) sử dụng công cụ Lint để kiểm tra xem ứng dụng của bạn có tương thích với API 4 hay không khi chuẩn bị phát hành.


Cảm ơn, tôi đang chờ phản hồi từ bộ phận hỗ trợ nhà phát triển của Google cho yêu cầu hỗ trợ mới nhất của tôi. Tôi sẽ thử điều này sau khi nhận được phản hồi từ họ (tôi không muốn làm họ nhầm lẫn khi tải lên một APK khác). Sẽ cho bạn biết làm thế nào điều này thành ra.
Greg Hewgill

Hy vọng bạn không phải chờ đợi quá lâu. Họ không chính xác có tiếng về phản hồi nhanh chóng. :-)
Michael A.

Tôi đã quay đi quay lại vài lần với họ rồi, nhưng câu hỏi mới nhất của tôi vẫn chưa có câu trả lời khi xuất hiện vào 22 giờ. Thật khó chịu khi phải chờ đợi, nhưng ít nhất đây không phải là nhiệm vụ quan trọng hay bất cứ điều gì.
Greg Hewgill

Tôi chỉ muốn cho bạn biết rằng tôi đã tìm thấy vấn đề, hãy xem câu trả lời của tôi cho câu hỏi này. Cảm ơn bạn đã giúp đỡ.
Greg Hewgill

7

Finlay, tôi đã gặp phải vấn đề tương tự trong đơn đăng ký của mình. Tôi đã phát triển ứng dụng Gap điện thoại android:minSdkVersion="7" & android:targetSdkVersion="18"là phiên bản gần đây của nền tảng Android.

Tôi đã tìm thấy sự cố khi sử dụng Google Tài liệu

Có thể vấn đề là tôi đã viết một số chức năng JS hoạt động KEY-CODEđể chỉ xác thực Bảng chữ cái & Số nhưng bàn phím có mã phím khác đặc biệt cho bàn phím máy tính và bàn phím di động. Vì vậy, đó là vấn đề của tôi.

Tôi không chắc câu trả lời của mình có đúng hay không và có thể câu trả lời trên có thể hơi nhỏ nhưng tôi sẽ cố gắng liệt kê một số điểm cần lưu ý trong khi chúng tôi xây dựng ứng dụng. giải quyết loại vấn đề này.

  • Sử dụng android:minSdkVersion="?"theo yêu cầu của bạn và android:targetSdkVersion="?"phải là phiên bản mới nhất mà ứng dụng của bạn sẽ nhắm mục tiêu. xem thêm

  • Cố gắng chỉ thêm những quyền sẽ được sử dụng trong ứng dụng của bạn và xóa tất cả những quyền không cần thiết.

  • Kiểm tra màn hình được hỗ trợ bởi ứng dụng

    <supports-screens 
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:resizeable="true"
    android:smallScreens="true"
    android:xlargeScreens="true"/>
  • Có thể bạn đã triển khai một số mã trang phục hoặc tiện ích trang phục không thể chạy trong một số thiết bị hoặc tab muộn, vì vậy trước khi viết mã dài, trước tiên hãy thử viết một số mã beta và kiểm tra xem mã của bạn có chạy trong tất cả các thiết bị hay không .

  • Và tôi hy vọng Google sẽ xuất bản một công cụ có thể xác thực mã của bạn trước khi tải ứng dụng lên và cũng nói rằng vì một số lý do cụ thể, chúng tôi không cho phép chạy ứng dụng của bạn trên một số thiết bị để chúng tôi có thể dễ dàng giải quyết vấn đề đó.


6

Tôi có một vài gợi ý:

  1. Trước hết, có vẻ như bạn đang sử dụng API 4 làm mục tiêu của mình. AFAIK, bạn nên luôn biên dịch dựa trên SDK mới nhất và thiết lập cho android:minSdkVersionphù hợp.

  2. Với ý nghĩ đó, hãy nhớ rằng android:requiredthuộc tính đã được thêm vào API 5 :

Khai báo tính năng có thể bao gồm một android:required=["true" | "false"]thuộc tính (nếu bạn đang biên dịch dựa trên API cấp 5 trở lên), cho phép bạn chỉ định liệu ứng dụng (...)

Do đó, tôi khuyên bạn nên biên dịch dựa trên SDK 15, cũng đặt targetSdkVersionthành 15 và cung cấp chức năng đó.

Nó cũng hiển thị ở đây, trên trang web Play, là không tương thích với bất kỳ thiết bị nào mà tôi có (trùng hợp?) Gingerbread (Galaxy Ace và Galaxy Y ở đây). Nhưng nó cho thấy là tương thích với Galaxy Tab 10.1 ( Honeycomb ), Nexus S và Galaxy Nexus của tôi (cả trên ICS ).

Điều đó cũng khiến tôi tự hỏi, và đây là một phỏng đoán rất hoang đường, nhưng vì android.hardware.faketouch API11 + là gì , tại sao bạn không thử xóa nó đi để xem nó có hoạt động không? Hoặc có lẽ đó là tất cả những gì có liên quan, vì bạn đang cố gắng sử dụng các tính năng ( faketouch) và requiredthuộc tính không có trong API 4. Và trong trường hợp này, bạn nên biên dịch dựa trên API mới nhất.

Tôi sẽ thử điều đó trước tiên và xóa faketouchyêu cầu chỉ là phương sách cuối cùng (tất nhiên) --- vì nó hoạt động khi phát triển, tôi muốn nói rằng đó chỉ là vấn đề của ứng dụng đã biên dịch không nhận ra tính năng (do các yêu cầu SDK) , do đó để lại các vấn đề lọc không mong muốn trên Play.

Rất tiếc nếu suy đoán này không trả lời câu hỏi của bạn, nhưng rất khó để chẩn đoán những vấn đề đó và xác định giải pháp mà không thực sự kiểm tra. Hoặc ít nhất đối với tôi mà không có đủ kiến ​​thức thích hợp về cách Play thực sự lọc ứng dụng.

Chúc may mắn.


Cảm ơn, điều đó cho tôi một số ý tưởng cụ thể. Ban đầu tôi không có bất kỳ <uses-feature>thẻ nào , đó là một nỗ lực để làm cho nó tương thích với nhiều thiết bị hơn là ít hơn. Tôi sẽ thử thay đổi các thẻ phiên bản SDK, đó có vẻ là cách tiếp cận khả dĩ nhất. Tôi nên thêm rằng tôi đã sử dụng minSdkVersion="4"vì phiên bản đó không còn ngụ ý một số quyền (đọc trạng thái điện thoại, sửa đổi thẻ sd) mà ứng dụng của tôi không cần.
Greg Hewgill

Thay đổi các phiên bản SDK thành android:minSdkVersion="5" android:targetSdkVersion="15"cũng không giúp được gì. Tôi đã liên hệ với bộ phận hỗ trợ nhà phát triển của Google Play và hy vọng họ có thể cho tôi biết lý do. Chắc chắn sẽ rất tuyệt nếu lý do lọc được hiển thị trên trang ứng dụng Play.
Greg Hewgill

Vâng, điều đó sẽ rất tuyệt. Trong khi đó, bạn đã thử đặt faketouchrequired= false?
davidcesarino

Lần lặp lại mới nhất sẽ xóa tất cả <uses-feature>các thẻ vì bộ phận hỗ trợ của Google cho tôi biết lý do thẻ không khả dụng cho thiết bị của tôi là do android.hardware.faketouchtính năng này. Điều đó có vẻ vô lý, đặc biệt là vì một trong những phiên bản trước của tôi cũng không có <uses-feature>thẻ, nhưng bất cứ điều gì. Tôi đang chờ phản hồi của họ và tôi không muốn làm họ nhầm lẫn bằng cách tải lên một phiên bản khác. Sẽ thật tuyệt nếu có một cách để kiểm tra điều này mà không cần tải lên và xuất bản liên tục các APK mới.
Greg Hewgill

Tôi sẽ không nói là vô lý, bởi vì đó là một cờ được thêm vào các phiên bản sdk sau này (api 11), do đó tại sao tôi đề xuất biên dịch dựa trên và nhắm mục tiêu api15 (hãy nhớ thay đổi dự án của bạn, không chỉ là tệp kê khai). Tôi vẫn ngạc nhiên khi đặt nó theo yêu cầu = false mặc dù không hoạt động.
davidcesarino

6

Quyền bao hàm yêu cầu về tính năng

ví dụ: tính năng android.hardware.bl Bluetooth đã được thêm vào Android 2.2 (API cấp 8), nhưng API bluetooth mà nó đề cập đến đã được thêm vào Android 2.0 (API cấp 5). Do đó, một số ứng dụng đã có thể sử dụng API trước khi chúng có khả năng khai báo rằng chúng yêu cầu API thông qua hệ thống.

Để ngăn các ứng dụng đó vô tình được cung cấp, Google Play giả định rằng một số quyền liên quan đến phần cứng cho thấy rằng các tính năng phần cứng cơ bản là bắt buộc theo mặc định. Ví dụ: các ứng dụng sử dụng Bluetooth phải yêu cầu quyền BLUETOOTH trong một phần tử - đối với các ứng dụng cũ, Google Play giả định rằng khai báo quyền có nghĩa là tính năng android.hardware.bl Bluetooth cơ bản được ứng dụng yêu cầu và thiết lập lọc dựa trên tính năng đó .

Bảng dưới đây liệt kê các quyền ngụ ý các yêu cầu về tính năng tương đương với các yêu cầu được khai báo trong phần tử. Lưu ý rằng các khai báo, bao gồm mọi thuộc tính android: Required đã khai báo, luôn được ưu tiên hơn các tính năng được ngụ ý bởi các quyền bên dưới.

Đối với bất kỳ quyền nào bên dưới, bạn có thể tắt tính năng lọc dựa trên tính năng ngụ ý bằng cách khai báo rõ ràng tính năng ngụ ý một cách rõ ràng, trong một phần tử, với thuộc tính android: Required = "false". Ví dụ: để tắt bất kỳ bộ lọc nào dựa trên quyền CAMERA, bạn sẽ thêm khai báo này vào tệp kê khai:

<uses-feature android:name="android.hardware.camera" android:required="false" />


<uses-feature android:name="android.hardware.bluetooth" android:required="false" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-feature android:name="android.hardware.wifi" android:required="false" />

http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions


Cảm ơn bạn! Tôi không biết quyền sử dụng được mặc định cho tính năng được yêu cầu.
Jim Pekarek

5

Để đưa ra giải pháp bổ sung cho vấn đề 'Ứng dụng này không tương thích với ...' của bạn ở trên, hãy để tôi chia sẻ giải pháp của tôi cho một nguyên nhân sự cố khác. Tôi đã thử cài đặt một ứng dụng trên thiết bị Samsung Galaxy Y (GT-S6350) cấp thấp và gặp lỗi này từ Cửa hàng Play. Để kiểm tra các cấu hình AndroidManifest khác nhau, tôi đã tạo một tài khoản và thực hiện theo quy trình như được mô tả trong https://stackoverflow.com/a/5449397/372838 cho đến khi thiết bị của tôi hiển thị trong danh sách thiết bị được hỗ trợ.

Hóa ra là nhiều thiết bị trở nên không tương thích khi bạn sử dụng quyền Máy ảnh:

<uses-permission android:name="android.permission.CAMERA" />

Khi tôi xóa quyền cụ thể đó, ứng dụng đã có sẵn cho 1180 thiết bị thay vì 870. Hy vọng nó sẽ giúp ích cho ai đó


7
Có thể, điều này có thể giúp: <
use


3

Mặc dù đã có khá nhiều câu trả lời, nhưng tôi nghĩ câu trả lời của tôi có thể giúp ích cho một số người có cùng vấn đề với tôi. Trong trường hợp của tôi, sự cố là do các quyền sau được thêm vào theo đề xuất của mạng quảng cáo:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Hệ quả của các quyền trên là các tính năng sau được thêm tự động:

android.hardware.LOCATION
android.hardware.location.GPS
android.hardware.location.NETWORK

Lý do là "Google Play cố gắng khám phá các yêu cầu tính năng ngụ ý của ứng dụng bằng cách kiểm tra các phần tử khác được khai báo trong tệp kê khai, cụ thể là các phần tử." Hai thiết bị thử nghiệm của tôi không có các tính năng trên, vì vậy ứng dụng trở nên không tương thích với chúng. Xóa các quyền đó đã giải quyết được vấn đề ngay lập tức.


2

Tôi đã tìm thấy một cách bổ sung mà sự cố này xảy ra:
Hệ điều hành gốc trên điện thoại LG của tôi là Froyo (Android 2.2) và đã được cập nhật lên ICS (Android 4.0.4). Nhưng Bảng điều khiển dành cho nhà phát triển trên Google Play cho thấy rằng nó phát hiện điện thoại của tôi là thiết bị Froyo. (Google Play đã không cho phép tải xuống ứng dụng do lỗi 'không tương thích' sai, nhưng bằng cách nào đó nó vẫn phát hiện cài đặt.)

Cài đặt của điện thoại, trong 'phần mềm', hiển thị ICS V4.0.4. Có vẻ như thông tin máy chủ Google Play cho điện thoại không được cập nhật để phản ánh bản cập nhật ICS trên thiết bị. MinSDK của tệp kê khai ứng dụng được đặt thành Honeycomb (3.0), vì vậy tất nhiên Google Play sẽ lọc ra ứng dụng.

Ngoài ra quan tâm:
Ứng dụng sử dụng Thanh toán trong ứng dụng V3. Lần đầu tiên thông qua IabHelper cho phép ứng dụng mua hàng thông qua dịch vụ Google Play. Nhưng sau khi giao dịch mua được thực hiện, giao dịch mua KHÔNG được đưa vào kho và IabHelper báo cáo không có mặt hàng nào được sở hữu. Thông báo gỡ lỗi hiển thị kết quả "mua không thành công" từ giao dịch mua mặc dù cửa sổ Google Play thông báo "mua thành công".


0

Tôi đã từng gặp vấn đề tương tự. Nguyên nhân là do có mã phiên bản và số khác nhau trong tệp kê khai và tập lệnh xây dựng gradle của tôi. Tôi đã giải quyết vấn đề này bằng cách xóa mã phiên bản và số phiên bản khỏi tệp kê khai của mình và để gradle xử lý.


0

Tôi cũng có cùng một vấn đề. Tôi đã xuất bản một Ứng dụng ở chế độ Thử nghiệm được tạo bằng React Native 59. Ứng dụng này không tương thích với một số người thử nghiệm. Thông báo không rõ ràng về lý do tại sao ứng dụng không tương thích, sau khi tôi phát hiện ra rằng tôi đã hạn chế ứng dụng chỉ khả dụng cho một số quốc gia nhất định. đó là vấn đề, nhưng như tôi đã nói thông điệp không rõ ràng. trong Ứng dụng web của Cửa hàng Play, thông báo là: "ứng dụng này không tương thích với thiết bị của bạn". trong ứng dụng dành cho thiết bị di động, thông báo "Ứng dụng này không khả dụng ở quốc gia của bạn"


0

Nếu bạn ở đây vào năm 2020 và bạn nghĩ rằng thiết bị nhận được thông báo lỗi phải tương thích:

Một số ứng dụng lớn khác đã gặp phải vấn đề này bao gồm Instagram (hơn 1 tỷ lượt cài đặt) và Clash of Clans (hơn 100 triệu lượt cài đặt). Có vẻ như đây là một vấn đề với hệ điều hành Android của Google.

Để khắc phục thông báo lỗi “thiết bị của bạn không tương thích với phiên bản này”, hãy thử xóa bộ nhớ cache của Cửa hàng Google Play, sau đó xóa dữ liệu. Tiếp theo, khởi động lại Cửa hàng Google Play và thử cài đặt lại ứng dụng.

[ https://support.getupside.com/hc/en-us/articles/226667067--Device-not-comp Tương thích-error-message-in-Google-Play-Store]

Đây là liên kết đến trang hỗ trợ chính thức của Google mà bạn có thể liên kết với người dùng của mình về cách xóa bộ nhớ cache: https://support.google.com/googleplay/answer/7513003

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.