framework.jar 听说只能有65535个接口,并且不能调用其他JAR 包的接口?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了framework.jar 听说只能有65535个接口,并且不能调用其他JAR 包的接口?相关的知识,希望对你有一定的参考价值。

framework.jar 听说只能有65535个接口,并且不能调用其他JAR 包的接口,请问知道是为什么吗?

不仅是framework.jar 在android的任何的dex的文件都只能是少于这个数字的。因为dex文件中的方法使用的 short表示的mehodid。至于第二个问题应该是谷歌为了防止jar包耦合做的限制。具体原因不知。 参考技术A 求解:自己加了些接口总数超过65535时编译不过.删掉几个才可以.有啥办法解决

Android Studio:解决AOSP自编译framework.jar引用不到的问题

一、前言

在编写Android 系统APP过程中,需要使用到一些SYSTEM API或Hiden API,而这些API在AS随机的SDK里面是不具备的,需要我们自己通过AOSP源码编译一份。但在AS配置引用过程中,进程遇到Build.gradle相同的配置,在一些项目中可以引用,在另外一些项目中缺又有问题,一直不明白是什么原因。但如果我们采用绝对路径的话,引用上就没有问题。但如果使用绝对路径,就意味着,每一个代码的用户,都得自己配置一次,非常麻烦,所以,本人就想到了下面的方法。

二、处理过程

目标文件:Settings\\build.gradle

2.1 时灵时不灵的版本

  • 使用 framework.jar 的相对路径
    gradle.projectsEvaluated 
        tasks.withType(JavaCompile) 
            options.compilerArgs.add("-Xbootclasspath/p:libs/framework.jar")
        
    

2.2 绝对灵、粗暴版本

  • 使用 framework.jar 的绝对路径
    gradle.projectsEvaluated 
        tasks.withType(JavaCompile) 
            options.compilerArgs.add("-Xbootclasspath/p::\\\\Users\\\\66176\\\\Documents\\\\works\\\\Gitee\\\\Note-011_aosp_android-11-r39_settings\\\\source_as\\\\Settings\\\\libs\\\\framework.jar")
        
    

2.3 粗暴的改良版(Finally)

  • 使用 $project.rootDir 获取绝对路径,避免hardcode.
    gradle.projectsEvaluated 
        tasks.withType(JavaCompile) 
            options.compilerArgs.add("-Xbootclasspath/p:$project.rootDir/libs/framework.jar")
        
    

以上是关于framework.jar 听说只能有65535个接口,并且不能调用其他JAR 包的接口?的主要内容,如果未能解决你的问题,请参考以下文章

最大连接数“65535”的误解

PING网络数据包为何只能65500

一个Java字符串中到底有多少个字符?

添加 framework.jar,混淆失败(不混淆framework.jar)

你说,一个Java字符串到底有多少个字符?

Android Framework源码反编译