Невозможно загрузить новый файл APK в магазин Android Play (Android Pay Permission)

Когда я загрузил новый.apk в магазин Google Play, он отклонил мою отправку, сказав: "Ваша недавняя отправка приложения была отклонена из-за нарушения политик программы Google Play для разработчиков. Если вы отправили обновление, предыдущая версия вашего приложения все еще работает" в Google Play."

Я получил письмо с указанием:

Мы обнаружили, что по крайней мере одна версия APK в вашей последней загрузке неправильно использует Android Pay. Включение APK-версии 14 в ваше представление может привести к отклонению вашего приложения за нарушение нашей Политики платежей.

Если вы хотите использовать Android Pay в своем приложении, выполните следующие действия:

Remove any digital content from your app. To use Android Pay, your app must only sell physical goods or services.
Make sure your app is compliant with all policies listed in the Developer Program Policies. Remember that additional enforcement could occur if there are further policy issues with your apps.
Sign in to your Developer Console and submit the app. Make sure to increment the version number of the APK.

Если вы хотите использовать другой способ оплаты в своем приложении, выполните следующие действия, чтобы удалить Android Pay из вашего манифеста:

Remove <meta-data android:name="com.google.android.gms.wallet.api.enabled" android:value="true"/> from your manifest.
Sign in to your Developer Console and submit the app. Make sure to increment the version number of the APK.

Проблема с политикой: Android Pay или другие альтернативные платежные механизмы для биллинга Google Play в приложении разрешены только для следующего:

Android Pay
    For physical goods or services, such as movie tickets.

Other alternative payment mechanisms to Google Play’s in-app billing service
    For physical goods or services, such as movie tickets, or a publication where the price also includes a hard copy subscription.
    For digital goods that may be downloaded to devices and used outside of the app, such as songs that can be played on other music players.
    Donations to 527 designated tax exempt organizations are also permitted.

Если вы ознакомились с политикой и считаете, что это отклонение могло быть ошибочным, обратитесь в нашу службу поддержки политики. Один из моих коллег свяжется с вами в течение 2 рабочих дней.

Я ценю вашу поддержку Google Play!

Это мой манифест (обновлено):

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.altergyan.appname" android:installLocation="auto" android:versionCode="15" android:versionName="@string/version">
        <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="17" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="com.android.vending.BILLING" />
        <uses-permission android:name="android.permission.STORAGE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <application
        android:name="com.altergyan.appname.Class_10"
        android:allowBackup="true"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:theme="@style/CustomActionBarTheme">
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_4"
            android:label="Category"
            android:parentActivityName="com.altergyan.appname.Class_20"
            android:windowSoftInputMode="stateHidden" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_20" />
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_20"
            android:label="@string/app_name"
            android:launchMode="singleTask" >
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_9"
            android:label="@string/title_activity_info"
            android:parentActivityName="com.altergyan.appname.Class_20" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_20" />
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_23"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
            />
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_5"
            android:label="@string/favourites"
            android:parentActivityName="com.altergyan.appname.Class_20" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_20" />
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_22"
            android:label="@string/title_activity_settings">
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_13"
            android:label="@string/title_activity_agquizclass"
            android:parentActivityName="com.altergyan.appname.Class_20" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_20" />
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_15"
            android:label="@string/title_activity_agquizmap"
            android:parentActivityName="com.altergyan.appname.Class_13" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_13" />
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_17"
            android:label="@string/title_activity_quiz_play"
            android:parentActivityName="com.altergyan.appname.Class_15" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_15" />
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_16"
            android:label="@string/title_activity_quiz_options"
            android:parentActivityName="com.altergyan.appname.Class_15" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_15" />
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_19"
            android:label="@string/title_activity_record_phrase"
            android:parentActivityName="com.altergyan.appname.Class_20" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_20" />
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_7"
            android:label="@string/title_activity_flash_cards"
            android:parentActivityName="com.altergyan.appname.Class_20" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_20" />
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_2"
            android:label="@string/title_activity_alphabet"
            android:parentActivityName="com.altergyan.appname.Class_20" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_20" />
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_3"
            android:label="@string/title_activity_alphabet"
            android:parentActivityName="com.altergyan.appname.Class_20" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_20" />
        </activity>
        <activity
            android:screenOrientation="portrait"
            android:name="com.altergyan.appname.Class_6"
            android:label="@string/title_activity_flash_cards"
            android:parentActivityName="com.altergyan.appname.Class_7" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.altergyan.appname.Class_7" />
        </activity>
        <activity
            android:name="com.flurry.android.FlurryFullscreenTakeoverActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize">
        </activity>
    </application>
</manifest>

Я не использую какой-либо код или функции, связанные с Android Pay.

Я написал обратно в Google, но получил тот же ответ, который упоминался в первом письме:

Спасибо за обращение в команду Google Play.

Ваше приложение было помечено для Android Pay, поскольку вы включили объявление для Android Pay в манифест своего приложения:

Создайте новую сборку приложения без этого элемента в манифесте, и вы больше не будете отмечены для проверки.

Пожалуйста, дайте нам знать, если у вас есть другие вопросы или проблемы.

Я просмотрел сообщение здесь: " Невозможно загрузить новый файл APK в магазин Android Play (Google Pay)". В нем упоминается: "Вы должны исключить платеж Google в файле сборки Graddle, если вы его не используете". Но как мне это сделать?

Это мой файл сборки Gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "xyz"
        minSdkVersion 16
         targetSdkVersion 17
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles 'proguard-android.txt'
        }
    }
}
dependencies { 
   compile 'com.android.support:appcompat-v7:19.1.0'
   compile files('libs/acra-4.5.0.jar')
   //compile files('libs/android-support-v13.jar')
   compile files('libs/FlurryAds-5.3.0.jar')
   compile files('libs/FlurryAnalytics-5.3.0.jar')
   compile files('libs/flurryAndroidDFPandAdMobMediationAdapter-5.0.0.r1.jar')
   compile 'com.android.support:support-v4:22.2.0'
   compile 'com.google.android.gms:play-services:7.5.0'
}

2 ответа

Вместо реализации всех игровых сервисов, как показано ниже:

dependencies {
   compile 'com.google.android.gms:play-services:7.5.0'
}

используйте только необходимые услуги, такие как ниже.

dependencies {
   compile 'com.google.android.gms:play-services-ads:7.5.0'
   compile 'com.google.android.gms:play-services-maps:7.5.0'
}

Посмотрите на свой манифест - вы включили следующую строку:

<uses-permission
     android:name="com.google.android.gms.wallet.api.enabled" 
     tools:node="remove"/>

Это означает, что вы включили Android Pay для своего приложения. Однако Google установил, что вы не пытаетесь продавать физические товары, что нарушает их политику.

Если вы действительно не пытаетесь продать какие-либо физические товары (но только виртуальные), то следуйте их инструкциям и удалите эту строку из своего манифеста:

Ваше приложение было помечено для Android Pay, поскольку вы включили объявление для Android Pay в манифест своего приложения:

Создайте новую сборку приложения без этого элемента в манифесте, и вы больше не будете отмечены для проверки.


РЕДАКТИРОВАТЬ: проблема связана с Google Play Services. Поскольку вы используете Сервисы Google Play в целом, вы также используете Wallet SDK, который объединяет разрешение с активированным кошельком с вашим манифестом.

Лучше всего выбирать только те SDK, которые вам действительно нужны, как показано здесь:

Заменить compile 'com.google.android.gms:play-services:7.5.0' только с пакетами, обязательно. В вашем случае реклама, аналитика и кастинг:

compile 'com.google.android.gms:play-services-ads:7.5.0'
compile 'com.google.android.gms:play-services-analytics:7.5.0'
compile 'com.google.android.gms:play-services-cast:7.5.0'

Обратите внимание, что базовые пакеты являются зависимостью и переносятся автоматически, когда вы используете какой-либо из определенных пакетов сервисов воспроизведения.

Другие вопросы по тегам