เหตุใด Google Play Store จึงแจ้งว่าแอป Android ของฉันใช้งานร่วมกับอุปกรณ์ของฉันไม่ได้


91

ฉันลังเลที่จะถามคำถามนี้เพราะดูเหมือนว่าหลาย ๆ คนจะมีปัญหาคล้าย ๆ กันแต่ฉันก็ยังไม่พบวิธีแก้ปัญหาที่ช่วยแก้ปัญหาเฉพาะของฉันได้

ฉันได้พัฒนาแอป Android ( ลิงก์ไปยังแอปจริง ) และอัปโหลดไปยัง Play store Play store กล่าว

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

แน่นอนว่าเป็นโทรศัพท์ที่ฉันพัฒนาแอปดังนั้นจึงควรเข้ากันได้ บางคนที่มีอุปกรณ์อื่น ๆ บอกว่ามันรายงานว่าเข้ากันได้บางคนบอกว่ารายงานว่าเข้ากันไม่ได้ แต่ฉันไม่พบแนวโน้ม (เห็นได้ชัดว่าฉันไม่รู้จักคนจำนวนมากที่มีอุปกรณ์ Android)

ฉันได้ลองทำสิ่งต่อไปนี้แล้ว:

  • การย้ายไฟล์ขนาดใหญ่ออกจากres/rawไดเร็กทอรีตามที่คำตอบนี้แนะนำ ไฟล์เดียวในนั้นคือไฟล์ข้อความ ~ 700 kB แต่ฉันย้ายไปassets/โดยไม่มีการเปลี่ยนแปลงที่ชัดเจน

  • เพิ่มการยืนยันคุณสมบัติสองประการต่อไปนี้:

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

    คิดว่าบางทีโทรศัพท์ของฉันไม่ได้อ้างว่ารองรับandroid.hardware.touchscreenคุณสมบัติปกติแต่อีกครั้งโดยไม่มีการเปลี่ยนแปลงที่ชัดเจน

เมื่ออัปโหลด APK ไปยัง Play store ตัวกรองเดียวที่รายงานว่าใช้งานได้คือandroid.hardware.faketouchคุณลักษณะนี้

ต่อไปนี้เป็นผลลัพธ์ของ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'

และเพื่อความสมบูรณ์ไฟล์รายการของฉัน:

<?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> 

ในส่วน "ความพร้อมใช้งานของอุปกรณ์" ของ Play store ฉันเห็นว่าอุปกรณ์ HTC ทั้งหมดรวมถึง Wildfire S ได้รับการสนับสนุนยกเว้น "G1 (ปลาเทราท์)" และ "Touch Viva (โอปอล)" ไม่ว่าจะเป็นอะไรก็ตาม อันที่จริงฉันเห็นว่าทั้ง "Wildfire S (marvel)" และ "Wildfire S A515c (marvelc)" อยู่ในรายการที่รองรับ แต่ "Wildfire S A510b" ของฉันไม่ได้ระบุไว้เป็นพิเศษ ตัวระบุรุ่นย่อยประเภทนี้มีความสำคัญมากขนาดนั้นเลยหรือ ฉันสามารถดาวน์โหลดแอปอื่น ๆ จาก Google Play ลงในโทรศัพท์ได้โดยไม่มีปัญหา

สิ่งเดียวที่ฉันยังไม่ได้ทำในตอนนี้คือรอ 4-6 ชั่วโมงหลังจากอัปโหลดเวอร์ชันล่าสุด (ตามความคิดเห็นนี้ ) เพื่อดูว่ามันยังบอกว่ามันเข้ากันไม่ได้กับโทรศัพท์ของฉัน อย่างไรก็ตามขณะนี้หน้า Play store แสดง 1.0.2 ซึ่งเป็นเวอร์ชันล่าสุดที่ฉันได้อัปโหลด


สิ่งที่ช่วยฉันได้มากกับปัญหาที่เกี่ยวข้องกับโทรศัพท์คือการตั้งค่า ACRA: code.google.com/p/acraฉันเรียกใช้เมื่อเริ่มต้นแอปพลิเคชันครั้งแรกเพื่อดึงข้อมูลจำเพาะทั้งหมดของโทรศัพท์ลงและใช้handleSilentExceptionวิธีการรายงานแบบเงียบ ๆ อย่างน้อยมันจะบอกคุณว่าฮาร์ดแวร์ตัวไหนที่แอปทำงานอยู่
Gavin Miller

2
@GavinMiller: ขอบคุณ แต่ฉันไม่แน่ใจว่าจะช่วยได้เมื่อ Play store ปฏิเสธที่จะส่งมอบแอปเลย
Greg Hewgill

บางทีฉันอาจเข้าใจความคิดเห็นของคุณผิด: "บางคนที่มีอุปกรณ์อื่น ๆ บอกว่ามันรายงานว่าเข้ากันได้คนอื่น ๆ บอกว่ามันรายงานว่าใช้ร่วมกันไม่ได้ หากหลายคนที่คุณไม่รู้จักสามารถดาวน์โหลดและติดตั้งแอปได้คุณสามารถรวบรวมข้อมูลฮาร์ดแวร์จำนวนมากเพื่อลองสร้างเทรนด์ จึงช่วยบรรเทาปัญหา "ฉันไม่รู้จักคนจำนวนมากที่มีอุปกรณ์ Android" ปัญหา.
Gavin Miller

@GavinMiller: อย่างไรก็ตามนั่นจะบอกฉันเพียงว่าอุปกรณ์ใดที่ Google Play เชื่อว่าสามารถติดตั้งได้และจะไม่ให้ข้อมูลเกี่ยวกับอุปกรณ์ที่ Google Play เชื่อว่าไม่สามารถติดตั้งได้ นอกจากนี้แม้จะรู้ด้วยความมั่นใจว่าอุปกรณ์ใดใช้ได้และไม่ได้ใช้งานก็ไม่ช่วยฉันแก้ปัญหานี้ได้จริงๆ
Greg Hewgill

ตรวจสอบว่าโซลูชันนี้ใช้งานได้สำหรับฉันstackoverflow.com/a/14020303/3392323
SAndroidD

คำตอบ:


84

คำตอบดูเหมือนจะเกี่ยวข้องกับขนาดของแอปพลิเคชันเท่านั้น ฉันสร้างแอป "สวัสดีชาวโลก" แบบธรรมดาโดยไม่มีอะไรพิเศษในไฟล์รายการอัปโหลดไปยัง Play Store และได้รับรายงานว่าเข้ากันได้กับอุปกรณ์ของฉัน

ฉันไม่ได้เปลี่ยนแปลงอะไรเลยในแอพนี้ยกเว้นการเพิ่มเนื้อหาลงในres/drawableไดเร็กทอรี เมื่อ.apkขนาดถึงประมาณ 32 MB Play store ก็เริ่มรายงานว่าแอปของฉันไม่สามารถทำงานร่วมกับโทรศัพท์

ฉันจะพยายามติดต่อฝ่ายสนับสนุนนักพัฒนาของ Google และขอคำชี้แจงเกี่ยวกับเหตุผลของการ จำกัด นี้

อัปเดต : นี่คือคำตอบสำหรับการสนับสนุนนักพัฒนาของ Google สำหรับสิ่งนี้:

ขอบคุณสำหรับบันทึกของคุณ ขณะนี้ขีด จำกัด ขนาดไฟล์สูงสุดสำหรับการอัปโหลดแอปไปยัง Google Play คือประมาณ 50 MB

อย่างไรก็ตามอุปกรณ์บางอย่างอาจมีพาร์ติชันแคชที่เล็กกว่า 50 MB ทำให้แอปไม่พร้อมให้ผู้ใช้ดาวน์โหลด ตัวอย่างเช่นอุปกรณ์ HTC Wildfire บางเครื่องเป็นที่ทราบกันดีว่ามีพาร์ติชันแคช 35-40 MB หาก Google Play สามารถระบุอุปกรณ์ดังกล่าวที่มีแคชไม่ใหญ่พอที่จะจัดเก็บแอปได้อุปกรณ์ดังกล่าวอาจกรองไม่ให้ปรากฏสำหรับผู้ใช้

ฉันแก้ปัญหาได้โดยการแปลงไฟล์ PNG ทั้งหมดเป็น JPG โดยที่คุณภาพลดลงเล็กน้อย .apkไฟล์อยู่ในขณะนี้ 28 ล้านบาทซึ่งต่ำกว่าเกณฑ์สิ่งที่ Google Play บังคับใช้สำหรับโทรศัพท์ของฉัน

ฉันลบทุกอย่างออกไป<uses-feature>ด้วยและตอนนี้มีแค่นี้:

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

ข้อมูลที่น่าสนใจและมีค่ามาก และน่ารำคาญมากที่ไม่ได้รับการบันทึกไว้ที่ใด
Michael A.

2
อันที่จริงฉันจะไม่เคยรู้เลยเกี่ยวกับปัญหานี้ถ้าฉันไม่ได้มีโทรศัพท์ Wildfire
Greg Hewgill

ฉันมี 3 เกม: ขนาด 32MB, 35MB และ 44MB HTC bravo ของฉันเห็นสองเกมแรกและไม่เห็นเกมที่สามในร้านค้า HTC ปรารถนา S ของเพื่อนผมเห็นแค่เกมแรก ดังนั้นเห็นได้ชัดว่าขนาดของเกมควรต่ำกว่า 33MB หรือมากกว่านั้นเพื่อให้อุปกรณ์ส่วนใหญ่ (?) มองเห็นได้ น่าเสียดายที่ฉันเห็นคำตอบนี้ช้าเกินไปและไม่ทราบปัญหามาหลายเดือนแล้ว ... ฉันแน่ใจว่ามันขึ้นอยู่กับประเภทโปรเซสเซอร์ของอุปกรณ์เวอร์ชัน OpenGL ที่รองรับข้อ จำกัด ที่ตั้งไว้ในรายการหรือบางอย่าง เฮ้อ ..
iseeall

7
เป็นเรื่องบ้าที่ Google ไม่ได้ระบุสาเหตุของความไม่ลงรอยกันใน Play store ฉันคิดเสมอว่าอย่างน้อยนักพัฒนาแอปจะได้รับข้อมูลนี้และมีสติเลือกที่จะไม่สนับสนุนอุปกรณ์ของฉัน สถานการณ์ยังคงเป็นเช่นนี้มานานได้อย่างไร?
Gerry

1
@GregHewgill สวัสดีเกร็ก ฉันได้ติดต่อฝ่ายสนับสนุนของ Google เกี่ยวกับปัญหาที่คล้ายกัน เนื่องจากขนาดแอปของฉันมีขนาดเพียง 5 MB ฉันจึงมองหาตัวเลือกต่างๆว่าทำไม Google Play จึงกรองแอปพลิเคชันของฉันบนอุปกรณ์บางเครื่อง เป็นเวลา 72 ชั่วโมงแล้วที่ฉันติดต่อกับพวกเขาและพวกเขาไม่ได้กลับมาพร้อมกับคำอธิบายใด ๆ มีวิธีใดบ้างที่ฉันสามารถติดต่อฝ่ายสนับสนุนของ Google นอกเหนือจากการติดต่อเราตามปกติ
hemanth kumar

16

ฉันพบสิ่งนี้เช่นกัน - ฉันทำการพัฒนาทั้งหมดบน Lenovo IdeaTab A2107A-F และสามารถเรียกใช้การพัฒนาที่สร้างขึ้นได้และยังปล่อย APK ที่ลงชื่อ (ติดตั้งด้วยadb install) โดยไม่มีปัญหา เมื่อเผยแพร่ในโหมดทดสอบอัลฟ่าและพร้อมใช้งานบน Google Play ฉันได้รับข้อความแสดงข้อผิดพลาด "เข้ากันไม่ได้กับอุปกรณ์ของคุณ"

ปรากฎว่าฉันได้วางAndroidManifest.xmlสิ่งต่อไปนี้จากบทช่วยสอน:

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

Lenovo IdeaTab A2107A-F ไม่มีกล้องออโต้โฟกัส (ซึ่งฉันเรียนรู้จากhttp://www.phonearena.com/phones/Lenovo-IdeaTab-A2107_id7611ภายใต้จุดด้อย: ไม่มีกล้องออโต้โฟกัส) ไม่ว่าฉันจะใช้ฟีเจอร์นั้นหรือไม่ Google Play ก็ตอบว่าไม่ เมื่อลบแล้วฉันสร้าง APK ของฉันใหม่อัปโหลดไปยัง Google Play และตอนนี้ IdeaTab ของฉันก็อยู่ในรายการอุปกรณ์ที่เข้ากันได้

ดังนั้นให้ตรวจสอบอีกครั้ง<uses-feature>ว่าคุณได้ทำการคัดลอกวางจากการตรวจสอบเว็บอีกครั้งหรือไม่ คุณขอคุณสมบัติบางอย่างที่คุณไม่ได้ใช้


4
ขอบคุณ ! ฉันใช้ <uses-feature> อื่น: <use-feature android: name = "android.hardware.camera2" /> และด้วยเหตุนั้นฉันจึงมีอุปกรณ์ที่รองรับ ZERO ฉันลบไลน์ออกและตอนนี้มีเงิน 10,000
แจ็ค

คุณสามารถตั้งค่าให้ยังคงใช้ประโยชน์ได้ แต่ไม่จำเป็นต้องใช้: <use-feature android: name = "android.hardware.camera.autofocus" android: required = "false" />
DrChandra

1
<use-feature android: name = "android.hardware.camera2" /> ทำให้แอปของฉันเข้ากันไม่ได้ดังนั้นฉันจึงไม่พบแอปใน playstore ช่วยชีวิตฉัน
Anand Savjani

11

ฉันประสบปัญหานี้เช่นกันในขณะที่พัฒนาแอปพลิเคชันสำหรับลูกค้าที่ต้องการให้มีวิดีโอออฟไลน์จากแอปพลิเคชันของตน ฉันได้เขียนบล็อกโพสต์เกี่ยวกับสาเหตุที่แอปที่ฉันใช้งานมาหลายเดือนไม่ปรากฏใน play store สำหรับอุปกรณ์ของฉัน ( สามารถดูโพสต์ได้ที่นี่ ) ฉันพบสิ่งเดียวกับที่ @Greg Hewgill พบ: ข้อ จำกัด ของพาร์ติชันแคชในอุปกรณ์บางอย่างพาร์ทิชันแคชบนอุปกรณ์บางอย่าง

การเดินทางไม่ได้หยุดสำหรับฉันที่นั่น ลูกค้าต้องการมีวิดีโอเหล่านี้ในแอปพลิเคชันและไม่ต้องการให้คุณภาพของวิดีโอลดลง หลังจากการวิจัยบางส่วนฉันพบว่าการใช้ไฟล์สำหรับขยายเป็นวิธีแก้ปัญหาที่สมบูรณ์แบบสำหรับเรา

เพื่อแบ่งปันความรู้ของฉันกับชุมชน Android ฉันได้พูดคุยที่droidconNL 2012เกี่ยวกับไฟล์สำหรับขยาย ฉันสร้างงานนำเสนอและโค้ดตัวอย่างเพื่อแสดงให้เห็นว่าการเริ่มใช้ไฟล์ส่วนขยายนั้นง่ายเพียงใด สำหรับทุกคนที่ต้องการใช้ไฟล์สำหรับขยายเพื่อแก้ปัญหานี้โปรดตรวจสอบโพสต์ที่มีการนำเสนอและโค้ดตัวอย่าง


4
การเชื่อมโยงการสนับสนุนของ Google กล่าวถึงในบทความของคุณจะล้าสมัยในขณะนี้, การเชื่อมโยงใหม่เป็นsupport.google.com/googleplay/android-developer/answer/... หวังว่าคุณจะอัปเดตบทความด้วยลิงค์ล่าสุดและ btw โพสต์ที่ดี !!
Rohan Kandwal

7

คุณอาจต้องการลองตั้งค่าคุณสมบัติหน้าจอที่รองรับ:

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

Wildfire มีหน้าจอขนาดเล็กและตามเอกสารประกอบแอตทริบิวต์นี้ควรตั้งค่าเริ่มต้นเป็น "จริง" ในทุกกรณี แต่มีปัญหาที่ทราบเกี่ยวกับการตั้งค่าหน้าจอที่รองรับในโทรศัพท์เครื่องอื่นดังนั้นฉันจะลองทำต่อไป

นอกจากนี้ - ตามที่ David แนะนำ - รวบรวมและกำหนดเป้าหมายตาม Android API เวอร์ชันล่าสุดเสมอเว้นแต่คุณจะมีเหตุผลที่ชัดเจนที่จะไม่ทำ เกือบทุก SDK ก่อน 2.2 มีปัญหาร้ายแรงหรือพฤติกรรมแปลก ๆ ความช่วยเหลือของ SDK หลังในการแก้ไขหรือปกปิดจำนวนมาก (แม้ว่าจะไม่ใช่ทั้งหมด) คุณสามารถ (และควร) ใช้เครื่องมือ Lint เพื่อตรวจสอบว่าแอปของคุณยังใช้งานร่วมกับ API 4 ได้หรือไม่เมื่อเตรียมรุ่น


ขอขอบคุณฉันกำลังรอการตอบกลับจากฝ่ายสนับสนุนนักพัฒนาของ Google สำหรับคำขอการสนับสนุนล่าสุดของฉัน ฉันจะลองสิ่งนี้หลังจากได้รับคำตอบจากพวกเขา (ฉันไม่อยากทำให้สับสนด้วยการอัปโหลด APK อื่น) จะแจ้งให้คุณทราบว่าสิ่งนี้เกิดขึ้นได้อย่างไร
Greg Hewgill

หวังว่าคงไม่ต้องรอนาน พวกเขาไม่ได้มีชื่อเสียงในด้านการตอบสนองที่รวดเร็ว :-)
Michael A.

ฉันกลับไปมาสองสามครั้งแล้ว แต่คำถามล่าสุดของฉันยังไม่ได้รับคำตอบสำหรับ 22 ชั่วโมง มันน่าผิดหวังที่ต้องรอ แต่อย่างน้อยนี่ก็ไม่ใช่ภารกิจสำคัญหรืออะไร
Greg Hewgill

แค่อยากจะแจ้งให้คุณทราบว่าฉันพบปัญหาดูคำตอบของฉันสำหรับคำถามนี้ ขอบคุณสำหรับความช่วยเหลือของคุณ.
Greg Hewgill

7

Finlay ฉันประสบปัญหาเดียวกันในใบสมัครของฉัน ฉันได้พัฒนาแอพ Phone Gap android:minSdkVersion="7" & android:targetSdkVersion="18"ซึ่งเป็นแพลตฟอร์ม Android เวอร์ชันล่าสุด

ฉันพบปัญหาในการใช้Google เอกสาร

อาจเป็นปัญหาคือฉันได้เขียนฟังก์ชัน JS ซึ่งใช้งานได้KEY-CODEเพื่อตรวจสอบความถูกต้องเฉพาะตัวอักษรและตัวเลข แต่คียบอร์ดมีรหัสคีย์ที่แตกต่างกันโดยเฉพาะสำหรับแป้นพิมพ์คอมพิวเตอร์และแป้นพิมพ์มือถือ นั่นคือปัญหาของฉัน

ฉันไม่แน่ใจว่าคำตอบของฉันถูกต้องหรือไม่และอาจเป็นไปได้ว่าอาจเป็นคำตอบที่กล่าวมาข้างต้น แต่ฉันจะพยายามระบุจุดที่ควรดูแลในขณะที่เรากำลังสร้างแอปฉันหวังว่าคุณจะทำตามสิ่งนี้ แก้ปัญหาประเภทนี้

  • ใช้android:minSdkVersion="?"ตามความต้องการของคุณและandroid:targetSdkVersion="?"ควรเป็นข้อมูลล่าสุดที่แอปของคุณจะกำหนดเป้าหมาย ดูเพิ่มเติม

  • พยายามเพิ่มเฉพาะสิทธิ์ที่จะใช้ในแอปพลิเคชันของคุณและลบสิ่งที่ไม่จำเป็นออกทั้งหมด

  • ตรวจสอบหน้าจอที่รองรับตามแอปพลิเคชัน

    <supports-screens 
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:resizeable="true"
    android:smallScreens="true"
    android:xlargeScreens="true"/>
    
  • อาจเป็นคุณได้ใช้รหัสเครื่องแต่งกายหรือวิดเจ็ตเครื่องแต่งกายบางอย่างซึ่งไม่สามารถทำงานในอุปกรณ์หรือแท็บบางอย่างได้ล่าช้าดังนั้นก่อนที่จะเขียนโค้ดแบบยาวก่อนอื่นให้ลองเขียนโค้ดเบต้าและทดสอบว่าโค้ดของคุณจะทำงานในอุปกรณ์ทั้งหมดหรือไม่ .

  • และฉันหวังว่า Google จะเผยแพร่เครื่องมือที่สามารถตรวจสอบความถูกต้องของโค้ดของคุณก่อนที่จะอัปโหลดแอปและยังบอกด้วยว่าเนื่องจากเหตุผลบางประการเราไม่อนุญาตให้เรียกใช้แอปของคุณในบางอุปกรณ์เพื่อให้เราสามารถแก้ไขได้อย่างง่ายดาย


6

ฉันมีคำแนะนำสองสามข้อ:

  1. ก่อนอื่นดูเหมือนว่าคุณจะใช้ API 4 เป็นเป้าหมาย AFAIK เป็นแนวทางปฏิบัติที่ดีในการคอมไพล์กับ SDK ล่าสุดและตั้งค่าandroid:minSdkVersionตามนั้น

  2. ด้วยเหตุนี้โปรดจำไว้ว่ามีการเพิ่มandroid:requiredแอตทริบิวต์ใน API 5 :

การประกาศคุณลักษณะสามารถรวมandroid:required=["true" | "false"]แอตทริบิวต์ (หากคุณกำลังรวบรวมกับ API ระดับ 5 หรือสูงกว่า) ซึ่งช่วยให้คุณระบุว่าแอปพลิเคชัน (... )

ดังนั้นฉันขอแนะนำให้คุณคอมไพล์กับ SDK 15 ตั้งค่าtargetSdkVersionเป็น 15 เช่นกันและระบุฟังก์ชันนั้น

นอกจากนี้ยังแสดงที่นี่บนไซต์ Play ด้วยว่าเข้ากันไม่ได้กับอุปกรณ์ใด ๆ ที่ฉันมีนั่นคือ (บังเอิญ?) Gingerbread (Galaxy Ace และ Galaxy Y ที่นี่) แต่แสดงว่าเข้ากันได้กับ Galaxy Tab 10.1 ( Honeycomb ), Nexus S และ Galaxy Nexus ของฉัน (ทั้งบนICS )

นั่นทำให้ฉันสงสัยเช่นกันและนี่เป็นการเดาที่ดุเดือดมากแต่เนื่องจากandroid.hardware.faketouch เป็น API11 +ทำไมคุณไม่ลองลบออกเพื่อดูว่าใช้งานได้หรือไม่? หรืออาจเกี่ยวข้องกันทั้งหมดเนื่องจากคุณกำลังพยายามใช้คุณสมบัติ ( faketouch) และrequiredแอตทริบิวต์ที่ไม่มีใน API 4 และในกรณีนี้คุณควรคอมไพล์กับ API ล่าสุด

ฉันจะลองก่อนและลบfaketouchข้อกำหนดเป็นทางเลือกสุดท้ายเท่านั้น (แน่นอน) - เนื่องจากใช้งานได้เมื่อพัฒนาฉันจะบอกว่ามันเป็นเพียงเรื่องของแอพที่คอมไพล์แล้วไม่รู้จักคุณสมบัติ (เนื่องจากข้อกำหนด SDK) จึงทำให้เกิดปัญหาการกรองที่ไม่คาดคิดใน Play

ขออภัยหากการคาดเดานี้ไม่สามารถตอบคำถามของคุณได้ แต่เป็นการยากมากที่จะวินิจฉัยปัญหาเหล่านั้นและระบุวิธีแก้ปัญหาโดยไม่ต้องทดสอบจริง หรืออย่างน้อยสำหรับฉันที่ไม่มีความรู้ที่ถูกต้องเกี่ยวกับวิธีที่ Play กรองแอปจริงๆ

โชคดี.


ขอบคุณที่ให้ความคิดที่เฉพาะเจาะจงแก่ฉัน เดิมทีฉันไม่มี<uses-feature>แท็กเลยนั่นเป็นความพยายามที่จะทำให้เข้ากันได้กับอุปกรณ์ต่างๆมากกว่าที่จะน้อย ฉันจะลองเปลี่ยนแท็กเวอร์ชัน SDK ซึ่งดูเหมือนเป็นแนวทางที่เป็นไปได้มากที่สุด ฉันควรเพิ่มที่ฉันใช้minSdkVersion="4"เพราะเวอร์ชันนั้นไม่มีการอนุญาตโดยนัยอีกต่อไป (อ่านสถานะโทรศัพท์แก้ไขการ์ด sd) ที่แอปของฉันไม่ต้องการ
Greg Hewgill

การเปลี่ยนเวอร์ชัน SDK เป็นandroid:minSdkVersion="5" android:targetSdkVersion="15"ไม่ได้ช่วยเช่นกัน ฉันได้ติดต่อฝ่ายสนับสนุนนักพัฒนาซอฟต์แวร์ Google Play แล้วและหวังว่าพวกเขาจะสามารถบอกเหตุผลได้ คงจะดีไม่น้อยหากเหตุผลของการกรองแสดงในหน้าแอป Play
Greg Hewgill

ใช่ว่าจะดีมาก ในขณะเดียวกันคุณลองตั้งค่าfaketouchเป็นrequired= false?
davidcesarino

การวนซ้ำครั้งล่าสุดจะลบ<uses-feature>แท็กทั้งหมดออกเนื่องจากฝ่ายสนับสนุนของ Google บอกฉันว่าสาเหตุที่อุปกรณ์ของฉันไม่สามารถใช้งานได้นั้นเป็นเพราะandroid.hardware.faketouchคุณลักษณะนี้ ดูเหมือนจะไร้สาระโดยเฉพาะอย่างยิ่งเนื่องจากเวอร์ชันก่อนหน้าของฉันไม่มี<uses-feature>แท็กด้วยเช่นกัน แต่อย่างใด ฉันกำลังรอการตอบกลับของพวกเขาและฉันไม่ต้องการทำให้พวกเขาสับสนด้วยการอัปโหลดเวอร์ชันอื่น คงจะดีไม่น้อยหากมีวิธีทดสอบโดยไม่ต้องอัปโหลดและเผยแพร่ APK ใหม่ซ้ำ ๆ
Greg Hewgill

ฉันจะไม่พูดว่าไร้สาระเพราะมันเป็นแฟล็กที่เพิ่มใน sdk เวอร์ชันหลัง ๆ (api 11) ด้วยเหตุนี้ฉันจึงแนะนำให้รวบรวมและกำหนดเป้าหมาย api15 (อย่าลืมเปลี่ยน project.properties ของคุณไม่ใช่แค่รายการ) ฉันยังแปลกใจที่ตั้งค่าตามต้องการ = false ไม่ได้ผล
davidcesarino

6

หากต้องการให้วิธีแก้ปัญหาเพิ่มเติมสำหรับปัญหา "แอปนี้เข้ากันไม่ได้กับ ... ฉันลองติดตั้งแอปบนอุปกรณ์ Samsung Galaxy Y (GT-S6350) ระดับล่างและได้รับข้อผิดพลาดนี้จาก Play store ในการทดสอบการกำหนดค่าต่างๆของ AndroidManifest ฉันได้สร้างบัญชีและทำตามขั้นตอนตามที่อธิบายไว้ในhttps://stackoverflow.com/a/5449397/372838จนกระทั่งอุปกรณ์ของฉันปรากฏในรายการอุปกรณ์ที่รองรับ

ปรากฎว่าอุปกรณ์จำนวนมากเข้ากันไม่ได้เมื่อคุณใช้สิทธิ์กล้องถ่ายรูป:

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

เมื่อฉันลบการอนุญาตเฉพาะนั้นแอปพลิเคชั่นนั้นสามารถใช้ได้กับอุปกรณ์ 1180 แทนที่จะเป็น 870 หวังว่ามันจะช่วยใครสักคน


7
อาจจะช่วยได้: <use-permission android: name = "android.permission.CAMERA" /> <
use

6

สิทธิ์ที่บ่งบอกถึงข้อกำหนดคุณสมบัติ

ตัวอย่างเช่นคุณสมบัติ android.hardware.bluetooth ถูกเพิ่มใน Android 2.2 (API ระดับ 8) แต่บลูทู ธ API ที่อ้างถึงนั้นถูกเพิ่มใน Android 2.0 (API ระดับ 5) ด้วยเหตุนี้แอปบางแอปจึงสามารถใช้ API ได้ก่อนที่จะสามารถประกาศได้ว่าต้องการ API ผ่านระบบ

เพื่อป้องกันไม่ให้แอปเหล่านั้นพร้อมใช้งานโดยไม่ได้ตั้งใจ Google Play จะถือว่าการอนุญาตที่เกี่ยวข้องกับฮาร์ดแวร์บางอย่างบ่งชี้ว่าคุณลักษณะของฮาร์ดแวร์ที่เป็นพื้นฐานเป็นสิ่งจำเป็นโดยค่าเริ่มต้น ตัวอย่างเช่นแอปพลิเคชันที่ใช้บลูทู ธ ต้องขออนุญาต BLUETOOTH ในองค์ประกอบ - สำหรับแอปเดิม Google Play ถือว่าการประกาศสิทธิ์หมายความว่าแอปพลิเคชันจำเป็นต้องใช้คุณสมบัติ android.hardware.bluetooth และตั้งค่าการกรองตามคุณสมบัตินั้น .

ตารางด้านล่างแสดงรายการสิทธิ์ที่บ่งบอกถึงข้อกำหนดคุณลักษณะที่เทียบเท่ากับที่ประกาศไว้ในองค์ประกอบ โปรดทราบว่าการประกาศรวมถึงแอนดรอยด์ที่ประกาศใด ๆ : แอตทริบิวต์ที่จำเป็นจะมีความสำคัญเหนือคุณลักษณะที่แสดงโดยนัยของสิทธิ์ด้านล่างนี้เสมอ

สำหรับสิทธิ์ด้านล่างนี้คุณสามารถปิดใช้งานการกรองตามคุณลักษณะโดยนัยโดยการประกาศคุณลักษณะโดยนัยอย่างชัดเจนในองค์ประกอบด้วยแอตทริบิวต์ android: required = "false" ตัวอย่างเช่นหากต้องการปิดใช้งานการกรองใด ๆ ตามสิทธิ์ของ CAMERA คุณจะต้องเพิ่มการประกาศนี้ในไฟล์รายการ:

<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


ขอบคุณ! ฉันไม่รู้ว่าสิทธิ์การใช้งานผิดนัดเป็นคุณลักษณะที่จำเป็น
Jim Pekarek

3

โดยทั่วไปแล้วพบได้ทันทีหลังจากโพสต์คำถามนี้ด้วยความสิ้นหวัง เครื่องมือที่ฉันกำลังมองหาคือ:

$ aapt dump badging <my_apk.apk>

ดูเหมือนว่าคุณตั้งใจจะโพสต์คำตอบนี้ในstackoverflow.com/questions/16145927/…แทน
Greg Hewgill

3

แม้ว่าจะมีคำตอบค่อนข้างน้อยอยู่แล้ว แต่ฉันคิดว่าคำตอบของฉันอาจช่วยบางคนที่มีปัญหาเดียวกันกับฉันได้ ในกรณีของฉันปัญหาเกิดจากการเพิ่มสิทธิ์ต่อไปนี้ตามคำแนะนำของเครือข่ายโฆษณา:

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

ผลของการอนุญาตข้างต้นคือคุณสมบัติต่อไปนี้จะถูกเพิ่มโดยอัตโนมัติ:

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

เหตุผลก็คือ "Google Play พยายามค้นหาข้อกำหนดคุณลักษณะโดยนัยของแอปพลิเคชันโดยการตรวจสอบองค์ประกอบอื่น ๆ ที่ประกาศในไฟล์รายการโดยเฉพาะองค์ประกอบ" อุปกรณ์ทดสอบของฉันสองเครื่องไม่มีคุณสมบัติข้างต้นดังนั้นแอปจึงไม่สามารถทำงานร่วมกับอุปกรณ์เหล่านี้ได้ การลบสิทธิ์เหล่านั้นช่วยแก้ปัญหาได้ทันที


2

ฉันพบวิธีเพิ่มเติมที่ทำให้เกิดปัญหานี้:
ระบบปฏิบัติการดั้งเดิมของโทรศัพท์ LG ของฉันคือ Froyo (Android 2.2) และอัปเดตเป็น ICS (Android 4.0.4) แต่คอนโซลของ Google Play Developers แสดงว่าตรวจพบว่าโทรศัพท์ของฉันเป็นอุปกรณ์ Froyo (Google Play ไม่อนุญาตให้ดาวน์โหลดแอปเนื่องจาก 'ความเข้ากันไม่ได้' ที่ผิดพลาด แต่ยังตรวจพบการติดตั้งอยู่)

การตั้งค่าของโทรศัพท์ใน 'ซอฟต์แวร์' จะแสดง ICS V4.0.4 ดูเหมือนว่าข้อมูลเซิร์ฟเวอร์ Google Play สำหรับโทรศัพท์ไม่ได้รับการอัปเดตเพื่อแสดงถึงการอัปเดต ICS บนอุปกรณ์ รายการแอป minSDK ถูกตั้งค่าเป็น Honeycomb (3.0) ดังนั้นแน่นอนว่า Google Play จะกรองแอปออก

สิ่งที่น่าสนใจเพิ่มเติม:
แอพนี้ใช้การเรียกเก็บเงินในแอป V3 ครั้งแรกที่ผ่าน IabHelper อนุญาตให้แอปซื้อสินค้าผ่านบริการ Google Play แต่หลังจากทำการซื้อแล้วการซื้อจะไม่ถูกใส่ในสินค้าคงคลังและ IabHelper รายงานว่าไม่มีสินค้าใดที่เป็นเจ้าของ ข้อความแก้ไขข้อบกพร่องแสดงผลลัพธ์ "การซื้อล้มเหลว" จากการซื้อแม้ว่าหน้าต่าง Google Play จะแจ้งว่า "ซื้อสำเร็จ"


0

ผมมีปัญหาเหมือนกัน. มันเกิดจากการมีรหัสเวอร์ชันและหมายเลขที่แตกต่างกันในไฟล์ manifest และ gradle build script ฉันแก้ไขได้โดยการลบรหัสเวอร์ชันและหมายเลขเวอร์ชันออกจากไฟล์ Manifest ของฉันและปล่อยให้ gradle ดูแล


0

ฉันก็มีปัญหาเดียวกัน ฉันเผยแพร่แอปในโหมดทดสอบที่สร้างด้วย React Native 59 มันไม่สามารถใช้งานร่วมกับผู้ทดสอบบางคนได้ ข้อความไม่ชัดเจนว่าเหตุใดแอปจึงไม่สามารถใช้งานร่วมกันได้หลังจากที่ฉันพบว่าฉัน จำกัด แอปให้ใช้งานได้ในบางประเทศเท่านั้น นั่นคือปัญหา แต่อย่างที่บอกว่าข้อความไม่ชัดเจน ใน Play Store WebApp มีข้อความว่า: "แอปนี้ไม่สามารถใช้งานร่วมกับอุปกรณ์ของคุณได้" ในแอปมือถือข้อความ "แอปนี้ไม่มีให้บริการในประเทศของคุณ"


0

หากคุณมาที่นี่ในปี 2020 และคิดว่าอุปกรณ์ที่ได้รับข้อความแสดงข้อผิดพลาดควรเข้ากันได้:

แอพหลักอื่น ๆ อีกมากมายได้เข้าร่วมสิ่งนี้รวมถึง Instagram (1B + installs) และ Clash of Clans (100M + installs) ดูเหมือนว่าจะมีปัญหากับระบบปฏิบัติการ Android ของ Google

ในการแก้ไขข้อความแสดงข้อผิดพลาด“ อุปกรณ์ของคุณเข้ากันไม่ได้กับเวอร์ชันนี้” ให้ลองล้างแคช Google Play Store จากนั้นจึงป้อนข้อมูล จากนั้นรีสตาร์ท Google Play Store และลองติดตั้งแอพอีกครั้ง

[ https://support.getupside.com/hc/en-us/articles/226667067--Device-not-compatible-error-message-in-Google-Play-Store]

นี่คือลิงก์ไปยังหน้าการสนับสนุนอย่างเป็นทางการของ Google ที่คุณสามารถเชื่อมโยงไปยังผู้ใช้ของคุณเกี่ยวกับวิธีล้างแคชได้ที่https://support.google.com/googleplay/answer/7513003

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.