私はAndroid「SDK以外のインターフェースの制限」に関するドキュメントを読みました:
これらの制限は、アプリが非SDKインターフェースを参照する場合、またはリフレクションまたはJNIを使用してそのハンドルを取得しようとする場合に適用されます...非SDKインターフェースの処理は、APIが抽象化する実装の詳細です。通知なしに変更される可能性があります...グレーリストの非SDKインターフェースには、Android 9でも機能し続けるメソッドとフィールドが含まれますが、将来のバージョンでのアクセスは保証されません。プラットフォーム... adb logcatを使用して、実行中のアプリのPIDの下に表示されるこれらのログメッセージにアクセスできます...
API 28エミュレーターで実行しているコードの関連部分は次のとおりです。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
................
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");
................
adView = new AdView(this);
adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
adView.setAdSize(AdSize.BANNER);
adView.setBackgroundColor(Color.TRANSPARENT);
adView.setVisibility(View.GONE);
adView.loadAd(adBuilder());
................
interstitial = new InterstitialAd(GLGame.this);
interstitial.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
interstitial.loadAd(adBuilder());
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
mRewardedVideoAd.setRewardedVideoAdListener(this);
loadRewardedVideoAd();
}
AdRequest adBuilder() {
return new AdRequest.Builder().build();
}
public void loadRewardedVideoAd() {
mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build());
}
私はそれを見つけました
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");
adView.loadAd(adBuilder());
interstitial.loadAd(adBuilder());
私のLogcat出力は:
W: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker;-><init>(Landroid/content/Context;I)V (light greylist, reflection)
W: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->logEvent(Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;)V (light greylist, reflection)
W: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionStarted(I)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
W: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(II)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
W: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
W: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextSelection;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
W: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(III)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
W: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(IIILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
コメントして無効にした場合
//MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");
//adView.loadAd(adBuilder());
//interstitial.loadAd(adBuilder());
隠されたlogcatへのアクセスはなくなります。
前と同じように、Logcatの出力を取得しました。
W: Accessing hidden method Landroid/media/AudioTrack;->getLatency()I (light greylist, reflection)
コメントして無効にした場合
//loadRewardedVideoAd();
隠されたlogcatへのアクセスはなくなります。
あなたがコードを見ることができるように:
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");
adView.loadAd(adBuilder());
interstitial.loadAd(adBuilder());
loadRewardedVideoAd();
隠されたlogcatへのアクセスの多くを引き起こしました。
私の質問は:
グレイリストの非SDKインターフェースとは、Android 9でも機能し続けるが、Googleがプラットフォームの将来のバージョンでのアクセスを保証しないメソッドとフィールドを意味します。理由がわからない場合は、グレーリストに記載されたAPIの代替戦略を実装する場合は、バグを報告して制限の再検討をリクエストできます。
https://issuetracker.google.com/issues/new?component=328403&template=1027267