Android Studioは自分でコンパイルしたframeworkを使用


Platform: Android Studio 4.3.1
OS: Ubuntu14.04
1.Androidソースコードを修正し、必要なAPIの「@hide」注記を削除
次にframeworks(mmm frameworks/base)を個別にコンパイルします.コンパイル生成された中間ファイルはout/target/common/obj/JAVA_LIBRARIES/framework_intermediates/
2.コンパイルされたframeworkをAndroid Studioプロジェクトに配置する
ソースディレクトリout/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.JArファイル、Android Studioプロジェクトのapp/sdkの下にコピーしandroid 23に名前を変更します.JAr(android$(api-level).jar). Android Studioプロジェクトのbuildを修正します.gradle(Project)は、allprojectsノードに以下の内容を追加し、コンパイル時にandroid 23を使用するように構成する.jar
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs.add('-Xbootclasspath/p:app/sdk/android23.jar')
        }
    }

Android Studioプロジェクトのbuildを修正します.gradle(Module)は、dependenciesノードに以下の内容を追加し、android 23を構成する.jarはコンパイル時にのみ使用する、apkにパッケージされない.
    compileOnly files('sdk/android23.jar')

ソースコードを自分で変更したくない場合は、隠しAPIを使用してgithubにコンパイルされているものがあります.https://github.com/anggrayudi/android-hidden-api
自分でコンパイルしたframeworkを使用する問題
  • なぜandroid 23をJArはapp/libsの下に置きますか?app/libsの下に置くと、次のdependenciesと競合し、最終的にコンパイルされたapkは大きくなります(compileOnlyは失効します)
  •     implementation fileTree(dir: 'libs', include: ['*.jar'])
    
  • Cannot resolve symbol 'SERIAL_SERVICE’の問題は解析エラーのヒントにすぎず、コンパイルに影響しない.Android StudioがSDKを最初の構文解析のjarパッケージとしているためである.手動でapp/appを変更することができる.iml、次の行をドキュメントの最後に移動します(build.gradleを変更すると、同期後に自動的に変更され、手動で変更する必要があります):
  •     
    
  • 自分でAPPを書くときは、プラットフォームで署名するか、システム/system/priv-app/以下に置く(APPをplatform-appにする)ことに注意し、システムプラットフォームアプリケーションだけがこれらの非表示インタフェースと機能にアクセスすることができる.