[英]Supported devices 0 on Google play
我知道這里發布了類似的問題。 我將應用程序上傳到Google Play商店,但它與所有設備不兼容。 該應用實際上是一個基於SignalR的聊天應用程序。 看看這個圖像
我正在附加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"/>
我正在使用信號器庫。我正在使用這個庫在android中的聊天應用程序。 我首先開發了基於eclipse的項目並使用jar文件。應用程序運行正常。
但是,當我嘗試將應用程序上傳到Google Play時,它會向我顯示一條消息,指出您的應用不支持任何設備。 我甚至嘗試上傳沒有庫的應用程序,然后它上傳支持超過6K的Android設備。
因為這個庫是為gradle for android更新的。所以我只是將它轉換為android studio的gradle項目。工作完美但仍然不支持任何設備。
這些是我在eclipse和android studio中使用的jar文件
上周我遇到了同樣的情況。
我發現主要問題是“signalr-client-sdk.jar”包裝不正確的android。
“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)時它會正常工作,但沒有錯誤。 並使谷歌開發者控制台web過濾限定符支持設備錯誤。
把這段代碼解決問題
packagingOptions {
exclude 'lib/getLibs.ps1'
exclude 'lib/getLibs.sh'
exclude 'lib/gson-2.2.2.jar'
}
希望這可以幫助
我通過修復沖突的jar文件解決了這個問題。 我把它們發布在github上。 https://github.com/eak65/FixedSignalRJar
最后我解決了這個問題。這里已經發布了兩個解決方案。
解決方案1:使用aar文件
第1步
首先我將我的eclipse項目轉換為Gradle。
第2步
從此鏈接下載最新的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文件。您可以從此鏈接下載jar文件
第2步
在主包/ app的build.gradle中添加依賴項
第3步
現在這是我的項目的主build.gradle的樣子。
第四步
這就是我的settings.gradle的樣子
第5步
完成所有這些步驟后,您仍然會導致導入錯誤。這會使緩存失效並重新啟動
Google Play上的最終輸出
現在它支持超過7K的設備
干杯:)
我們取得了一些成功,並且能夠將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。
默認情況下,任何Android功能都有android:required =“true”。 因此,當您將apk上傳到Google Play時,機器人會看到android:required =“true”。 除非該功能可用,否則它假定您的應用無法運行。 因此,您將獲得“0設備支持”。
簡單地制作android:required =“false”解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.