我尝试上传很多次。关于同样的问题,我也看了很多其他的SO问题。在我的物理设备上运行正常,但在上传到谷歌播放时,它声明它支持0设备。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.slhdevelopmentf.ammobotammofinderprimetime">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@drawable/ammobot_main_icon"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name=".activities.MainActivity"
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=".activities.SecondaryActivity"
android:label="@string/title_activity_secondary" />
<activity
android:name=".activities.ShowGunbotDealActivity"
android:label="@string/title_activity_show_gunbot_deal" />
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />
</application>
这是我的项目目录的图片(使用android studio):
的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.slhdevelopmentf.ammobotammofinderprimetime"
minSdkVersion 9
targetSdkVersion 21
versionCode 7
versionName "2.2"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
resources.srcDirs = ['src/main/resources', 'src/main/resources/raw', 'src/main/resources/lib']
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile files('src/main/resources/lib/jsoup-1.8.1 (1).jar')
compile files('src/main/resources/lib/jsoup-1.8.1-javadoc.jar')
compile files('src/main/resources/lib/jxl.jar')
compile 'com.google.android.gms:play-services:6.+'
}
修改
所以我反编译了我的.apk。它显示android清单完全空白。
EDIT_1 所以我尝试在清单中添加标签,而不是依靠gradle。开发人员控制台仍然认为我的应用程序支持零设备(在测试设备上正常工作)。
我还创建了一个新的密钥库并生成了一个签名的apk。然后重命名我的包并上传到谷歌播放开发者控制台作为一个名为'test'的独立应用程序,它仍然说它支持零设备。
我还在windows中安装了android studio然后生成了签名的apk。它也没用。我这样做是为了确保它不是我的配置或操作系统。
可能的假设?
当我第一次下载它时,我以root身份启动了android studio:'sudo ./studio.sh'。我认为它可能会使它更具响应性。这导致android sdk以root身份安装。所以现在,我必须以root身份启动android studio。这对生成签名的apk有什么影响吗?也许是配置/构建文件?我确实在Windows机器上尝试过(仍然无法正常工作),但可能以root身份启动它搞砸了项目的构建文件。
AAPT OUTPUT 版本代码会有所不同,因为我曾尝试将其上传到谷歌播放很多次(必须更改版本号/代码)。
root@my-pc:/root/Android/Sdk/build-tools/21.1.2# /root/Android/Sdk/build-tools/21.1.2/aapt dump badging /home/horvste/Documents/PreviousCodeProjects/documents-export-2014-12-23/AmmoBot/app/build/outputs/apk/app-debug.apk
package: name='com.slhdevelopment.ammobot' versionCode='12' versionName='2.7' platformBuildVersionName='5.0.1-1624448'
sdkVersion:'9'
targetSdkVersion:'21'
uses-permission: name='android.permission.INTERNET'
uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
application-label:'AmmoBot'
application-label-ca:'AmmoBot'
application-label-da:'AmmoBot'
application-label-fa:'AmmoBot'
application-label-ja:'AmmoBot'
application-label-nb:'AmmoBot'
application-label-de:'AmmoBot'
application-label-af:'AmmoBot'
application-label-bg:'AmmoBot'
application-label-th:'AmmoBot'
application-label-fi:'AmmoBot'
application-label-hi:'AmmoBot'
application-label-vi:'AmmoBot'
application-label-sk:'AmmoBot'
application-label-uk:'AmmoBot'
application-label-el:'AmmoBot'
application-label-nl:'AmmoBot'
application-label-pl:'AmmoBot'
application-label-sl:'AmmoBot'
application-label-tl:'AmmoBot'
application-label-am:'AmmoBot'
application-label-in:'AmmoBot'
application-label-ko:'AmmoBot'
application-label-ro:'AmmoBot'
application-label-ar:'AmmoBot'
application-label-fr:'AmmoBot'
application-label-hr:'AmmoBot'
application-label-sr:'AmmoBot'
application-label-tr:'AmmoBot'
application-label-cs:'AmmoBot'
application-label-es:'AmmoBot'
application-label-it:'AmmoBot'
application-label-lt:'AmmoBot'
application-label-pt:'AmmoBot'
application-label-hu:'AmmoBot'
application-label-ru:'AmmoBot'
application-label-zu:'AmmoBot'
application-label-lv:'AmmoBot'
application-label-sv:'AmmoBot'
application-label-iw:'AmmoBot'
application-label-sw:'AmmoBot'
application-label-fr-CA:'AmmoBot'
application-label-lo-LA:'AmmoBot'
application-label-en-GB:'AmmoBot'
application-label-bn-BD:'AmmoBot'
application-label-et-EE:'AmmoBot'
application-label-ka-GE:'AmmoBot'
application-label-ky-KG:'AmmoBot'
application-label-km-KH:'AmmoBot'
application-label-zh-HK:'AmmoBot'
application-label-si-LK:'AmmoBot'
application-label-mk-MK:'AmmoBot'
application-label-ur-PK:'AmmoBot'
application-label-hy-AM:'AmmoBot'
application-label-my-MM:'AmmoBot'
application-label-zh-CN:'AmmoBot'
application-label-ta-IN:'AmmoBot'
application-label-te-IN:'AmmoBot'
application-label-ml-IN:'AmmoBot'
application-label-en-IN:'AmmoBot'
application-label-kn-IN:'AmmoBot'
application-label-mr-IN:'AmmoBot'
application-label-mn-MN:'AmmoBot'
application-label-ne-NP:'AmmoBot'
application-label-pt-BR:'AmmoBot'
application-label-gl-ES:'AmmoBot'
application-label-eu-ES:'AmmoBot'
application-label-is-IS:'AmmoBot'
application-label-es-US:'AmmoBot'
application-label-pt-PT:'AmmoBot'
application-label-zh-TW:'AmmoBot'
application-label-ms-MY:'AmmoBot'
application-label-kk-KZ:'AmmoBot'
application-label-uz-UZ:'AmmoBot'
application-icon-160:'res/drawable-mdpi-v4/ammobot_main_icon.png'
application-icon-213:'res/drawable-hdpi-v4/ammobot_main_icon.png'
application-icon-240:'res/drawable-hdpi-v4/ammobot_main_icon.png'
application-icon-320:'res/drawable-xhdpi-v4/ammobot_main_icon.png'
application-icon-480:'res/drawable-xxhdpi-v4/ammobot_main_icon.png'
application-icon-640:'res/drawable-xxhdpi-v4/ammobot_main_icon.png'
application: label='AmmoBot' icon='res/drawable-mdpi-v4/ammobot_main_icon.png'
application-debuggable
launchable-activity: name='com.slhdevelopment.ammobot.activities.MainActivity' label='AmmoBot' icon=''
feature-group: label=''
uses-feature: name='android.hardware.touchscreen'
uses-implied-feature: name='android.hardware.touchscreen' reason='default feature for all apps'
main
other-activities
supports-screens: 'small' 'normal' 'large' 'xlarge'
supports-any-density: 'true'
locales: '--_--' 'ca' 'da' 'fa' 'ja' 'nb' 'de' 'af' 'bg' 'th' 'fi' 'hi' 'vi' 'sk' 'uk' 'el' 'nl' 'pl' 'sl' 'tl' 'am' 'in' 'ko' 'ro' 'ar' 'fr' 'hr' 'sr' 'tr' 'cs' 'es' 'it' 'lt' 'pt' 'hu' 'ru' 'zu' 'lv' 'sv' 'iw' 'sw' 'fr-CA' 'lo-LA' 'en-GB' 'bn-BD' 'et-EE' 'ka-GE' 'ky-KG' 'km-KH' 'zh-HK' 'si-LK' 'mk-MK' 'ur-PK' 'hy-AM' 'my-MM' 'zh-CN' 'ta-IN' 'te-IN' 'ml-IN' 'en-IN' 'kn-IN' 'mr-IN' 'mn-MN' 'ne-NP' 'pt-BR' 'gl-ES' 'eu-ES' 'is-IS' 'es-US' 'pt-PT' 'zh-TW' 'ms-MY' 'kk-KZ' 'uz-UZ'
densities: '160' '213' '240' '320' '480' '640'
native-code: 'jsoup-1.8.1.jar' 'jxl.jar'
答案 0 :(得分:2)
由于您的屏幕截图显示您正在使用“1个功能”而我找不到您使用的两个特定权限feature implied,我的建议现在是{{3} }:
测试应用程序所需的功能
您可以使用Android SDK中包含的
aapt
工具来确定 Google Play将根据声明的内容过滤您的应用 功能和权限。为此,请使用aapt
运行dump badging
命令。这会导致aapt
解析应用程序的清单和 应用与Google Play使用的相同规则来确定功能 你的申请需要。要使用该工具,请按以下步骤操作:
- 首先,构建并将您的应用程序导出为未签名的.apk。如果您使用ADT在Eclipse中进行开发,请右键单击该项目 选择 Android工具&gt;导出未签名的应用程序包。选择一个 目标文件名和路径,然后单击确定。
- 接下来,找到
醇>aapt
工具(如果它尚未在您的路径中)。如果您使用的是SDK Tools r8或更高版本,您可以在中找到 / platform-tools / directory。
注意: 您必须使用为最新的Platform-Tools组件提供的aapt
版本。如果您没有最新的Platform-Tools组件,请使用the following下载。
- 使用以下语法运行
醇>aapt
:
$ aapt dump badging <path_to_exported_.apk>
以下是第二个蓝牙示例的命令输出示例:
$ ./aapt dump badging BTExample.apk package: name='com.example.android.btexample' versionCode='' versionName='' uses-permission:'android.permission.BLUETOOTH_ADMIN' uses-feature:'android.hardware.bluetooth' sdkVersion:'3' targetSdkVersion:'5' application: label='BT Example' icon='res/drawable/app_bt_ex.png' launchable activity name='com.example.android.btexample.MyActivity'label='' icon='' uses-feature:'android.hardware.touchscreen' main supports-screens: 'small' 'normal' 'large' locales: '--_--' densities: '160'
答案 1 :(得分:0)
在清单中添加以下行,我希望它有效
<uses-sdk
android:maxSdkVersion="21"
android:minSdkVersion="8"
android:targetSdkVersion="19" />
注意: android:maxSdkVersion,android:minSdkVersion,android:targetSdkVersion取决于您的要求
答案 2 :(得分:0)
我不得不在android studio中重新创建一个新的android项目。然后复制并粘贴android清单,src目录,res目录和build目录。该应用程序上传到谷歌播放,声称它支持超过7000个设备。非常烦人,但这是我的修复。