android - Google Play 报告不支持的 API 但它在 AppCompat 中

标签 android google-play android-appcompat

我将一个新的应用程序包上传到 Google Play 进行测试,今天早上我检查了预发布报告,该报告提示我使用的是我不应该使用的灰名单私有(private) API...但 API 是被 v7 AppCompat 库使用,而不是我。

那么,我到底应该怎么做呢?

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(Native Method)
    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 android.support.v7.widget.ViewUtils.makeOptionalFitsSystemWindows(ViewUtils.java:84)
    at android.support.v7.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:685)
    at android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:518)
    at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:466)
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
    at com.inadaydevelopment.wordventure.NavControllerActivity_.setContentView(NavControllerActivity_.java:55)
    at com.inadaydevelopment.wordventure.NavControllerActivity.onCreate(NavControllerActivity.java:59)
    at com.inadaydevelopment.wordventure.NavControllerActivity_.onCreate(NavControllerActivity_.java:39)
    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(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

我正在使用 Android 注释,所以我的代码没有直接调用 setContentView(),但这是生成的代码正在做的事情……它只是使用资源布局 ID 设置内容 View :

@Override
public void setContentView(int layoutResID) {
    super.setContentView(layoutResID);
    onViewChangedNotifier_.notifyViewChanged(this);
}

最佳答案

这是一个 known issue in AppCompat :

What is left right now:

  • ViewUtils - View.computeFitSystemWindows and View.makeOptionalFitsSystemWindows
  • AppCompatTextViewAutoSizeHelper - TextView.getLayoutAlignment
  • SearchView - AutoCompleteTextView.ensureImeVisible
  • DropDownListView - AbsListView.mIsChildViewEnabled (field)

请注意,根据 28.0.0 release notes ,将不再有支持库版本,因此您需要 migrate to AndroidX获得任何错误修复,例如这个。

关于android - Google Play 报告不支持的 API 但它在 AppCompat 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56826517/

相关文章:

java - 无法将 gdx-tools 添加到 libgdx gradle 项目

java - finish(); 之间的区别和 onBackPressed();

Android GreenDAO 生成额外的 ID 属性

android - 如何在应用处于草稿状态时在 Google Play Developer Console 中激活应用内产品?

iphone - 我需要担心移动应用程序上的垃圾邮件吗?

android - PlayStore 中未发布应用程序的 Alpha 测试版本

android - Google Play 商店中基于服务的 Android 应用程序

android - Fragment BackStack 无法正常工作

android-studio - appcompat-v7 :28. 0.0-beta01 更新后崩溃

android - 自定义搜索建议 AppCompat 主题时出错