生成的 .apk 包括未使用的资源和未使用的 类
Generated .apk includes unused resources and unused classes
我正在为 Android 开发一个非常简单的应用程序,实际上它所做的只是在屏幕上显示当前时间和日期。考虑到这一点,我原以为该应用程序的大小只有几千字节,但事实并非如此。
生成应用程序的 "release" 并在 Android Studio 中使用 Build > Analyze APK... 对其进行分析后,我可以看到大量的 .png 和 .xml 资源文件被放入 .apk 文件中,我从未使用或包含其中任何一个(我的项目只包含 4 个资源文件)。这让我很困扰,因为这些自动包含的资源文件只占用 space.
这些是自动包含的文件夹(蓝色),其中包含我正在谈论的文件:
如您所见,这大约是应用程序大小的 26%。
类似的情况发生在 "classes.dex" 文件中,该文件包含数百(可能数千)个我从未在我的代码中引用的 类。例如,在查看文件包含的内容后,我发现其中包含 "HashMap",将其包含在内是没有意义的,因为我从未在我的代码中导入它。
最后,我的问题是:是否有可能以某种方式避免这些未使用的资源文件和 类 被包含在 .apk 版本中?
注意:我已经在使用
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
在我的 "build.gradle" 文件中,它确实减少了 .apk 的大小,但是我上面描述的未使用的元素仍然包括在内。
I never used nor included any of them
如果你有 dependencies
,那些 类 和资源来自他们。
Is it possible to somehow avoid these unused resource files and classes from being included in the release of the .apk?
消除你的依赖。
例如,当您创建项目时,您可能会看到一个 "Backwards Compatibility (AppCompat)" 复选框,pre-checked。保持选中状态会添加对 appcompat-v7
的依赖并设置您的项目以使用它(例如,您的 activity 扩展 AppCompatActivity
而不是 Activity
)。使用 appcompat-v7
有利也有弊;缺点之一是它会给您的项目增加一些开销。
我正在为 Android 开发一个非常简单的应用程序,实际上它所做的只是在屏幕上显示当前时间和日期。考虑到这一点,我原以为该应用程序的大小只有几千字节,但事实并非如此。
生成应用程序的 "release" 并在 Android Studio 中使用 Build > Analyze APK... 对其进行分析后,我可以看到大量的 .png 和 .xml 资源文件被放入 .apk 文件中,我从未使用或包含其中任何一个(我的项目只包含 4 个资源文件)。这让我很困扰,因为这些自动包含的资源文件只占用 space.
这些是自动包含的文件夹(蓝色),其中包含我正在谈论的文件:
如您所见,这大约是应用程序大小的 26%。
类似的情况发生在 "classes.dex" 文件中,该文件包含数百(可能数千)个我从未在我的代码中引用的 类。例如,在查看文件包含的内容后,我发现其中包含 "HashMap",将其包含在内是没有意义的,因为我从未在我的代码中导入它。
最后,我的问题是:是否有可能以某种方式避免这些未使用的资源文件和 类 被包含在 .apk 版本中?
注意:我已经在使用
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
在我的 "build.gradle" 文件中,它确实减少了 .apk 的大小,但是我上面描述的未使用的元素仍然包括在内。
I never used nor included any of them
如果你有 dependencies
,那些 类 和资源来自他们。
Is it possible to somehow avoid these unused resource files and classes from being included in the release of the .apk?
消除你的依赖。
例如,当您创建项目时,您可能会看到一个 "Backwards Compatibility (AppCompat)" 复选框,pre-checked。保持选中状态会添加对 appcompat-v7
的依赖并设置您的项目以使用它(例如,您的 activity 扩展 AppCompatActivity
而不是 Activity
)。使用 appcompat-v7
有利也有弊;缺点之一是它会给您的项目增加一些开销。