When I run my application in an emulator with the API 28, the console gives me the following warning:
W/oaristachimene: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection) W/oaristachimene: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
I have been debugging it and I found out that it comes from the call: setContentView(R.layout.activity_main)
, so is there another way to set the layout of an activity or is this method going to be updated so that it doesn't throws that warning when running on a device with android API 28?.
For the warnings in the question,
computeFitSystemWindows
andmakeOptionalFitsSystemWindows
are actually used by the support library or androidx library through reflection. You can verify it by simply searching those two methods in theAppCompatDelegateImpl
.Yes, they break some rules which are set by them. Hopefully this can fixed later.
Update 1
Recently when I test app in Firebase Test Lab, these 2 APIs and some other APIs are marked
Or
Chances are good that the layout id you’re passing to
setContentView()
contains some view from a 3rd-party library that uses non-SDK interfaces. This warning is telling you that this is happening, but all you can do isFor now, this is only a warning; nothing bad will actually happen. But in future versions of Android, it might become a real problem. The system is just giving you time to figure it out.
It's just a
warning
.You should read the Restrictions on non-SDK interfaces documentation.
For those getting
Accessing hidden method XYZ
on Android 9 (Pie, API 28):Some methods greylisted in Android 9 were then whitelisted in Android 10. Before looking for any alternatives to greylisted methods check https://developer.android.com/about/versions/10/non-sdk-q#greylist-now-public
This does notapply to the methods in OP's question (
computeFitSystemWindows
,makeOptionalFitsSystemWindows
) at the moment but may change in future Android releases.See also https://developer.android.com/about/versions/10/non-sdk-q#greylist-now-restricted which presents:
E.g. all common methods reported by Android 9 light greylist filter:
are now whitelisted in Android 10 so the logcat warn can be safely ignored (at least until Android 11 which may greylist them again :)).