栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

在Android Studio中使用android私有或隐藏的API & Class

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Android Studio中使用android私有或隐藏的API & Class

测试环境Android 11®

如下为一般android studio的工程目录及文件。

目标:使用了官方android SDK中未包含的api&class,而且需要在android studio及aosp中编译通过。
方法:

  1. 在aosp中编译时,需要注意在Android.mk中添加LOCAL_PRIVATE_PLATFORM_APIS := true(如果是使用Android.bp, 则添加platform_apis: true)
  2. 在AS中编译时,需要在app中放置包含有aosp私有或者隐藏的api&class的jar包;这个jar其实就是由aosp/framworks/base/中的code编译而来,本文中对应framework-all.jar,编译出来的路径为:out/soong/.intermediates/frameworks/base/framework-all/android_common/combined/framework-all.jar,不同的android版本可能对应不同的路径及文件名,详细参考frameworks/base/Android.bp(或Android.mk)。有了jar包后就继续调整build.gradle。
    外层build.gradle调整如下(Line:29 ~ 34):
 24 allprojects {
 25     repositories {
 26         google()
 27         jcenter()
 28     }
 29     // To use hidden apis & internal apis
 30     gradle.projectsevaluated {
 31         tasks.withType(JavaCompile) {
 32             options.compilerArgs.add('-Xbootclasspath/p:app\libs\framework-all.jar')
 33         }
 34     }
 35 }

内层build.gradle调整如下(Line:26-27):

 25 dependencies {
 26 //    implementation fileTree(dir: 'libs', include: ['*.jar'])
 27     compileonly files('libs/framework.jar')
 28     implementation 'com.google.android.material:material:1.4.0'
 29     implementation 'androidx.cardview:cardview:1.0.0'
 30     implementation 'androidx.recyclerview:recyclerview:1.2.1'
 31     implementation 'androidx.leanback:leanback:1.0.0'
 32     implementation 'androidx.leanback:leanback-preference:1.1.0-rc01'
 33 }  

之后,再重新gradle sync, build就可以编译通过了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/271328.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号