我意识到,出于某种原因,Android Studio会生成不同大小的APK文件,而不是使用Gradle手动 。
因此,当我使用Gradle(gradle build
或gradle assembleDebug
)构建文件时,我会根据我是否激活了ProGuard来获得apks大小。
如果没有ProGuard,我会得到一个包含大约62k方法引用的文件。启动ProGuard后,我得到一个apk文件,其中大约有37k方法引用和6mb重。这似乎没问题。
但是!当我从Android Studio运行应用程序(激活了ProGuard)时,我得到一个大约3mb的apk文件,当导入进行分析时有两个dex文件(classes.dex
和classes2.dex
),两者都是他们在一起只显示了300个方法参考,显然这是不正确的。
无论我采用哪种方式构建它,应用程序都能正常工作,我还没有看到任何违规行为。
那么,它是如何以及为何发生的?我试着稍微谈谈Android Studio如何构建流程,但没有成功。我认为它基本上不应该使文件与我调用gradle build
的文件不同,但显然情况并非如此。
我正在使用Gradle 3.3(作为Gradle Wrapper)和Android Studio 2.3.3。
这是一些可能相关的数字:
compileSdkVersion 26
buildToolsVersion '26.0.1'
minSdkVersion 16
targetSdkVersion 25
答案 0 :(得分:1)
使用Android Studio上的手动运行按钮进行APK编译,专门针对其目标设备进行了优化,而使用gradle命令编译的APK可用于定位任何其他设备。看看
https://medium.com/@elye.project/dont-publish-your-manually-compiled-apk-c8ce2bf7e6b4
不确定为什么您的APK只有300个方法引用。