AOSP の一連のコミットによると、Google は Android P の文書化されていない、または隠された API へのアクセスを制限し始める可能性があります。 多くの有名ブランドのアプリは機能を強化するために隠し API を使用しているため、その影響は広範囲に及ぶ可能性があります。
2018 年 2 月 28 日更新:Googleは本日、変更を確認するブログ投稿を公開しました。 詳細については記事の最後で説明します。
Android 愛好家の中には、 推測する Android の次期バージョンが何のデザートにちなんで名付けられるか、舞台裏ではいくつかの興味深い開発が進行しています。 私たちは発見しました 注目に値するものはほとんどない Android P の今後の機能ですが、Android オープンソース プロジェクト (AOSP) でのより最近の発見は、はるかに興味深いことが判明しました。 これらの最近のコミットによると、アプリケーションは、Android SDK で文書化されていない API (javadoc の @hide 属性でマークされた API など) へのアクセスが制限される可能性があります。
なぜこれが重要なのか
Android ソフトウェア開発キット (SDK) は、新しい Android アプリケーションのテストと構築に必要な API ライブラリとツールを開発者に提供します。 Android の新しいリリースには、Android SDK を通じて開発者が利用できる多数の新しい API が付属しています。 アプリでどの API を使用できるかは、開発者が設定した CompileSDKVersion によって異なります。 だからこそGoogleの 新しい Play ストアの要件 これは非常に重要であり、アプリケーションを更新し、新しい API を使用するように移行する必要があります。
Googleホスト ドキュメントページ 各クラスと、各 API レベルで使用できるそのすべてのメソッドについて。 これらは、公式 Android SDK で利用できる文書化された API のセットです。 最近リリースされた Android エンジニアによる Android SDK 検索アプリなどの Android アプリを使用して、クラスのリストを簡単に参照できます。 ジェイク・ウォートン.
価格:無料。
4.1.
ただし、Android の各リリースで利用できるすべての API が Google によって文書化されているわけではなく、公式の Android SDK で利用できるわけでもありません。 多くの場合、次のような便利な API があります。 文書化されていない、それでも非常に便利です。 開発者が文書化されていない API や非表示の API を使用してアプリを構築することはお勧めできませんが、特定の機能を提供したい場合に他に選択肢がないため、多くの開発者がそうしています。 隠された API や文書化されていない API を使用する開発者も、競争上の優位性を得ることができます。 なぜなら、Android が提供する API に固執する競合他社にはない機能を提供できるからです。 SDK—できません。
文書化されていない API を利用するアプリのリストは提供できませんが (開発者はおそらく共有していないでしょう) 競合他社に有利になるため、どれを使用するのか)、リストはおそらくむしろ 大きい。 したがって、隠し API へのアクセスを禁止することは重要であると結論付けます。 創設者マーク・マーフィー コモンズウェア、同意します:
@hide アノテーション付きアイテムへの一括アクセス禁止が実現すれば、大問題になるという評価に私も同意します。 主要な機能の一部としてこれらの項目にアクセスするアプリがほとんどないことを願います。 ただし、多くの有名ブランドのアプリが、直接またはライブラリを通じてこれらを時々使用しているのではないかと思います。
Android P では何が起こっているのでしょうか?
これらの今後の変更は、XDA 上級認定開発者によって最初に注目されました。 ロボ89の開発者です。 Xped フレームワーク. 彼は私に対して 2 つのコミットメントを指摘しました。 どれの されています 合併した、「hiddenapi」と呼ばれる新しいビルド ツールが導入されています。 このツールは、DEX ファイル内のすべてのクラス メンバーのアクセス フラグを変更します。 それらの署名は入力グレーリストまたはブラックリストに表示され、その場合、マークされたメソッドは制限付きの内部 API として扱われます。 アクセス。 もう 1 つのコミットでは、API ブラックリストがどのように機能するかを説明します。 へのアクセスを妨げます ブートクラス 前述の「hiddenapi」でマークされたメソッドとフィールド。開発者は静的リンク、リフレクション、JNI によってアクセスできます。
rovo89 によると、Android P におけるこれら 2 つの変更の最終結果は次のようになります。
これらのコミットがマージされると、アプリは非表示の API を使用/アクセスできなくなります。 AOSP では @hide で注釈が付けられているため、 公式SDK。 これらのコミットを簡単に元に戻すことができるため、またはモジュールが これらの API にアクセスします。 しかし、隠された API を利用するアプリは数多くあり、それらは次の場合に失敗します。 未来。
実際、さらなるコミットは、これが Google が計画していることである可能性があることを示しています。 これ 専念 は次のように述べています。
この特定のコミットは 3 つの小さなコミットを優先して放棄されたためマージされませんでしたが、コミット メッセージにはこれらの変更の目的が説明されています。 もう一組の コミットする 非公開 API を使用しようとする開発者に Google が代替案を提案することを示します。
ただし、多くの場合、特定の非表示 API に代わるものはありません。 私たち XDA はここでの経験から次のように話せます。 残念ながら、この変更により、一部の革新的なアプリが終了する可能性があるか、一部の有名アプリでは、 機能性。 この今後の変更は、最近の変更と精神的に似ているように思えます。 アクセシビリティサービスの取り締まり (それはありがたいことでした 一時停止した Google が革新的な用途を評価したため)。 文書化されていない API を利用するほとんどのアプリは無害な理由で利用していますが、一部のアプリはそれらを悪意のある目的に悪用している可能性があります。
このため、Google は Android P のすべての隠し API へのアクセスをロックダウンして、API を悪用する少数のユーザーからユーザーを保護している可能性があります。 これがユーザーにどれだけの影響を与えるかを言うのは難しいですが、もしあなたが開発者であれば、 隠し API の革新的な使用法を見つけるために AOSP を調べることを検討している場合は、次のようにするとよいでしょう。 考え直してください。
アップデート: Google が確認
で ブログ投稿 本日 2 月 28 日に公開され、Google はこれらの変更を確認しました。 Google、ユーザーのクラッシュリスクを指摘し、その後開発者に緊急修正の展開を強制 同社は開発者が非 SDK にアクセスするのを阻止する方向に徐々に移行していると述べています インターフェース。 Android P 以降、制限は SDK の Java 言語インターフェイスにも適用されるようになります。
同社は「一部の非SDKメソッドとフィールドが制限される」と述べているが、どのものが制限されるかについては詳しく述べていない。 当初、制限はめったに使用されないインターフェースに焦点を当て、しばらくの間、同社は許可する予定です。 開発者は、SDK メソッドへの移行が技術的に困難な非 SDK メソッドとフィールドを引き続き使用する必要があります。 挑戦的。 ただし、最終的には制限が拡大するため、非 SDK メソッドを使用するアプリの開発者は、Android P に備えてできるだけ早く移行する必要があります。 SDK の代替手段がない方法については、Google が開発者に次のページに投稿するよう求めています。 バグトラッカー さらに詳しい情報をご案内します。
次の開発者プレビューは、表面上は間もなく登場するとされており、開発者は最終リリース前に既存のアプリをブラックリストまたはグレーリストに照らしてテストできるようになります。