Skip to content

Instantly share code, notes, and snippets.

@niwatako
Created June 21, 2018 12:07
Show Gist options
  • Save niwatako/42887e8ffc6fa55c7a3f3255e75ce0eb to your computer and use it in GitHub Desktop.
Save niwatako/42887e8ffc6fa55c7a3f3255e75ce0eb to your computer and use it in GitHub Desktop.
Android P - Restrictions on non-SDK interfaces #CodePiece #potatotips
potatotips #52 (iOS/Android開発Tips共有会) - connpass
https://potatotips.connpass.com/event/88164/
## operandoOS おぺらんどおーえす Android P - Restrictions on non-SDK interfaces Android
最近メルカリをやめて7月からNote作ってるところで働きます。
AndroidPから入るnon-SDKへの制限
雑に言うとnon-SDKにアクセスしたときExceptionが起きる場合がある
### non-SDKとは
オフィシャルでないリフレクションを使ってアクセスするようなfield and method
Support LibraryなどGoogle公式のものは対象外
リフレクションまたはJNI経由で利用するものが対象
Reflaction via Class.getDeclaredXxxx あたり、触るとExceptionが変えることがあるよ。
### どういうときException
non-SDKは3つのリストに分かれている
アクセスしたときの挙動が違う。
AOSPのリポジトリに書いてあるから見てね
- light-greylist
- まだ普通にアクセスできる。将来までは保証しない。
- dark-greylist
- targetSdkVersion が P28以上になるとアクセスできない=Exception起きる
- blacklist
- targetSdkVersion関係なくAndroidPで使うとException
### なにしたらいいの
non-SDK使ってるかチェック
対応方法は使わないコードに書き直すか、Pでの動作を諦める、それか、諦めて踊る
諦めて踊る前に
issueTrackerにFeature Requestを出す。
メジャーライブラリもIssueが上がり始めている。ReactNativeとかも上がってきている。
Issueを上げるなら、どのリストのnon-SDKか、使わない実装方法があれば書いてあげる、どうにもならなければAndroidIssueTrackerに上げるように
### どうやって使ってるか調べるか
static analysis tool veridex
apk渡すとバーっと出てくる
FAQがドキュメントに関して詳しく書いてあるので読むと良い。
Q:メーカーごとに変わりますか
A:消えることはないが追加されるかも。減らない前提でやってもらいたいかなと思います。
release build でも使っていることがわかるようになってほしい。。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment