2016年8月31日水曜日

Eclipse上からAndroidのHide APIを使用する(リフレクションは未使用)

手順(Androidをビルドしない人向け)

  1. 以下のリンクから、目的のバージョンのAndroidのビルド生成物をダウンロードする
  2. Androidプロジェクトのビルドパスから、SDKandroid.jarを除去する
    • プロジェクトのプロパティ -> Javaのビルドパス -> ライブラリー -> Android X.X.Xを選択 -> 除去
  3. Androidプロジェクトのビルドパスに 手順1framework.jarcore.jarを追加する
    • プロジェクトのビルド生成物のapkjarに、framework.jarcore.jarを含めないこと。
      具体的には、プロジェクトの「libs」フォルダに置いたり、エクスポート対象に含めてはいけない。
  4. 2つのjarファイルのjavadocロケーションを「http://developer.android.com/reference/」に設定する
    • プロジェクトのプロパティ -> Javaのビルドパス -> ライブラリー -> framework.jar(core.jar)を展開 -> Javadocロケーション -> 編集
    • この設定はJavadocを表示させるためのもの
    • ビルドするだけなら設定しなくても問題なし

 

手順(Androidをビルドする人向け)

  1. Androidのソースコードをビルドする(Androidのルートフォルダを「android」とする)
  2. ビルド生成物から、2つのjarファイルを入手する
    • android/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
      • ファイル名は「framework.jar」にする (ファイル名は任意)
      • このjarには、frameworkのクラスが含まれる
    • android/out/target/common/obj/JAVA_LIBRARIES/core_intermediates/calssses.jar
      • ファイル名は「core.jar」にする(ファイル名は任意)
      • このjarには、Dalivkの標準クラスが含まれる(Javaの標準クラスに相当)
  3. Androidプロジェクトのビルドパスから、SDKandroid.jarを除去する
    • プロジェクトのプロパティ -> Javaのビルドパス -> ライブラリー -> Android X.X.Xを選択 -> 除去
  4. Androidプロジェクトのビルドパスに 手順2framework.jarcore.jarを追加する
    • プロジェクトのビルド生成物のapkjarに、framework.jarcore.jarを含めないこと。
      具体的には、プロジェクトの「libs」フォルダに置いたり、エクスポート対象に含めてはいけない。
  5. 2つのjarファイルのjavadocロケーションを「android/out/target/common/docs/doc-comment-check/reference/」に設定する
    • プロジェクトのプロパティ -> Javaのビルドパス -> ライブラリー -> framework.jar(core.jar)を展開 -> Javadocロケーション -> 編集
    • この設定はJavadocを表示させるためのもの
    • ビルドするだけなら設定しなくても問題なし

 

補足

  • Hide APIだけでなく、以下のクラスの利用も可能
    • aidlから生成されるクラス:IPackageStatsObserver.Stub)
    • internalクラス(:com.android.internal.content.PackageHelper)
    • SDKでは公開されていないRクラス(:com.android.internal.R.drawable)
  • 手順2jarさえあれば、Window環境下でも問題なし

 

0 件のコメント:

コメントを投稿