2016-03-10 2 views
3

Я добавил зависимость (com.github.wseemann: FFmpegMediaMetadataRetriever: 1.0.3) к моему приложению (build.gradle) в моей Android-студии, apk перескочил с 2 МБ до 16 МБ. Я просто использовал образец кода больше, есть ли способ иметь меньший размер, чем этот?Apk incresed по размеру после добавления FFmpegMediaMetadataRetriever

 FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever(); 
     mmr.setDataSource("http://testsite.com/test/upload/Twale_FLO.mp3"); 
     mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ALBUM); 
     mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ARTIST); 
     long duration =Long.parseLong(mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_DURATION)); 
     duration=duration/1000; 
     long minute=duration/(60); 
     long second=duration-(minute*60); 
     mmr.release(); 
     your_text_view.setText(minute+":"+second); 

ответ

3

FFmpegMediaMetadataRetriever использует собственный код. Это означает, что библиотека включает в себя предустановленные двоичные файлы для каждой архитектуры Android. Если вы хотите уменьшить размер APK, вам нужно будет использовать готовые библиотеки, найденные на странице проекта FFmpegMediaMetadataRetriever, и создать APK каждую поддерживаемую архитектуру вручную.

0

Единственный способ уменьшить размер Apk после включения FFmpegMediaMetadataRetriever - это поддержка ABI.

FFmpegMediaMetadataRetriever использует собственный код, который отличается для каждого используемого процессора. Если вы не разрезаете, все внутренние коды будут объединены внутри вашего APK: всего 25 МБ или больше!

Итак, добавив следующие строки в ваш build.gradle, вы разрешаете APK расщепление:

lintOptions { 
     checkReleaseBuilds false 
     abortOnError false 
    } 

    splits { 

     // Configures multiple APKs based on ABI. 
     abi { 

      // Enables building multiple APKs per ABI. 
      enable true 

      // By default all ABIs are included, so use reset() and include to specify that we only 
      // want APKs for x86, armeabi-v7a, and mips. 

      // Resets the list of ABIs that Gradle should create APKs for to none. 
      reset() 

      // Specifies a list of ABIs that Gradle should create APKs for. 
      include "x86", "armeabi-v7a", "mips", "arm64-v8a", "x86_64", "armeabi" 

      // Specifies that we do not want to also generate a universal APK that includes all ABIs. 
      universalApk true 
     } 
    } 

Таким образом, после сборки APK (или генерировать подписан APK), ваша сборка будет иметь 6 APK-, по одному для каждого ЦПУ. Загрузите их все в Google Play, чтобы ваш пользователь загружал только необходимые файлы. APA Armeabi-v7a будет только около 6 Мб!

+0

Что вы хотите сказать, загрузив их все в игровой магазин? поэтому каждый apk будет иметь другую страницу загрузки? и информация? или мы можем загрузить на одной странице проекта несколько apk? –

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