Reginer / aosp-android-jar

AOSP编译出的android.jar,sdk里面以前反射调用的方法,现在可以直接调用了。
MIT License
540 stars 79 forks source link

android31 找不到 com.android.internal.telephony.PhoneFactory,但是源码里面有请问下这个改怎么解决呢 ? #14

Closed MrR0990 closed 1 year ago

Reginer commented 1 year ago

PhoneFactory.zip 将附件解压出来放到android.jar的对应位置去,用压缩包打开jar直接拖进去就可以,路径对上。 如果sync或者重启之后报错了,再给我反馈,我没有验证过这个类,是否能够mock过。 由于Android31的源码我已经删除了,这是使用Android33的源码编译的,类的源码在 https://cs.android.com/android/platform/superproject/+/android-13.0.0_r3:frameworks/opt/telephony/src/java/com/android/internal/telephony/PhoneFactory.java

MrR0990 commented 1 year ago

感谢你的回复,这个类 android31的源码我已经下载到了,但是没明白“将附件解压出来放到android.jar的对应位置去”是把这个放到 jar 里面去??还是说先解压 Android.jar,放进去之后再生成 Android.jar

Reginer commented 1 year ago

image

用rar或者任何其他的压缩工具打开你想要修改的android.jar,你的也就是 sdk\platforms\android-31\android.jar ,和附件中的文件,将附件中的class拖拽到android.jar的对应路径下

Reginer commented 1 year ago

你理解的先解压android.jar,再生成android.jar也是没问题的,只不过拖拽是一步进行了这个操作。

Reginer commented 1 year ago

还没有明白的话可以参考这个视频以及查看对应issue上下文 https://github.com/Reginer/aosp-android-jar/issues/5#issuecomment-1245035344

MrR0990 commented 1 year ago

好的,还有一个疑问,.class 文件是怎么生成的呢?我用 javac命令会报错,另外还想批量把一个包里面所有的 java 文件生产 class,这个可以吗?发自我的 iPhone在 2023年5月8日,12:00,鼎鼎鼎 @.***> 写道: 还没有明白的话可以参考这个视频以及查看对应issue上下文 #5 (comment)

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

Reginer commented 1 year ago

我是编译的源码 。 你用javac直接生成肯定报错,因为代码里面有很多导入,你需要依赖完全才能编译通过。

如果只是一个类,你可以用as创建同名类,只要保持方法信息一致,方法体可以全部删除,如果有返回值类型的报错,也是同样创建对应的同名类。

这样就可以使用AS或者javac来生成class文件了 。

MrR0990 commented 1 year ago

好的,谢谢,我再想想办法

MrR0990 commented 1 year ago

再麻烦问一下,我按照“编译的源码”等到了一个固件,但是怎么才能得到对应文件都是 class 文件的 framework 文件夹的呢?

Reginer commented 1 year ago

我没有很理解,对应的frameworks文件夹在哪要问你们系统。

但是对于android.jar来说,它不需要知道frameworks文件夹,只需要知道class的包名。

这里我说的 “编译的源码” 指的是编译的AOSP

MrR0990 commented 1 year ago

是的,我现在已经在一个 AOSP 源码服务器上,并且可以正常编译整个源码

我是可以直接在源码环境的某个地方可以直接找到 PhoneFactory 的 .class 文件吗?

还是说需要在 AOSP 的源码环境执行什么命令才能得到PhoneFactory的.class文件,而不是.java

Reginer commented 1 year ago

在out目录下,执行 find -name PhoneFactory.class 就会搜到对应的class文件 , 前提是AOSP你已经编译成功了

MrR0990 commented 1 year ago

好的,可以了