Skip to content

Commit 672bb34

Browse files
committedSep 3, 2021
Android 11 apex调研
1 parent 37e3846 commit 672bb34

File tree

1 file changed

+87
-1
lines changed

1 file changed

+87
-1
lines changed
 

‎README.md

Lines changed: 87 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,4 +195,90 @@ linux下安装brotli:
195195
tmp目录下即为系统文件。
196196

197197
## Android 10
198-
Android 10上面,vdex不包含dex文件了,dex文件存放在原apk中或者jar包中。
198+
Android 10上面,vdex不包含dex文件了,dex文件存放在原apk中或者jar包中。
199+
200+
## Android 11
201+
Android 11 新增`apex`格式文件,部分代码存储在`/system/apex`目录下面:
202+
```
203+
system/apex/
204+
├── com.android.apex.cts.shim.apex
205+
├── com.android.art.release.apex
206+
├── com.android.i18n.apex
207+
├── com.android.permission.apex
208+
├── com.android.runtime.apex
209+
├── com.android.vndk.current.apex
210+
├── com.android.wifi.apex
211+
├── com.google.android.adbd.apex
212+
├── com.google.android.cellbroadcast.apex
213+
├── com.google.android.conscrypt.apex
214+
├── com.google.android.extservices.apex
215+
├── com.google.android.ipsec.apex
216+
├── com.google.android.media.apex
217+
├── com.google.android.mediaprovider.apex
218+
├── com.google.android.media.swcodec.apex
219+
├── com.google.android.neuralnetworks.apex
220+
├── com.google.android.os.statsd.apex
221+
├── com.google.android.permission.apex
222+
├── com.google.android.resolv.apex
223+
├── com.google.android.sdkext.apex
224+
├── com.google.android.tethering.apex
225+
└── com.google.android.tzdata2.apex
226+
227+
```
228+
`com.android.wifi.apex`为例:
229+
1. 查看文件格式:
230+
```
231+
file com.android.wifi.apex
232+
233+
output:
234+
235+
com.android.wifi.apex: Java archive data (JAR)
236+
```
237+
2. 解压文件:
238+
```
239+
unzip com.android.wifi.apex -d com.android.wifi.apex_out
240+
241+
查看解压后的文件:
242+
243+
com.android.wifi.apex_out/
244+
├── AndroidManifest.xml
245+
├── apex_build_info.pb
246+
├── apex_manifest.pb
247+
├── apex_payload.img
248+
├── apex_pubkey
249+
├── assets
250+
├── META-INF
251+
└── resources.arsc
252+
253+
```
254+
255+
3. 挂载`apex_payload.img`文件:
256+
```
257+
sudo mount -o loop,ro apex_payload.img tmp/
258+
```
259+
4. 查看tmp目录下内容:
260+
```
261+
tmp
262+
├── apex_manifest.pb
263+
├── app
264+
│   └── OsuLogin
265+
│   └── OsuLogin.apk
266+
├── etc
267+
│   └── security
268+
│   └── cacerts_wfa
269+
│   ├── 21125ccd.0
270+
│   ├── 674b5f5b.0
271+
│   └── ea93cb5b.0
272+
├── javalib
273+
│   ├── framework-wifi.jar
274+
│   └── service-wifi.jar
275+
├── lost+found [error opening dir]
276+
└── priv-app
277+
└── ServiceWifiResources
278+
└── ServiceWifiResources.apk
279+
```
280+
`javalib`目录下的jar即为`wifi service`相关的源码。
281+
ps: Android 10上的`/system/apex`目录下存放的是对应的文件夹,在文件夹下存放着相关的jar包,省去了解压挂载文件系统的步骤。
282+
WifiServiceImpl.java所在的jar,需要查看bp文件。
283+
https://android.googlesource.com/platform/frameworks/opt/net/wifi/+/refs/tags/android-11.0.0_r42/service/Android.bp。
284+

0 commit comments

Comments
 (0)