Saya ragu untuk menanyakan pertanyaan ini, karena tampaknya banyak orang memiliki masalah yang sama, namun saya tidak menemukan solusi yang dapat menyelesaikan contoh khusus saya.
Saya telah mengembangkan aplikasi Android ( tautan ke aplikasi sebenarnya ) dan telah mengunggahnya ke Play Store. Kata Play Store
"This app is incompatible with your XT Mobile Network HTC HTC Wildfire S A510b."
Tentu saja itu adalah ponsel yang saya kembangkan aplikasinya, jadi itu harus kompatibel. Beberapa orang dengan perangkat lain mengatakan bahwa itu laporan kompatibel, yang lain mengatakan itu laporan tidak kompatibel, tetapi saya tidak dapat menemukan tren. (Rupanya saya tidak terlalu mengenal banyak orang yang memiliki perangkat Android.)
Saya telah mencoba yang berikut ini:
memindahkan file berukuran besar keluar dari
res/raw
direktori seperti yang disarankan oleh jawaban ini . Satu-satunya file di sana adalah file teks ~ 700 kB, tetapi saya memindahkannya keassets/
tanpa perubahan yang jelas.menambahkan dua pernyataan fitur berikut:
<uses-feature android:name="android.hardware.faketouch" /> <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
berpikir bahwa mungkin ponsel saya tidak mengklaim mendukung
android.hardware.touchscreen
fitur biasa , tetapi sekali lagi, tanpa perubahan yang jelas.
Saat mengupload APK ke Play Store, satu-satunya filter yang dilaporkan sebagai aktif adalah android.hardware.faketouch
fiturnya.
Berikut adalah keluaran dari 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'
dan untuk kelengkapan, file manifes saya:
<?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>
Di bagian "Ketersediaan Perangkat" di Play Store, saya dapat melihat bahwa semua perangkat HTC, termasuk Wildfire S, didukung kecuali untuk "G1 (trout)" dan "Touch Viva (opal)", apa pun itu. Sebenarnya saya melihat bahwa "Wildfire S (marvel)" dan "Wildfire S A515c (marvelc)" terdaftar sebagai didukung, tetapi "Wildfire S A510b" saya tidak disebutkan secara spesifik. Dapatkah pengidentifikasi sub-model semacam ini sangat berarti? Saya dapat mengunduh beberapa aplikasi lain dari Google Play ke ponsel saya tanpa masalah.
Satu-satunya hal yang belum saya lakukan pada saat ini adalah menunggu 4-6 jam setelah mengunggah versi terbaru (seperti dalam komentar ini ) untuk melihat apakah ia masih mengatakan itu tidak kompatibel dengan ponsel saya. Namun, halaman Play Store saat ini menampilkan 1.0.2 yang merupakan yang terbaru yang saya unggah.
sumber
handleSilentException
metode untuk melaporkan secara diam-diam. Setidaknya itu akan memberi tahu Anda perangkat keras mana yang sedang digunakan aplikasi.Jawaban:
Jawabannya tampaknya hanya terkait dengan ukuran aplikasi. Saya membuat aplikasi "hello world" sederhana tanpa ada yang spesial di file manifes, mengunggahnya ke Play Store, dan dilaporkan kompatibel dengan perangkat saya.
Saya tidak mengubah apa pun di aplikasi ini kecuali untuk menambahkan lebih banyak konten ke
res/drawable
direktori. Ketika.apk
ukurannya mencapai sekitar 32 MB, Play Store mulai melaporkan bahwa aplikasi saya tidak kompatibel dengan ponsel saya.Saya akan mencoba menghubungi dukungan pengembang Google dan meminta klarifikasi tentang alasan batas ini.
PEMBARUAN : Berikut adalah tanggapan dukungan pengembang Google untuk ini:
Saya akhirnya menyelesaikan masalah saya dengan mengonversi semua file PNG ke JPG, dengan sedikit penurunan kualitas. Itu
.apk
file sekarang 28 MB, yang berada di bawah ambang batas apapun Google Play menegakkan untuk telepon saya.Saya juga menghapus semua
<uses-feature>
barang, dan sekarang hanya memiliki ini:<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
sumber
Saya mengalami ini juga - saya melakukan semua pengembangan saya pada Lenovo IdeaTab A2107A-F dan dapat menjalankan pengembangan yang dibangun di atasnya, dan bahkan merilis APK yang ditandatangani (diinstal dengan
adb install
) tanpa masalah. Setelah diterbitkan dalam mode uji Alfa dan tersedia di Google Play, saya menerima pesan kesalahan "tidak kompatibel dengan perangkat Anda".Ternyata saya telah menempatkan saya
AndroidManifest.xml
berikut dari tutorial:<uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.CAMERA" />
Nah, Lenovo IdeaTab A2107A-F tidak memiliki kamera pemfokusan otomatis (yang saya pelajari dari http://www.phonearena.com/phones/Lenovo-IdeaTab-A2107_id7611 , di bawah Cons: tidak memiliki kamera autofokus). Terlepas dari apakah saya menggunakan fitur itu, Google Play mengatakan tidak. Setelah itu dihapus, saya membangun kembali APK saya, mengunggahnya ke Google Play, dan cukup yakin IdeaTab saya sekarang ada di daftar perangkat yang kompatibel.
Jadi, periksa kembali setiap
<uses-feature>
dan jika Anda telah melakukan beberapa salin-tempel dari web, periksa lagi. Kemungkinan besar Anda meminta beberapa fitur yang bahkan tidak Anda gunakan.sumber
Saya mengalami masalah ini juga saat mengembangkan aplikasi untuk pelanggan yang ingin video offline tersedia dari aplikasi mereka. Saya telah menulis posting blog tentang mengapa aplikasi yang saya kerjakan selama berbulan-bulan tidak akan muncul di play store untuk perangkat saya ( posting dapat ditemukan di sini ). Saya menemukan hal yang sama seperti yang ditemukan @Greg Hewgill: Batasan partisi cache pada beberapa perangkat .
Perjalanan saya tidak berhenti di sana. Pelanggan ingin memiliki video ini dalam aplikasi dan tidak ingin kualitas videonya diturunkan. Setelah beberapa penelitian, saya menemukan bahwa menggunakan file perluasan adalah solusi sempurna untuk masalah kami.
Untuk berbagi pengetahuan saya dengan komunitas Android, saya mengadakan pembicaraan di droidconNL 2012 tentang file perluasan. Saya membuat presentasi dan kode contoh untuk menggambarkan betapa mudahnya untuk mulai menggunakan file perluasan. Bagi Anda yang ingin menggunakan file perluasan untuk mengatasi masalah ini, silakan lihat postingan yang berisi presentasi dan kode sampel
sumber
Anda mungkin ingin mencoba dan mengatur atribut support-screens:
<supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true" > </supports-screens>
Wildfire memiliki layar kecil, dan menurut dokumentasi atribut ini harus default ke "true" dalam semua kasus, tetapi ada masalah yang diketahui dengan pengaturan layar dukungan pada ponsel yang berbeda, jadi saya akan mencobanya.
Selain itu - seperti yang disarankan David - selalu kompilasi dan targetkan terhadap versi terbaru Android API, kecuali Anda memiliki alasan kuat untuk tidak melakukannya. Hampir setiap SDK sebelum 2.2 memiliki beberapa masalah serius atau perilaku aneh; bantuan SDK yang terakhir untuk menyelesaikan atau menutupi banyak (meskipun tidak semuanya). Anda bisa (dan harus) menggunakan fitur Lint untuk memeriksa apakah aplikasi Anda tetap kompatibel dengan API 4 saat menyiapkan rilis.
sumber
Finlay, saya menghadapi masalah yang sama dalam aplikasi saya. Saya telah mengembangkan aplikasi Phone Gap
android:minSdkVersion="7" & android:targetSdkVersion="18"
yang merupakan versi terbaru dari platform android.Saya menemukan masalah dalam menggunakan Google Docs
Mungkin masalah adalah bahwa saya telah menulis beberapa fungsi JS yang berfungsi
KEY-CODE
untuk memvalidasi hanya Huruf & Angka tetapi papan tombol memiliki kode kunci yang berbeda khusus untuk keyboard komputer & keyboard Seluler. Jadi itu masalah saya.Saya tidak yakin apakah jawaban saya benar atau tidak dan mungkin bisa jadi jawaban di atas lebih sedikit tetapi saya akan mencoba mencantumkan beberapa poin yang harus diperhatikan saat kami membangun aplikasi. Saya harap Anda mengikuti ini untuk memecahkan masalah semacam ini.
Gunakan
android:minSdkVersion="?"
sesuai kebutuhan Anda &android:targetSdkVersion="?"
harus terbaru yang akan ditargetkan aplikasi Anda. lihat lebih banyakCoba tambahkan hanya izin yang akan digunakan dalam aplikasi Anda dan hapus semua yang tidak perlu.
Lihat layar yang didukung oleh aplikasi
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true"/>
Mungkin Anda telah menerapkan beberapa kode kostum atau widget kostum yang tidak dapat berjalan di beberapa perangkat atau tab terlambat jadi sebelum menulis kode yang panjang pertama coba tulis beberapa kode beta dan uji apakah kode Anda akan berjalan di semua perangkat atau tidak .
Dan saya berharap Google akan menerbitkan alat yang dapat memvalidasi kode Anda sebelum mengunggah aplikasi dan juga mengatakan bahwa karena beberapa alasan tertentu kami tidak diizinkan untuk menjalankan aplikasi Anda di beberapa perangkat sehingga kami dapat dengan mudah menyelesaikannya.
sumber
Saya punya beberapa saran:
Pertama-tama, Anda tampaknya menggunakan API 4 sebagai target Anda. AFAIK, merupakan praktik yang baik untuk selalu mengkompilasi terhadap SDK terbaru dan mengaturnya
android:minSdkVersion
sesuai kebutuhan Anda .Dengan mengingat hal itu, ingatlah bahwa
android:required
atribut telah ditambahkan di API 5 :Oleh karena itu, saya menyarankan agar Anda mengkompilasi terhadap SDK 15, setel
targetSdkVersion
ke 15 juga, dan menyediakan fungsionalitas itu.Itu juga ditampilkan di sini, di situs Play, sebagai tidak kompatibel dengan perangkat apa pun yang saya miliki yang (kebetulan?) Gingerbread (Galaxy Ace dan Galaxy Y di sini). Tapi itu terlihat kompatibel dengan Galaxy Tab 10.1 ( Honeycomb ) saya, Nexus S dan Galaxy Nexus (keduanya di ICS ).
Itu juga membuat saya bertanya-tanya, dan ini adalah tebakan yang sangat liar, tetapi karena
android.hardware.faketouch
API11 + , mengapa Anda tidak mencoba menghapusnya hanya untuk melihat apakah berfungsi? Atau mungkin itu semua terkait, karena Anda mencoba menggunakan fitur (faketouch
) danrequired
atribut yang tidak tersedia di API 4. Dan dalam hal ini Anda harus melakukan kompilasi dengan API terbaru.Saya akan mencobanya terlebih dahulu, dan menghapus
faketouch
persyaratan hanya sebagai pilihan terakhir (tentu saja) --- karena berfungsi saat mengembangkan, saya katakan itu hanya masalah aplikasi yang dikompilasi yang tidak mengenali fitur tersebut (karena persyaratan SDK) , sehingga meninggalkan masalah pemfilteran yang tidak terduga di Play.Maaf jika tebakan ini tidak menjawab pertanyaan Anda, tetapi sangat sulit untuk mendiagnosis masalah semacam itu dan menunjukkan solusinya tanpa benar-benar menguji. Atau setidaknya bagi saya tanpa pengetahuan yang tepat tentang bagaimana Play benar-benar memfilter aplikasi.
Semoga berhasil.
sumber
<uses-feature>
tag sama sekali, itu merupakan upaya untuk membuatnya kompatibel dengan lebih banyak perangkat daripada lebih sedikit. Saya akan mencoba mengubah tag versi SDK, yang tampaknya merupakan pendekatan yang paling mungkin. Saya harus menambahkan yang saya gunakanminSdkVersion="4"
karena versi itu tidak lagi menyiratkan beberapa izin (baca status ponsel, ubah kartu sd) yang tidak diperlukan aplikasi saya.android:minSdkVersion="5" android:targetSdkVersion="15"
juga tidak membantu. Saya telah menghubungi dukungan pengembang Google Play dan semoga mereka dapat memberi tahu saya alasannya. Alangkah baiknya jika alasan pemfilteran ditampilkan di halaman aplikasi Play.faketouch
sebagairequired= false
?<uses-feature>
tag karena dukungan Google memberi tahu saya alasan tidak tersedia untuk perangkat saya adalah karenaandroid.hardware.faketouch
fiturnya. Kelihatannya konyol, terutama karena salah satu versi saya sebelumnya juga tidak memiliki<uses-feature>
tag, tapi terserah. Saya menunggu tanggapan mereka dan saya tidak ingin membingungkan mereka dengan mengupload versi lain. Alangkah baiknya jika ada cara untuk mengujinya tanpa berulang kali mengunggah dan memublikasikan APK baru.Untuk memberikan solusi tambahan untuk masalah 'Aplikasi ini tidak kompatibel dengan ...' di atas, izinkan saya membagikan solusi saya untuk penyebab masalah yang berbeda. Saya mencoba menginstal aplikasi pada perangkat Samsung Galaxy Y (GT-S6350) kelas bawah dan mendapatkan kesalahan ini dari Play store. Untuk menguji berbagai konfigurasi AndroidManifest, saya membuat akun dan mengikuti rutinitas seperti yang dijelaskan di https://stackoverflow.com/a/5449397/372838 hingga perangkat saya muncul di daftar perangkat yang didukung.
Ternyata banyak perangkat menjadi tidak kompatibel saat Anda menggunakan izin Kamera:
<uses-permission android:name="android.permission.CAMERA" />
Ketika saya menghapus izin khusus itu, aplikasi itu tersedia untuk 1180 perangkat, bukan 870. Semoga ini bisa membantu seseorang
sumber
Izin yang Menyiratkan Persyaratan Fitur
Misalnya, fitur android.hardware.bluetooth telah ditambahkan di Android 2.2 (API level 8), tetapi Bluetooth API yang dirujuknya telah ditambahkan di Android 2.0 (API level 5). Karenanya, beberapa aplikasi dapat menggunakan API sebelum mereka memiliki kemampuan untuk menyatakan bahwa mereka memerlukan API melalui sistem.
Untuk mencegah aplikasi tersebut tersedia secara tidak sengaja, Google Play mengasumsikan bahwa izin terkait perangkat keras tertentu menunjukkan bahwa fitur perangkat keras yang mendasarinya diperlukan secara default. Misalnya, aplikasi yang menggunakan Bluetooth harus meminta izin BLUETOOTH dalam sebuah elemen - untuk aplikasi lama, Google Play mengasumsikan bahwa deklarasi izin tersebut berarti bahwa fitur android.hardware.bluetooth yang mendasarinya diperlukan oleh aplikasi dan menyiapkan pemfilteran berdasarkan fitur tersebut .
Tabel di bawah mencantumkan izin yang menyiratkan persyaratan fitur yang setara dengan yang dideklarasikan dalam elemen. Perhatikan bahwa deklarasi, termasuk atribut android: required yang dideklarasikan, selalu didahulukan daripada fitur yang disiratkan oleh izin di bawah ini.
Untuk salah satu izin di bawah ini, Anda bisa menonaktifkan pemfilteran berdasarkan fitur tersirat dengan secara eksplisit mendeklarasikan fitur tersirat secara eksplisit, dalam sebuah elemen, dengan atribut android: required = "false". Misalnya, untuk menonaktifkan pemfilteran apa pun berdasarkan izin CAMERA, Anda akan menambahkan deklarasi ini ke file manifes:
<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
sumber
Biasanya, ditemukan tepat setelah memposting pertanyaan ini dengan putus asa; alat yang saya cari adalah:
$ aapt dump badging <my_apk.apk>
sumber
Meskipun sudah ada beberapa jawaban, saya pikir jawaban saya mungkin membantu beberapa orang yang memiliki masalah yang persis sama dengan saya. Dalam kasus saya, masalahnya disebabkan oleh izin berikut yang ditambahkan sesuai saran jaringan iklan:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Konsekuensi dari izin di atas adalah fitur berikut ditambahkan secara otomatis:
android.hardware.LOCATION android.hardware.location.GPS android.hardware.location.NETWORK
Alasannya adalah bahwa "Google Play mencoba menemukan persyaratan fitur tersirat aplikasi dengan memeriksa elemen lain yang dideklarasikan dalam file manifes, khususnya elemen." Dua dari perangkat pengujian saya tidak memiliki fitur di atas, sehingga aplikasi menjadi tidak kompatibel dengannya. Menghapus izin tersebut segera menyelesaikan masalah.
sumber
Saya menemukan cara tambahan di mana masalah ini terjadi:
OS asli ponsel LG saya adalah Froyo (Android 2.2) dan telah diperbarui ke ICS (Android 4.0.4). Tetapi Konsol Pengembang Google Play menunjukkan bahwa ia mendeteksi ponsel saya sebagai perangkat Froyo. (Google Play tidak mengizinkan aplikasi untuk diunduh karena 'ketidakcocokan' palsu, tetapi entah bagaimana itu masih mendeteksi pemasangan.)
Pengaturan telepon, dalam 'perangkat lunak', menunjukkan ICS V4.0.4. Tampaknya info server Google Play untuk ponsel tidak diperbarui untuk mencerminkan pembaruan ICS di perangkat. Manifes aplikasi minSDK disetel ke Honeycomb (3.0), jadi tentu saja Google Play memfilter aplikasi.
Yang menarik:Aplikasi ini menggunakan In-app Billing V3. Pertama kali melalui IabHelper memungkinkan aplikasi melakukan pembelian melalui layanan Google Play. Namun setelah pembelian dilakukan, pembelian TIDAK dimasukkan ke dalam inventaris dan IabHelper melaporkan tidak ada item yang dimiliki. Pesan debug menunjukkan hasil 'pembelian gagal' dari pembelian meskipun jendela Google Play mengumumkan "pembelian berhasil".
sumber
Saya memiliki masalah yang sama. Itu disebabkan oleh kode versi dan angka yang berbeda di manifes dan skrip build gradle saya. Saya mengatasinya dengan menghapus kode versi dan nomor versi dari manifes saya dan membiarkan gradle mengurusnya.
sumber
Saya juga punya masalah yang sama. Saya menerbitkan Aplikasi dalam mode Uji yang dibuat dengan React Native 59. itu tidak kompatibel untuk penguji tertentu. Pesannya tidak jelas tentang mengapa aplikasi tidak kompatibel, setelah saya mengetahui bahwa saya membatasi aplikasi untuk hanya tersedia untuk negara tertentu. itu masalahnya, tapi seperti yang saya katakan, pesannya tidak jelas. di Play Store WebApp, pesannya adalah: "aplikasi ini tidak kompatibel dengan perangkat Anda". di aplikasi seluler, pesan "Aplikasi ini tidak tersedia di negara Anda"
sumber
Jika Anda berada di sini pada tahun 2020 dan menurut Anda perangkat yang menerima pesan kesalahan seharusnya kompatibel:
[ https://support.getupside.com/hc/en-us/articles/226667067--Device-not-compatible-error-message-in-Google-Play-Store]
Berikut ini tautan ke halaman dukungan resmi Google yang dapat Anda tautkan ke pengguna Anda tentang cara membersihkan cache: https://support.google.com/googleplay/answer/7513003
sumber