2017-02-20 5 views
1

Мы включили этот AndroidPdfViewer library для поддержки просмотра отчетов в формате PDF в приложении. Это привело к массовому увеличению размера APK с 4.7Mb до 20.1Mb.barteksc/AndroidPdfViewer массив APK Размер

Есть ли способ уменьшить этот размер. Дайте мне знать, где и что нужно возиться, чтобы помочь или решить это.

Я знаком с proguard и настроил его для своего приложения с разумным успехом.

ответ

1

Почему итоговый apk такой большой?

Android PdfViewer зависит от PdfiumAndroid, который представляет собой набор собственных библиотек (почти 16 МБ) для многих архитектур. Apk должен содержать все эти библиотеки для запуска на каждом устройстве, доступном на рынке. К счастью, Google Play позволяет загружать несколько apks, например. по одной на каждую архитектуру. Существует хорошая статья о автоматическом разбиении вашего приложения на несколько apks, доступных here. Наиболее важным разделом является улучшение создания нескольких APK и обработка версии Code с помощью Splash APK, но целая статья стоит прочитать. Вам нужно только сделать это в своем приложении, не нужно форсировать PdfiumAndroid или так.

API: https://github.com/barteksc/AndroidPdfViewer

0

Вы должны создать несколько файлов APK для различных устройств, делая это, вы можете уменьшить размер APK до 10 МБ меньше, чем предыдущий. Добавьте приведенный ниже код для build.gradle (модуль: 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 
    } 
} 

Whatch видео здесь https://youtu.be/bP05Vpp49hs для детального объяснения о том, как это сделать.

+0

больше похоже на комментарий – Gahan

Смежные вопросы