一、引用framework.jar

1.首先需要通过源码编译获得framework.jar包,实际源码编译后在out下生成classes.jar 即apk中需要导入的framework.jar

out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar

2.将jar包放入工程libs下面,然后配置build.gradle

ProjectName\app\build.gradle中的dependencies下面添加compileOnly files('libs/framework.jar')

dependencies {

    ...

    compileOnly files('libs/framework.jar')

 }

//add start 

preBuild {    doLast {        def imlFile = file( project.name + ".iml")        println 'Change ' + project.name + '.iml order'        try {            def parsedXml = (new XmlParser()).parse(imlFile)            def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }            parsedXml.component[1].remove(jdkNode)            def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform"            println 'what' + sdkString            new Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])            groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile))        } catch (FileNotFoundException e) {            // nop, iml not found            println "no iml found"        }    }}

//add end

说明:实际起的作用就是和有的文章里面描述的修改ProjectName\app\app.iml中的内容起的作用一样,使as引用能使用framework.jar隐藏的api接口,将自己的jar引用放在Android API 28 Platform" jdkType="Android SDK的前面

ProjectName\build.gradle中的allprojects下面如下配置

allprojects {    repositories {        google()        jcenter()    }    //add start    gradle.projectsEvaluated {        tasks.withType(JavaCompile) {            options.compilerArgs.add('-Xbootclasspath/p:app/libs/framework.jar')        }    }    //add end}

3.之后直接在代码里面验证即可,如果没生效,可以rebuild工程试下,

没引用成功前,mActivityManager是调用不了系统隐藏的api接口的

如果引用成后提示

 

 

二、引用settinglib.jar

1.首先需要通过源码编译获得settingslib.jar包,实际源码编译后在out下生成classes.jar 即apk中需要导入的settingslib.jar

out\target\common\obj\JAVA_LIBRARIES\SettingsLib_intermediates

2.将jar包放入工程libs下面,然后配置build.gradle

ProjectName\app\build.gradle中的dependencies下面添加compileOnly files('libs/framework.jar')

dependencies {

    ...

   implementation files('libs/settingslib.jar')

 }

3.实际代码调用

说明:之前思维定式以为调用系统的jar包都要类似与framework.jar中的方法一样,有的网上也说要将

implementation fileTree(dir: 'libs', include: ['*.jar'])注释掉,实际结果是不需要注释也可以用,且不要用
compileOnly files去引用,否则as调用会没问题,但是一运行就会提示类找不到的错误

补充:实际调试验证log结果,蓝牙接口调用时注意加权限

更多相关文章

  1. Android海康监控视频调用demo
  2. Android情景分析之深入解析system_server
  3. android源代码下载、编译、刷机、编译模块push到手机
  4. Android蓝牙开发,报BluetoothAdapter﹕ Can't create handler insid
  5. 习题二
  6. Android中查看CPU和内存
  7. Android(安卓)Suspend/resume 过程分析.
  8. android studio 混淆编译
  9. Android底层开发Led控制实验

随机推荐

  1. Android Google Map实例 - 发布Android G
  2. Android实现QQ分享及注意事项
  3. Android 10 开发亮点有哪些?
  4. Android的layout_weight属性释疑
  5. Android(Java):EditText相关
  6. 【Android】17.5 利用Messenger实现进程
  7. android4.0不能在UI的线程里做socket
  8. Android开发学习笔记(八)Android应用界面编
  9. ionic3 升级
  10. Android实现手电筒电源键关闭功能