barteksc/AndroidPdfViewer 庞大的 APK 大小
barteksc/AndroidPdfViewer massive APK Size
我们包含此 AndroidPdfViewer library 以支持在应用程序中查看 PDF 报告。它导致 APK 大小从 4.7Mb 大幅增加到 20.1Mb。
有没有办法减小这个尺寸。让我知道在哪里和做什么来帮助或解决这个问题。
我熟悉 proguard 并成功地为我的应用配置了它。
为什么生成的 apk 这么大?
如 documentation by barteksc/AndroidPdfViewer
中所述
Android PdfViewer depends on PdfiumAndroid, which is set of native
libraries (almost 16 MB) for many architectures. Apk must contain all
this libraries to run on every device available on market.
Fortunately, Google Play allows us to upload multiple apks, e.g. one
per every architecture. There is good article on automatically
splitting your application into multiple apks, available here.
Most important section is Improving multiple APKs creation and
versionCode handling with APK Splits, but whole article is worth
reading. You only need to do this in your application, no need for
forking PdfiumAndroid or so.
您必须为不同的设备生成多个 APK,通过这样做,您可以将 apk 的大小减少最多 10 MB。将以下代码添加到 build.gradle (Module:App)
android{
.....
splits {
abi {
enable true
reset()
include 'x86_64', 'x86', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips'
universalApk false
}
}
.....
}
ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, mips: 4, 'x86': 5, 'x86_64': 6]
import com.android.build.OutputFile
// For each APK output variant, override versionCode with a combination of
// ABI APK value * 1000 + defaultConfig.versionCode
android.applicationVariants.all { variant ->
// assign different version code for each output
variant.outputs.each { output ->
output.versionCodeOverride =
project.ext.versionCodes.get(output.getFilter(OutputFile.ABI)) * 1000 + android.defaultConfig.versionCode
}
}
在此处观看视频 https://youtu.be/bP05Vpp49hs 以获取有关操作方法的详细说明。
如果有人正在为您的应用寻找轻量级的 pdf 查看器,请试试这个
它帮助我将应用程序大小从 27MB 减少到 10MB,因为 barteksc-androidpdfviewer 需要更多 space
我也遇到了同样的问题,但到目前为止,使用 android 应用程序包可以很容易地减小 apk 的大小。
首先在 build.gradle(Module: app) 中将这些行添加到 android { } 括号内。
bundle {
abi {
enableSplit = true
}
}
这将根据架构处理 apk 拆分。
现在,还记得在 proguard-rules.pro
中添加这一行
-keep class com.shockwave.**
如果您不在 proguard-rules.pro 中添加这一行,那么您的应用程序将在发布版本中崩溃。
现在,在此之后转到 Build,然后 select、Generate Signed Bundle/apk。从这里生成一个签名包。捆绑包的生成方式与生成 apk 的方式完全相同。
然后,将您的捆绑包(.aab 文件)上传到 Google Play 控制台,您会看到每台设备根据其架构获得不同的 apk。
这是减少app最简单的方法size.Multiple apk概念比较复杂
所以,我建议你使用这种方式。
我们包含此 AndroidPdfViewer library 以支持在应用程序中查看 PDF 报告。它导致 APK 大小从 4.7Mb 大幅增加到 20.1Mb。
有没有办法减小这个尺寸。让我知道在哪里和做什么来帮助或解决这个问题。
我熟悉 proguard 并成功地为我的应用配置了它。
为什么生成的 apk 这么大?
如 documentation by barteksc/AndroidPdfViewer
中所述Android PdfViewer depends on PdfiumAndroid, which is set of native libraries (almost 16 MB) for many architectures. Apk must contain all this libraries to run on every device available on market. Fortunately, Google Play allows us to upload multiple apks, e.g. one per every architecture. There is good article on automatically splitting your application into multiple apks, available here. Most important section is Improving multiple APKs creation and versionCode handling with APK Splits, but whole article is worth reading. You only need to do this in your application, no need for forking PdfiumAndroid or so.
您必须为不同的设备生成多个 APK,通过这样做,您可以将 apk 的大小减少最多 10 MB。将以下代码添加到 build.gradle (Module:App)
android{
.....
splits {
abi {
enable true
reset()
include 'x86_64', 'x86', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips'
universalApk false
}
}
.....
}
ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, mips: 4, 'x86': 5, 'x86_64': 6]
import com.android.build.OutputFile
// For each APK output variant, override versionCode with a combination of
// ABI APK value * 1000 + defaultConfig.versionCode
android.applicationVariants.all { variant ->
// assign different version code for each output
variant.outputs.each { output ->
output.versionCodeOverride =
project.ext.versionCodes.get(output.getFilter(OutputFile.ABI)) * 1000 + android.defaultConfig.versionCode
}
}
在此处观看视频 https://youtu.be/bP05Vpp49hs 以获取有关操作方法的详细说明。
如果有人正在为您的应用寻找轻量级的 pdf 查看器,请试试这个
它帮助我将应用程序大小从 27MB 减少到 10MB,因为 barteksc-androidpdfviewer 需要更多 space
我也遇到了同样的问题,但到目前为止,使用 android 应用程序包可以很容易地减小 apk 的大小。 首先在 build.gradle(Module: app) 中将这些行添加到 android { } 括号内。
bundle {
abi {
enableSplit = true
}
}
这将根据架构处理 apk 拆分。 现在,还记得在 proguard-rules.pro
中添加这一行-keep class com.shockwave.**
如果您不在 proguard-rules.pro 中添加这一行,那么您的应用程序将在发布版本中崩溃。 现在,在此之后转到 Build,然后 select、Generate Signed Bundle/apk。从这里生成一个签名包。捆绑包的生成方式与生成 apk 的方式完全相同。 然后,将您的捆绑包(.aab 文件)上传到 Google Play 控制台,您会看到每台设备根据其架构获得不同的 apk。 这是减少app最简单的方法size.Multiple apk概念比较复杂
所以,我建议你使用这种方式。