Apk добавлен в размер после добавления FFmpegMediaMetadataRetriever
Я добавил зависимость (com.github.wseemann: FFmpegMediaMetadataRetriever: 1.0.3) к моему приложению (build.gradle) в моей Android-студии, apk перескочил с 2 до 16 МБ. Я просто использовал образец кода ничего больше, есть ли способ иметь меньший размер, чем этот?
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);
Ответы
Ответ 1
FFmpegMediaMetadataRetriever использует собственный код. Это означает, что библиотека включает в себя предустановленные двоичные файлы для каждой архитектуры Android. Если вы хотите уменьшить размер APK, вам нужно будет использовать предварительно построенные библиотеки, найденные на странице проекта FFmpegMediaMetadataRetriever, и вручную создать APK для каждой поддерживаемой архитектуры.
Ответ 2
Единственный способ уменьшить размер 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 apks, по одному для каждого процессора. Загрузите их все в Google Play, чтобы ваш пользователь загружал только необходимые файлы. APe Armeabi-v7a будет всего около 6 Мб!