当前位置: 首页 > 知识库问答 >
问题:

Google play控制台警告应用程序使用不受支持的API

东方华荣
2023-03-14

我已经在google play商店上传了我的应用程序,应用程序报告了2个警告

下面的API是灰色列表,谷歌不能保证它们能在现有的Android版本上工作。有些可能已经被目标SDK限制

API landroid/view/viewgroup;->MakeOptionalFitsSystemWindows()V 4次发现。只显示唯一堆栈跟踪

堆栈跟踪1(statck跟踪中的应用程序类:at com.elaxer.Registration2.onCreate(Registration2.java:6))

     StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V
        at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
        at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
        at java.lang.Class.getDeclaredMethodInternal(Class.java)
        at java.lang.Class.getPublicMethodRecursive(Class.java:2075)
        at java.lang.Class.getMethod(Class.java:2063)
        at java.lang.Class.getMethod(Class.java:1690)
        at androidx.appcompat.widget.TooltipCompatHandler.cancelPendingShow(TooltipCompatHandler.java:19)
        at androidx.appcompat.app.AppCompatDelegateImpl.shouldAnimateActionModeView(AppCompatDelegateImpl.java:268)
        at androidx.appcompat.app.AppCompatDelegateImpl.calculateNightMode(AppCompatDelegateImpl.java:4)
        at androidx.appcompat.app.AppCompatDelegateImpl.getMenuInflater(AppCompatDelegateImpl.java:0)
        at androidx.appcompat.app.AppCompatDelegateImpl.initializePanelMenu(AppCompatDelegateImpl.java:0)
        at androidx.appcompat.app.AppCompatDelegateImpl.onKeyUp(AppCompatDelegateImpl.java:0)
        at androidx.appcompat.app.AppCompatDelegateImpl.onSaveInstanceState(AppCompatDelegateImpl.java:0)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:0)
        at androidx.appcompat.app.AppCompatDelegateImpl.updateResourcesConfigurationForNightMode(AppCompatDelegateImpl.java:0)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:4)
        at com.elaxer.Registration2.onCreate(Registration2.java:6)
        at android.app.Activity.performCreate(Activity.java:7144)
        at android.app.Activity.performCreate(Activity.java:7135)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:184)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2931)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6718)
        at java.lang.reflect.Method.invoke(Method.java)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

堆栈跟踪2(statck跟踪中的APP类:at com.elaxer.splash_one.oncreate(Splash_one.java:45)

 StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V
    at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
    at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
    at java.lang.Class.getDeclaredMethodInternal(Class.java)
    at java.lang.Class.getPublicMethodRecursive(Class.java:2075)
    at java.lang.Class.getMethod(Class.java:2063)
    at java.lang.Class.getMethod(Class.java:1690)
    at androidx.appcompat.widget.TooltipCompatHandler.cancelPendingShow(TooltipCompatHandler.java:19)
    at androidx.appcompat.app.AppCompatDelegateImpl.shouldAnimateActionModeView(AppCompatDelegateImpl.java:268)
    at androidx.appcompat.app.AppCompatDelegateImpl.calculateNightMode(AppCompatDelegateImpl.java:4)
    at androidx.appcompat.app.AppCompatDelegateImpl.getMenuInflater(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatDelegateImpl.initializePanelMenu(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatDelegateImpl.onKeyUp(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatDelegateImpl.onSaveInstanceState(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatDelegateImpl.updateResourcesConfigurationForNightMode(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:4)
    at com.elaxer.Splash_one.onCreate(Splash_one.java:45)
    at android.app.Activity.performCreate(Activity.java:7144)
    at android.app.Activity.performCreate(Activity.java:7135)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
    at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:184)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2931)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6718)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

API landroid/view/view;->ComputeFitSystemWindows(landroid/graphics/rect;landroid/graphics/rect;)z2次发现。只显示唯一的堆栈跟踪。

堆栈跟踪1(statck跟踪中的应用程序类:at com.elaxer.splash_one.oncreate(Splash_one.java:45)

 StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
    at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
    at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
    at java.lang.Class.getDeclaredMethodInternal(Class.java)
    at java.lang.Class.getMethod(Class.java:2064)
    at java.lang.Class.getDeclaredMethod(Class.java:2047)
    at androidx.appcompat.widget.TooltipCompatHandler.<clinit>(TooltipCompatHandler.java:23)
    at androidx.appcompat.widget.TooltipCompatHandler.cancelPendingShow(TooltipCompatHandler.java:0)
    at androidx.appcompat.app.AppCompatDelegateImpl.shouldAnimateActionModeView(AppCompatDelegateImpl.java:268)
    at androidx.appcompat.app.AppCompatDelegateImpl.calculateNightMode(AppCompatDelegateImpl.java:4)
    at androidx.appcompat.app.AppCompatDelegateImpl.getMenuInflater(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatDelegateImpl.initializePanelMenu(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatDelegateImpl.onKeyUp(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatDelegateImpl.onSaveInstanceState(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatDelegateImpl.updateResourcesConfigurationForNightMode(AppCompatDelegateImpl.java:0)
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:4)
    at com.elaxer.Splash_one.onCreate(Splash_one.java:45)
    at android.app.Activity.performCreate(Activity.java:7144)
    at android.app.Activity.performCreate(Activity.java:7135)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
    at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:184)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2931)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6718)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

我在gradle中使用以下库

implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.navigation:navigation-fragment:2.1.0'
implementation 'androidx.navigation:navigation-ui:2.1.0'
testImplementation 'junit:junit:4.12'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation "androidx.viewpager2:viewpager2:1.0.0"
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
implementation 'androidx.multidex:multidex:2.0.0'

implementation 'androidx.preference:preference:1.1.0'
implementation "androidx.paging:paging-runtime:2.1.1"
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
implementation "androidx.room:room-runtime:2.2.3"
annotationProcessor "androidx.room:room-compiler:2.2.3"
implementation 'com.google.android.exoplayer:exoplayer:2.9.0'

implementation 'androidx.emoji:emoji:1.0.0'

implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
implementation 'me.relex:circleindicator:1.2.2@aar'
implementation 'de.hdodenhof:circleimageview:2.1.0'
implementation 'com.iceteck.silicompressorr:silicompressor:2.2.2'
implementation 'com.github.hani-momanii:SuperNova-Emoji:1.0'
implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:10.0.5'


implementation 'com.google.firebase:firebase-analytics:17.2.1'
implementation 'com.google.firebase:firebase-core:17.2.1'


implementation 'com.facebook.android:facebook-login:[4,5)'
implementation('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
    transitive = true
}
implementation 'androidx.exifinterface:exifinterface:1.1.0'

我找不到修复此警告的方法。请帮助我清除这些警告。

共有1个答案

吉鸿宝
2023-03-14

您的应用程序正在使用makeOptionalFitsSystemWindows方法(直接或通过嵌入式库),这是非SDK方法/隐藏方法。

通过测试应用程序的非SDK接口,有许多方法可以检测有问题的使用。最简单的是veridex工具或使用StrictMode API。

如何使用严格模式:创建严格模式对象并使用detectnonsdkapiusagepenaltylistener

public void onCreate() {
     if (DEVELOPER_MODE) {
         StrictMode.setThreadPolicy(new ThreadPolicy.Builder()
                 .detectDiskReads()
                 .detectDiskWrites()
                 .detectNetwork()   // or .detectAll() for all detectable problems
                 .penaltyLog()
                 .build());

         StrictMode.setVmPolicy(new VmPolicy.Builder()
                 .detectNonSdkApiUsage()
                 .penaltyListener( Executors.newSingleThreadExecutor() , new StrictMode.OnVmViolationListener(){...} )
                 .detectLeakedSqlLiteObjects()
                 .detectLeakedClosableObjects()
                 .penaltyLog()
                 .penaltyDeath()
                 .build());
     }
     super.onCreate();
 }

注意:确保使用Android9(API级别28)来测试和验证这个问题。

从Android9(API Level28)开始,该平台限制应用程序可以使用哪些非SDK接口

 类似资料:
  • 在Google Play控制台中设置android应用程序时遇到问题。上传apk后,我看到“支持的Android设备-0设备”。 这是舱单 这里是gradle设置 该应用程序已经在一些设备上进行了测试。 我知道这是一个常见的问题,但是我发现的大多数问题都与相机的许可有关。 我做错了什么?

  • 我不确定发生了什么,但我让grpc在控制台应用程序和ASP之间工作。NET Core grpc服务器,但当我更改原始文件时,控制台应用程序停止编译。然后,我决定按照示例创建一个全新的控制台应用程序,虽然我的proto文件(来自示例)设置为Server,但grpc服务构建正常,但一旦我在控制台应用程序中将其更改为Client,我就会收到此错误。 “Pro Compile”任务不支持“Addition

  • 为什么控制台会疯狂打印,抛出这个警告?

  • 我在读这个问题,其中< code>@SuppressWarnings注释是在类级别上使用的。 假设我的应用程序中有多个类,那么有没有一种方法可以在应用程序级别使用?因为在每个类上应用对我来说是多余的。

  • 我正在尝试运行这个项目https://github.com/soundnode/soundnode-app在将我的minimatch版本更新到3.10.9之后,我收到了这个错误 npm警告可选跳过可选依赖项:fsevents@^1.0.0(node_modules\webpack\node_modules\watchpack\node_modules\chokidar\node_modules\f

  • 我尝试在系统上安装tensorflow,但收到以下错误: tensorflow-0.5.0-cp27-none-linux_x86_64.whl在此平台上不受支持 在pip.log文件中捕获的异常信息:- /home/gansai/tensorflow/bin/pip于2015年11月11日星期三00:19:05运行 0-cp27-none-linux_x86_64.whl不是这个平台上的支撑轮。