为啥我的亚马逊应用商店提交被拒绝?如何获取更多信息?

Posted

技术标签:

【中文标题】为啥我的亚马逊应用商店提交被拒绝?如何获取更多信息?【英文标题】:Why are my Amazon Appstore submissions being rejected? How to get more info?为什么我的亚马逊应用商店提交被拒绝?如何获取更多信息? 【发布时间】:2020-12-18 16:19:26 【问题描述】:

一年多以来,我在亚马逊上发布了一款俄罗斯多人文字游戏。

现在我已将其翻译成英语和德语,但在通过亚马逊应用商店审核获得 2 个翻译后的应用时遇到问题 -

响应总是一样的:“应用程序退出/强制关闭/冻结/启动后显示错误消息。”

但没有关于他们测试的设备的信息(在我的 Fire 5 和 Fire 7 平板电脑上,游戏运行良好),也没有错误日志。

我已尝试联系开发人员支持以获取任何日志,但没有得到任何回复。

我的应用使用 LWA 和 ADM,并且是 minSdk 16。我的应用也在 Google Store(他们在那里使用 Google Sign-In 和 FCM)和华为 AppGallery(他们在那里使用 HMS)上发布。

我只需要更多信息来解决我的应用程序的任何问题。如果我知道用于测试的设备,我会直接购买或借出。

是否有人愿意旁注 the APK files 并在她或他的 Amazon Fire 设备上尝试我的游戏?

最后,下面是我的app/build.gradle - 也许有人能发现它的问题?

apply plugin: 'com.android.application'

android 
    compileSdkVersion 29
    defaultConfig 
        versionCode 168
        targetSdkVersion 29
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true

        javaCompileOptions 
            annotationProcessorOptions 
                arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
            
        
    

    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    

    signingConfigs 
        debug 
            keyAlias 'AndroidDebugKey'
            storeFile file('../../../../../.android/debug.keystore')
            keyPassword 'android'
            storePassword 'android'
        
        release 
            keyAlias 'AndroidReleaseKey'
            storeFile file('../../../conf/release.keystore')
            keyPassword System.getenv('PASSPHRASE1')
            storePassword System.getenv('PASSPHRASE1')
        
    

    flavorDimensions "store", "language"
    productFlavors 
        google 
            dimension "store"
            versionName "$defaultConfig.versionCode-google"
            // min sdk version 16 needed for Firebase messaging
            minSdkVersion 16
        
        huawei 
            dimension "store"
            versionName "$defaultConfig.versionCode-huawei"
            // min sdk version 17 needed for Huawei push
            minSdkVersion 17
            applicationIdSuffix ".huawei"
            resConfigs "en", "zh-rCN", "ru", "de", "fr", "pl", "nl"
        
        amazon 
            dimension "store"
            versionName "$defaultConfig.versionCode-amazon"
            // min sdk version 15 needed for older Amazon Fire models, but is no more supported by the LWA
            minSdkVersion 16
            // ignore AdmService not extending android.app.Service
            lintOptions 
                checkReleaseBuilds false
            
        

        de 
            applicationId "de.wortefarbers"
            dimension "language"
            resConfigs "de"
        
        en 
            applicationId "com.wordsbyfarber"
            dimension "language"
            resConfigs "en"
        
        ru 
            applicationId "de.slova"
            dimension "language"
            resConfigs "ru"
        
    

    buildTypes 
        release 
            signingConfig signingConfigs.release
            debuggable false
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    


dependencies 
    implementation 'androidx.multidex:multidex:2.0.1'

    // minSdkVersion 9 is only supported by the OkHttp 3.12.x branch
    implementation 'com.squareup.okhttp3:okhttp:3.12.2'
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'com.neovisionaries:nv-websocket-client:2.10'

    implementation "androidx.room:room-common:$roomVersion"
    implementation "androidx.room:room-runtime:$roomVersion"
    annotationProcessor "androidx.room:room-compiler:$roomVersion"
    androidTestImplementation "androidx.room:room-testing:$roomVersion"

    implementation "androidx.lifecycle:lifecycle-extensions:$archVersion"
    annotationProcessor "androidx.lifecycle:lifecycle-common-java8:$archVersion"

    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.viewpager2:viewpager2:1.0.0'
    implementation 'com.google.android.material:material:1.3.0-alpha02'

    implementation 'me.zhanghai.android.materialprogressbar:library:1.6.1'
    implementation 'com.mikepenz:materialdrawer:6.1.2'
    implementation 'com.mikepenz:iconics-core:3.2.5'
    implementation 'com.mikepenz:fontawesome-typeface:5.3.1.1@aar'
    implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0-alpha'
    implementation "com.facebook.android:facebook-core:$facebookVersion"
    implementation "com.facebook.android:facebook-login:$facebookVersion"

    googleImplementation 'com.google.android.gms:play-services-auth:18.1.0'
    googleImplementation 'com.google.firebase:firebase-messaging:20.2.4'
    googleImplementation 'com.android.billingclient:billing:3.0.0'

    huaweiImplementation "com.huawei.hms:base:$hmsVersion"
    huaweiImplementation "com.huawei.hms:hwid:$hmsVersion"
    huaweiImplementation "com.huawei.hms:push:$hmsVersion"
    huaweiImplementation "com.huawei.hms:iap:$hmsVersion"

    amazonCompileOnly files('libs/amazon-device-messaging-1.1.0.jar')
    amazonImplementation files('libs/login-with-amazon-sdk.jar')

    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', 
        exclude group: 'com.android.support', module: 'support-annotations'
    )
    testImplementation 'junit:junit:4.12'


if (getGradle().getStartParameter().getTaskRequests().toString().contains('Google')) 
    apply plugin: 'com.google.gms.google-services'
 else if (getGradle().getStartParameter().getTaskRequests().toString().contains('Huawei')) 
    apply plugin: 'com.huawei.agconnect'

附:我也在Amazon Developer Forum 提出了我的问题。

更新经过一周的尝试:

在App Testing Service我注意到我的应用程序在使用WebView时很少崩溃(一些内部崩溃,不是我的应用程序引起的),所以我删除了它的所有用法(使用嵌入式浏览器显示帮助,隐私政策、服务条款等)并删除了可选的 Facebook 登录。

现在我的英语和德语应用通过了“应用测试服务”:

但仍然被亚马逊评论者拒绝,我无法得到他们的任何人工回复或任何日志。

同时the Russian version of my app 通过更新审核...

更新:

最后我收到了来自亚马逊的错误日志:

09-09 15:21:39.253: E/AndroidRuntime(19217): FATAL EXCEPTION: main
09-09 15:21:39.253: E/AndroidRuntime(19217): Process: de.wortefarbers, PID: 19217
09-09 15:21:39.253: E/AndroidRuntime(19217): java.lang.NoClassDefFoundError: Failed resolution of: Lcom/amazon/device/messaging/development/ADMManifest;
09-09 15:21:39.253: E/AndroidRuntime(19217):    at de.slova.SlovaApplication.c(SlovaApplication.java:1)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at de.slova.MainActivity.onCreate(MainActivity.java:3)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at android.app.Activity.performCreate(Activity.java:6672)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at android.app.ActivityThread.-wrap12(ActivityThread.java)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at android.os.Handler.dispatchMessage(Handler.java:102)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at android.os.Looper.loop(Looper.java:154)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at android.app.ActivityThread.main(ActivityThread.java:6123)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at java.lang.reflect.Method.invoke(Native Method)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
09-09 15:21:39.253: E/AndroidRuntime(19217): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.amazon.device.messaging.development.ADMManifest" on path: DexPathList[[zip file "/data/app/de.wortefarbers-1/base.apk"],nativeLibraryDirectories=[/data/app/de.wortefarbers-1/lib/arm, /system/lib, /vendor/lib]]
09-09 15:21:39.253: E/AndroidRuntime(19217):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
09-09 15:21:39.253: E/AndroidRuntime(19217):    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
09-09 15:21:39.253: E/AndroidRuntime(19217):    ... 14 more
09-09 15:21:39.255: W/ActivityManager(1385):   Force finishing activity de.wortefarbers/de.slova.MainActivity

但是我在 app/build.gradle 中确实有以下内容(并且两个 jar 文件都确实存在):

amazonCompileOnly files('libs/amazon-device-messaging-1.1.0.jar')
amazonImplementation files('libs/login-with-amazon-sdk.jar')

我在 AndroidManifest.xml 中确实有 xmlns:amazon="http://schemas.amazon.com/apk/res/android"。下面列出了我的整个 proguard-rules.pro:

-libraryjars libs/login-with-amazon-sdk.jar
-libraryjars libs/amazon-device-messaging-1.1.0.jar

-include okhttp3.pro

# -ignorewarning

-dontwarn org.conscrypt.**
-dontwarn com.amazon.device.messaging.**
-dontwarn com.huawei.**

-keep class com.amazon.device.messaging.**  *; 
-keep class androidx.multidex.**  *; 
-keep public class * extends com.amazon.device.messaging.ADMMessageReceiver
-keep public class * extends com.amazon.device.messaging.ADMMessageHandlerBase
-keep class android.support.v7.widget.SearchView  *; 

-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature

-keep class com.huawei.***;
-keep class com.hianalytics.android.***;

【问题讨论】:

您是否尝试过在您的物理设备上使用新语言进行测试? 是的,我在家里的 Fire 5 和 Fire 7 设备上用所有三种语言测试它们:RU、EN、DE。 【参考方案1】:

如果他们给你一个错误日志,他们也应该给你一个失败的设备列表。

日志说它找不到类 com.amazon.device.messaging.development.ADMManifest

我假设您已按照以下说明设置 ADM:https://developer.amazon.com/docs/adm/set-up.html

您的 gradle 依赖项和 proguard 文件看起来与他们的示例不完全相同。例如,您的丢失了 -keep public class * extends com.amazon.device.messaging.ADMMessageHandlerJobBase

您可以尝试将其删除并重新设置,并尽可能按照他们的示例进行操作。祝你好运

【讨论】:

也许你是对的...我已将 proguard 规则更改为 -keep class com.amazon.** *; 并且未选择的非亚马逊设备也已完成 more different things。现在我的英文游戏版本是published at Amazon。但是德文版仍然被拒绝...我现在在 Ebay 订购了一个较旧的 Amazon Fire HDX,等待它... 我为 Amazon Fire TV 制作电视应用程序,因此我知道在应用程序被拒绝时解决问题是多么困难。我也很幸运能够重新提交它们,信不信由你。如果您尝试进行故障排除并使一切尽可能接近他们的指示,那可能只是一件事情。祝你好运,谢谢你接受我的回答:) 是的,如果他们在拒绝时至少会附加应用程序日志......但他们不会。【参考方案2】:

对我来说,是 AdMob 应用打开实施导致失败。我删除了实现,一切正常。

【讨论】:

以上是关于为啥我的亚马逊应用商店提交被拒绝?如何获取更多信息?的主要内容,如果未能解决你的问题,请参考以下文章

应用商店拒绝应用后如何再次上传应用

如果版本号不应该增加,你如何替换被拒绝的应用商店二进制文件?

iOS应用程序在登录/注册时提交被拒绝[关闭]

App Tracking Transparency 隐私复选框和应用商店发布拒绝

由于违反权限政策,我的 SMS 传输相关应用被拒绝

要提交多少个 Android 应用商店...?