问题描述
我很犹豫要不要问这个问题,因为它看起来好像 很多人都有类似的问题,但我没有找到可以解决我的特定实例的解决方案.
I am hesitant to ask this question, because it appears as though many people have a similar problem and yet I have found no solution that solves my particular instance.
我开发了一个 Android 应用程序(链接到实际应用)并已将其上传到 Play 商店.Play 商店说
I have developed an Android app (link to the actual app) and have uploaded it to the Play store. The Play store says
此应用与您的 XT Mobile Network HTC HTC Wildfire S A510b 不兼容."
当然,那是我开发应用程序的手机,所以它应该兼容.其他设备有人说兼容,也有人说不兼容,但我找不到趋势.(显然我不知道有多少人使用 Android 设备.)
Of course that is the phone on which I developed the app, so it ought to be compatible. Some people with other devices say that it reports compatible, others say it reports incompatible, but I can find no trend. (Apparently I don't know very many people with Android devices.)
我尝试了以下方法:
按照 this 的建议将大型文件移出
res/raw
目录回答.里面唯一的文件是一个约 700 kB 的文本文件,但我把它移到assets/
没有明显变化.
moving a large-ish file out of the
res/raw
directory as suggested by this answer. The only file in there was a ~700 kB text file, but I moved it toassets/
with no apparent change.
添加以下两个功能断言:
adding the following two feature assertions:
<uses-feature android:name="android.hardware.faketouch" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
认为我的手机可能不支持通常的 android.hardware.touchscreen
功能,但同样没有明显变化.
thinking that maybe my phone doesn't claim to support the usual android.hardware.touchscreen
feature, but again, with no apparent change.
将 APK 上传到 Play 商店时,它报告为活动的唯一过滤器是 android.hardware.faketouch
功能.
When uploading the APK to the Play store, the only filter that it reports as active is the android.hardware.faketouch
feature.
以下是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'
为了完整起见,我的清单文件:
and for completeness, my manifest file:
<?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 商店的设备可用性"部分,我可以看到除了G1 (trout)"和Touch Viva (opal)"之外的所有 HTC 设备,包括 Wildfire S,都受支持,无论是那些是.实际上我看到Wildfire S (marvel)"和Wildfire S A515c (marvelc)"都被列为支持,但我的Wildfire S A510b"没有特别提及.这种子模型标识符有那么重要吗?我已经能够从 Google Play 将其他几个应用下载到我的手机上,没有任何问题.
In the "Device Availability" section of the Play store, I can see that all the HTC devices, including the Wildfire S, are supported except for "G1 (trout)" and "Touch Viva (opal)", whatever those are. Actually I see that both "Wildfire S (marvel)" and "Wildfire S A515c (marvelc)" are listed as supported, but my "Wildfire S A510b" is not specifically mentioned. Can this sort of sub-model identifier matter that much? I have been able to download several other apps from Google Play to my phone with no problems.
此时我没有做的唯一一件事是在上传最新版本后等待 4-6 小时(如 这条评论)看看它是否仍然说它与我的手机不兼容.但是,Play 商店页面目前显示的是 1.0.2,这是我上传的最新版本.
The only thing I haven't done at this point is wait 4-6 hours after uploading the latest version (as in this comment) to see whether it still says it's incompatible with my phone. However, the Play store page currently shows 1.0.2 which is the latest I have uploaded.
推荐答案
答案似乎只与应用程序大小有关.我创建了一个简单的hello world".清单文件中没有任何特殊内容的应用,将其上传到 Play 商店,并报告为与我的设备兼容.
The answer appears to be solely related to application size. I created a simple "hello world" app with nothing special in the manifest file, uploaded it to the Play store, and it was reported as compatible with my device.
除了在 res/drawable
目录中添加更多内容之外,我在这个应用程序中没有做任何更改.当 .apk
大小达到大约 32 MB 时,Play 商店开始报告我的应用与我的手机不兼容.
I changed nothing in this app except for adding more content into the res/drawable
directory. When the .apk
size reached about 32 MB, the Play store started reporting that my app was incompatible with my phone.
我将尝试联系 Google 开发人员支持并要求澄清此限制的原因.
I will attempt to contact Google developer support and ask for clarification on the reason for this limit.
更新:以下是 Google 开发者支持对此的回应:
UPDATE: Here is Google developer support response to this:
感谢您的来信.目前,将应用上传到 Google Play 的最大文件大小限制约为 50 MB.
Thank you for your note. Currently the maximum file size limit for an app upload to Google Play is approximately 50 MB.
但是,某些设备的缓存分区可能小于 50 MB,因此用户无法下载该应用.例如,某些 HTC Wildfire 设备以拥有 35-40 MB 的缓存分区而闻名.如果 Google Play 能够识别出此类设备没有足够大的缓存来存储应用程序,它可能会过滤掉它,使其不显示给用户.
However, some devices may have smaller than 50 MB cache partition making the app unavailable for users to download. For example, some of HTC Wildfire devices are known for having 35-40 MB cache partitions. If Google Play is able to identify such device that doesn't have cache large enough to store the app, it may filter it from appearing for the user.
我最终通过将所有 PNG 文件转换为 JPG 来解决我的问题,但质量损失很小..apk
文件现在为 28 MB,低于 Google Play 对我的手机实施的任何阈值.
I ended up solving my problem by converting all the PNG files to JPG, with a small loss of quality. The .apk
file is now 28 MB, which is below whatever threshold Google Play is enforcing for my phone.
我还删除了所有 <uses-feature>
东西,现在只有这个:
I also removed all the <uses-feature>
stuff, and now have just this:
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
这篇关于为什么 Google Play 商店说我的 Android 应用与我自己的设备不兼容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!