Google Play上支持的设备0

时间:2015-04-10 15:26:56

标签: android google-play signalr

我知道类似的问题已发布here。 我将应用程序上传到Google Play商店,但它与所有设备不兼容。 该应用实际上是一个基于SignalR的聊天应用程序。 看看这个图像 enter image description here

我正在附加AndroidManifest.xml文件。非常感谢。

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

<supports-screens 
      android:smallScreens="true" 
      android:normalScreens="true" 
      android:largeScreens="true"
      android:xlargeScreens="true"
      android:anyDensity="true" />
<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="19" 
    android:maxSdkVersion="21" />

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission     android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

我正在使用signalr库。我正在使用这个库来安装android中的聊天应用程序。 我首先开发了基于eclipse的项目并使用jar文件。应用程序运行正常。

但是当我尝试将应用上传到Google Play时,它会向我显示一条消息,表明您的应用不支持任何设备。 我甚至尝试上传没有库的应用程序,然后上传支持超过6K的Android设备。

由于这个库已更新为gradle for android.So我只是将其转换为android studio的gradle项目。工作完美但仍然不会支持任何设备。

这些是我在eclipse和android studio中使用的jar文件 enter image description here

5 个答案:

答案 0 :(得分:10)

上周我遇到了同样的情况。

我发现主要问题是“signalr-client-sdk.jar”包装不正确的安卓。

  “signalr-client-sdk.jar”

中的

文件夹

signalr-client-sdk.jar
|
|-lib
|  |
|  |-getLibs.ps1
|  |-getLibs.sh
|  |-gson-2.2.2.jar

这三个文件将被打包到apk“lib”文件夹中。 当您的应用程序使用armeabi,x86,x86_64本机supprot库(* .so)时它会正常工作,但没有错误。并使谷歌开发者控制台网站过滤限定符支持设备错误。

  

使用此代码来解决问题

packagingOptions {
  exclude 'lib/getLibs.ps1'
  exclude 'lib/getLibs.sh'
  exclude 'lib/gson-2.2.2.jar'
}

希望这有帮助

答案 1 :(得分:9)

我通过修复冲突的jar文件解决了这个问题。我把它们发布在github上。 https://github.com/eak65/FixedSignalRJar

答案 2 :(得分:5)

最后我解决了这个问题。这里已经发布了两个解决方案。

  

解决方案1:使用aar文件

第1步

首先我将我的eclipse项目转换为Gradle。

第2步

从此link下载最新的SignalR。生成aar文件。 将这些文件添加为依赖项。

第3步

更新了我的清单文件。我错过了一些位置支持权限。 现在这是新的AndroidManifest.xml

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

<uses-feature
    android:name="android.permission.INTERNET"
    android:required="false" />
<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="19"
    android:maxSdkVersion="21" />

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

<compatible-screens>

    <!-- small size screens -->
    <screen android:screenSize="small" android:screenDensity="ldpi" />
    <screen android:screenSize="small" android:screenDensity="mdpi" />
    <screen android:screenSize="small" android:screenDensity="hdpi" />
    <screen android:screenSize="small" android:screenDensity="xhdpi" />

    <!--Only hdpi and xhdpi for normal size screens -->
    <screen android:screenSize="normal" android:screenDensity="ldpi" />
    <screen android:screenSize="normal" android:screenDensity="mdpi" />
    <screen android:screenSize="normal" android:screenDensity="hdpi" />
    <screen android:screenSize="normal" android:screenDensity="xhdpi" />

    <!-- all large size screens -->
    <screen android:screenSize="large" android:screenDensity="ldpi" />
    <screen android:screenSize="large" android:screenDensity="mdpi" />
    <screen android:screenSize="large" android:screenDensity="hdpi" />
    <screen android:screenSize="large" android:screenDensity="xhdpi" />

    <!-- all xlarge size screens -->
    <screen android:screenSize="xlarge" android:screenDensity="ldpi" />
    <screen android:screenSize="xlarge" android:screenDensity="mdpi" />
    <screen android:screenSize="xlarge" android:screenDensity="hdpi" />
    <screen android:screenSize="xlarge" android:screenDensity="xhdpi" />

    <!-- Special case for Nexus 7 -->
    <screen android:screenSize="large" android:screenDensity="213" />

</compatible-screens>


<permission android:name="com.test.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
<uses-permission android:name="com.test.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

当然它也有应用标签和活动。

  

解决方案2:使用jar文件

第1步

在主包中创建一个名为“libs”的目录并粘贴所有jar文件。您可以从此link下载jar文件

enter image description here

第2步

在主程序包/ app的build.gradle中添加依赖项 enter image description here

第3步

现在这是我的项目的主build.gradle的样子。 enter image description here

第4步

这就是我的settings.gradle的样子

enter image description here

第5步

完成所有这些步骤后,您仍然会导致导入错误。使缓存无效并重新启动

enter image description here

  

Google Play上的最终输出

现在它支持超过7K的设备

enter image description here

干杯:)

答案 3 :(得分:0)

我们取得了一些成功,并且能够将SignalR成功集成到我们的Android应用程序中,并拥有可在多个设备上正常运行的APK。但是,每当我们尝试将我们的APK上传到Play商店时,它总会报告0支持设备。

如果我们删除SignalR Java / Android Cient .JAR文件,则此数字将再次返回。

通过与Google Play支持的讨论,我们获得了以下洞察力:

  

感谢您的耐心等待。我的工具已确认问题是   由以下声明为本机平台引起的:   getLibs.ps1,getLibs.sh,gson-2.2.2.jar

     

虽然我们能够确定权限或功能   导致兼容性冲突,我们无法提供技术   发展支持解释冲突发生的原因或方式   解决冲突。对不起,我们无法提供具体的信息   分辨率。

     

问题肯定是因为将库用作本机   平台。

只是部分答案,但只想分享其他遇到此问题的人

一旦我们使用.AAR文件,我们就能够生成APK,但是SignalR Connection不再有效。请注意@Jhonny如何设法使其工作,但我们只能生成一个.AAR文件(对于android),但一般的java模块不能编译成.AAR。

答案 4 :(得分:0)

默认情况下,任何Android功能都有android:required =&#34; true&#34;。因此,当您将apk上传到Google Play时,机器人会看到android:required =&#34; true&#34;。除非该功能可用,否则它会假定您的应用无法正常工作。因此,您可以获得这个&#34; 0设备&#34;。

简单地制作android:required =&#34; false&#34;解决了这个问题。