為什么應用商店里搜索不到你的App?


最近連續有國外的客戶報告在某些特定的Android設備上搜索不到我們的應用。

一開始懷疑uses-feature的設置排除了硬件不支持的設備。我們在manifest里有以下設置:

<uses-feature android:glEsVersion="0x00020000" ></uses-feature>

該設置會排除不支持OpenGL ES 2.0的設備,但是客戶報告的設備Sony Xperia Tablet Z是支持OpenGL ES 2.0的。需要注意的是,據《Beginning Android Games》一書所說,這個東西,有時候不靈(感謝這篇博客)。

NOTE: This feature is reported incorrectly by some devices out there, making your application invisible to otherwise perfectly fine devices. Use it with caution.

更穩妥的做法是設置android:required為false。這表示不支持OpenGL ES 2.0的設備也可以搜索到App並安裝,但是需要在代碼里判斷做一些該做的事。

<uses-feature android:glEsVersion="0x00020000" android:required="false"></uses-feature>

排除這個,繼續找原因。

manifest里還有一些permission,有些permission需要硬件權限,即,其隱含了uses-feature,也會排除一些不支持該feature的設備。這可是一個大坑。

檢查我們App的設置,有如下兩項。

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

PROCESS_OUTGOING_CALLS需要android.hardware.telephony,就是說等同於設置了“android.hardware.telephony”的uses-feature,不支持電話功能的tablet,無法在應用商店里搜索到該應用。 測試一下這個猜測,在ASUS TF101(沒有電話功能)上的Google Play搜索,搜不到我們App,在Samsung Nexus S手機上的Google Play搜索同樣的關鍵詞,可以搜到我們的App。感謝這篇博客

測試一下這個猜測,在ASUS TF101(沒有電話功能)上的Google Play搜索,搜不到我們App,在Samsung Nexus S手機上的Google Play搜索同樣的關鍵詞,可以搜到我們的App。感謝這篇博客

其實,Google的developer.android.com里都介紹了上面說的這些。仔細閱讀以下內容還是很有必要的。

1. Google Play and Feature-Based Filtering: http://developer.android.com/guide/topics/manifest/uses-feature-element.html#market-feature-filtering

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

3. Permissions:http://developer.android.com/guide/topics/security/permissions.html

如果需要設置一個permission,但又不希望其implicit的uses-feature過濾掉設備,可以用uses-feature的android:required="false"屬性設置來達到目的。

再試驗一下,修改manifest后做了一個App的簽名apk上傳到Google Play,不發布,只看一眼預覽,可以看到,之前支持1247個設備(不支持1891個),現在支持1638個設備(391 added)。

顯示remove掉了“android.hardware.telephony”這個feature的過濾。

這個故事結束了,經上線驗證,可行。接下來是另一個故事。

有個日本客戶,拿兩台Acer Iconia Tab測試,一台A100,一台A500。報告我們說某款應用在A100上可以安裝,A500上顯示“未對應裝置”,無法安裝。但是在Google Play Developer Console里顯示為“對應裝置”。

在Developer Console里都顯示為對應裝置,應該不是上述故事中說的坑。而A100和A500的區別是,A100的屏是7.0 inches,1024*600 pixels,A500的屏是10.1 inches,1080*800 pixels。

一篇日文文章里提到Motorola Xoom 10英寸平板遇到的類似問題時有這么一句:

Xoomは10インチタブレットなので、xlargeサイズ扱いとなり、対象外になってしまったと。

Google翻譯說:

Xoom是10英寸平板電腦,大小XLARGE處理,

雖然不懂日語,但也知道這和android:xlargeScreens="true"有關。可是,在另一款App的manifest文件里,也沒有如下設置,卻不會在A500上有問題。

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

差異在android:targetSdkVersion。

android:xlargeScreens屬性是從API level 9(Android 2.3)開始才支持的。

出問題的那款App,沒有顯式指定android:targetSdkVersion,於是targetSdkVersion等於minSdkVersion,為8。

經測試,指定targetSdkVersion為9即可解決該坑。 

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="9" />

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM