Как получить всю информацию о приложении (размер Apk, размер кэша, размер данных, общий размер кэша) - PullRequest
1 голос
/ 02 июля 2019

Для получения информации, упомянутой в Вопросе, я пытаюсь использовать скрытый Api (используя AIDL), он работает в Api ниже 26, но не в 26 или 27. В oreo это дает мне:

java.lang.UnsupportedOperationException: Shame on you for calling the hidden API getPackageSizeInfoAsUser(). Shame!

Я достиг этого от: http://allandroidprojects.blogspot.com/2016/06/android-get-cache-size-data-size-apk.html

это решение принято, но оно не будет работать в oreo:

Получение установленного размера приложения

в этом посте упоминается еще одно решение:

final PackageManager pm = context.getPackageManager();
ApplicationInfo applicationInfo = pm.getApplicationInfo(appInfo.getPackage(), 0);
File file = new File(applicationInfo.publicSourceDir);
int size = file.length();

Используя вышеуказанный метод, я не могу получить размер всего приложения, потому что он дает мне только базовый размер apk, а не другой контент приложения, например:

log:

2019-07-02 11:48:16.082 4069-4069/com.example.getallinstallapp D/AppSize: :com.android.cts.priv.ctsshim:6044
2019-07-02 11:48:16.098 4069-4069/com.example.getallinstallapp D/AppSize: :/system/priv-app/GoogleExtServices/GoogleExtServices.apk
2019-07-02 11:48:16.099 4069-4069/com.example.getallinstallapp D/AppSize: :Android Services Library:10924
2019-07-02 11:48:16.154 4069-4069/com.example.getallinstallapp D/AppSize: :/data/app/com.example.voicelockreenginer-nhzu_JLVE6Eh5C-sfg-asg==/base.apk
2019-07-02 11:48:16.154 4069-4069/com.example.getallinstallapp D/AppSize: :VoiceScreenLock:144984
2019-07-02 11:48:16.163 4069-4069/com.example.getallinstallapp D/AppSize: :/system/app/CubeLiveWallpapers/CubeLiveWallpapers.apk
2019-07-02 11:48:16.163 4069-4069/com.example.getallinstallapp D/AppSize: :Example Wallpapers:22868
2019-07-02 11:48:16.169 4069-4069/com.example.getallinstallapp D/AppSize: :/system/priv-app/TelephonyProvider/TelephonyProvider.apk
2019-07-02 11:48:16.169 4069-4069/com.example.getallinstallapp D/AppSize: :Phone and Messaging Storage:137053
2019-07-02 11:48:16.196 4069-4069/com.example.getallinstallapp D/AppSize: :/system/priv-app/CalendarProvider/CalendarProvider.apk
2019-07-02 11:48:16.196 4069-4069/com.example.getallinstallapp D/AppSize: :Calendar Storage:127531
2019-07-02 11:48:16.202 4069-4069/com.example.getallinstallapp D/AppSize: :/system/priv-app/MediaProvider/MediaProvider.apk
2019-07-02 11:48:16.202 4069-4069/com.example.getallinstallapp D/AppSize: :Media Storage:133272
2019-07-02 11:48:16.214 4069-4069/com.example.getallinstallapp D/AppSize: :/system/priv-app/GoogleOneTimeInitializer/GoogleOneTimeInitializer.apk
2019-07-02 11:48:16.214 4069-4069/com.example.getallinstallapp D/AppSize: :Google One Time Init:58568
2019-07-02 11:48:16.229 4069-4069/com.example.getallinstallapp D/AppSize: :/system/app/GoogleExtShared/GoogleExtShared.apk
2019-07-02 11:48:16.229 4069-4069/com.example.getallinstallapp D/AppSize: :Android Shared Library:4774
2019-07-02 11:48:16.236 4069-4069/com.example.getallinstallapp D/AppSize: :/system/priv-app/WallpaperCropper/WallpaperCropper.apk
2019-07-02 11:48:16.236 4069-4069/com.example.getallinstallapp D/AppSize: :com.android.wallpapercropper:25986  

здесь он дает мне размер VoiceScreenLock:144984 около 144 КБ, но его фактический размер составляет около 13,5–14 МБ.

вышеупомянутый метод, возвращающий также правильный размер apk. поэтому для большей ясности я пошел в Device Explorer. https://ibb.co/r2ys3ZW

Как вы можете видеть для получения полного размера приложения, мне нужно объединить результат всех .apk в этой папке.

как я могу получить правильный размер приложения и другую информацию, о которой идет речь?

...