android - Android Studio 的“Profile or Debug APK”显示了错误的库大小,并声称它们没有被剥离
问题描述
我最近制作了一个带有剥离文件的新版本的 apk 并~/ApkProjects/
完全删除,以确保我正在打开并尝试调试最新版本。
但是,Android Studio 的“Profile or Debug APK”在其文件浏览器中显示错误的库大小(太小),并声称它们被从符号中剥离,而实际上它们不是!
例如,这是我检查Android Studio 创建lib/armeabi-v7a/libSDL2.so
的相应文件夹中的:~/Apkprojects/myapp
$ pwd
/home/jonas/ApkProjects/myapp
$ mkdir test
$ cd test
$ unzip ../myapp.apk
Archive: ../myapp.apk
inflating: AndroidManifest.xml
inflating: META-INF/CERT.RSA
inflating: META-INF/CERT.SF
inflating: META-INF/MANIFEST.MF
extracting: assets/private.mp3
inflating: classes.dex
inflating: lib/armeabi-v7a/libSDL2.so
inflating: lib/armeabi-v7a/libSDL2_image.so
inflating: lib/armeabi-v7a/libSDL2_mixer.so
inflating: lib/armeabi-v7a/libSDL2_ttf.so
inflating: lib/armeabi-v7a/libcrypto1.1.so
inflating: lib/armeabi-v7a/libffi.so
inflating: lib/armeabi-v7a/libfreetype.so
inflating: lib/armeabi-v7a/libhidapi.so
inflating: lib/armeabi-v7a/libmain.so
inflating: lib/armeabi-v7a/libpng16.so
inflating: lib/armeabi-v7a/libpython3.7m.so
inflating: lib/armeabi-v7a/libsqlite3.so
inflating: lib/armeabi-v7a/libssl1.1.so
extracting: res/drawable-hdpi-v4/ic_launcher.png
extracting: res/drawable-mdpi-v4/ic_launcher.png
extracting: res/drawable-xhdpi-v4/ic_launcher.png
extracting: res/drawable-xxhdpi-v4/ic_launcher.png
extracting: res/drawable/icon.png
extracting: res/drawable/presplash.jpg
inflating: res/layout/chooser_item.xml
inflating: res/layout/main.xml
inflating: res/layout/project_chooser.xml
inflating: res/layout/project_empty.xml
extracting: resources.arsc
$ stat lib/armeabi-v7a/libSDL2.so
File: lib/armeabi-v7a/libSDL2.so
Size: 3803132 Blocks: 7432 IO Block: 4096 regular file
Device: fd02h/64770d Inode: 13769903 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ jonas) Gid: ( 1000/ jonas)
Context: unconfined_u:object_r:container_file_t:s0:c42,c208
Access: 1979-12-31 00:00:00.000000000 +0100
Modify: 1979-12-31 00:00:00.000000000 +0100
Change: 2019-07-13 14:05:20.501729484 +0200
Birth: -
$ file lib/armeabi-v7a/libSDL2.so
lib/armeabi-v7a/libSDL2.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=ab7e06780169e2f4ac5dab149ee66d99af91f3f2, with debug_info, not stripped
$
如您所见,库文件被报告为大于 3mb,并且很明显它是unstripped / 带有调试符号的。
Android Studio 显然有一个小于 2mb 的不同版本,并且还显示调试符号丢失的通知。???
另外,当我右键单击项目文件中的 apk 并单击Show in File Manager
时,我可以看到.apk
大于36mb,这又不是Android Studio 在上面的屏幕截图中显示的 34mb!
那么发生了什么?为什么 Android Studio 会以某种方式构建.so
实际上不包含在.apk
类似文件中的不存在版本的文件?看起来我会使用旧版本的.apk
,但我完全擦除~/ApkProjects/
,甚至进入项目文件夹并.apk
从那里提取它为自己创建的副本,如您在上面看到的那样,那么 Studio 到底在哪里得到它如果不是这样的数据.apk
?
解决方案
推荐阅读
- java - 为什么 SQLite 使用 JDBC 这么慢?
- node.js - 在生成同步子进程上触发并行节点进度条
- java - 如何从 jar 文件中导入类
- android - 仅在 android 6.0 (api 23) 上偶尔出现 UnsatisfiedLinkError
- javascript - 仅在使用“css resize”调整弹性项目大小时调整弹性框中下一个(右侧)弹性项目的大小
- javascript - 我想删除
从最后一个标签- 标签
- php - Codeigniter dompdf:无效字符错误
- php - 通过仅允许具有随机生成密码的人访问来保护 apache 中的目录
- django - 使用社交 django 包登录作为谷歌显示 url 不匹配?
- jquery - .NET Core + 带有“Access-Control-Allow-Origin”的 jQuery AJAX 请求