首页 > 解决方案 > 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 所显示的: 在此处输入图像描述

Android Studio 显然有一个小于 2mb 的不同版本,并且还显示调试符号丢失的通知。???

另外,当我右键单击项目文件中的 apk 并单击Show in File Manager时,我可以看到.apk大于36mb,这又不是Android Studio 在上面的屏幕截图中显示的 34mb!

那么发生了什么?为什么 Android Studio 会以某种方式构建.so实际上不包含在.apk类似文件中的不存在版本的文件?看起来我会使用旧版本的.apk,但我完全擦除~/ApkProjects/,甚至进入项目文件夹并.apk从那里提取它为自己创建的副本,如您在上面看到的那样,那么 Studio 到底在哪里得到它如果不是这样的数据.apk

标签: androidandroid-studiogradleapk

解决方案


推荐阅读