В моем приложении я использую библиотеку "de.mrmaffen:vlc-android-sdk:2.0.6"
, и она занимает много места, но я не могу найти альтернативу меньшего размера.
Поэтому я решил как CommonsWare упомянул использование разделения или вкусов продукта, но я не могу заставить его работать.
Я безуспешно пытался следовать документации.
Любая помощь приветствуется.
Использование ароматов Gradle на vlc-android-sdk
Ответы (2)
Самостоятельное создание Android SDK LibVLC
Если вы используете "de.mrmaffen:vlc-android-sdk:2.0.6"
, соберите Android SDK LibVLC самостоятельно
Как объяснено ./gradlew buildLibVlc
Создание конкретной версии Android SDK LibVLC
cd vlc-android // if this folder doesn't exist yet, simply run ./gradlew cloneVlcAndroid
git tag // to list all release versions
git checkout {tag-name} // to checkout the git repo at the given tag
cd ..
./gradlew buildLibVlc // build it
Убедитесь, что вы следовали инструкциям по компиляции Android в отношении зависимостей, и проверьте это:
git clone
репо.- откройте командную строку в этом репо. "cd" или измените каталог на него.
git clone .
- измените каталог на каталог vlc-android.
git tag
git checkout <tag_version>
. В этом случае 2.1.2.cd ..
- закомментируйте оба
compile/build
скриптаbuild.gradle
, которые вам не нужны../gradlew buildLibVlc
- у вас должна быть успешная сборка как с исходными кодами Java, так и с файлами общих объектов (*.so) в папке
jniLibs
.- создайте папку
libs
рядом с папкойjniLibs
, если вы обновили версию gradle.
Получить через Maven CentralJCenter
Просто добавьте эту зависимость в свой проект, и все готово.
dependencies {
implementation 'de.mrmaffen:libvlc-android:2.1.12@aar'
}
Я использую эту версию. Не забудьте добавить JCenter в файл build.gradle
вашего проекта:
allprojects {
repositories {
jcenter()
}
}
VLC Android SDK через JCenter поддерживает следующие ABI: armeabi-v7a, arm64-v8a, x86 и x86_64.
Вы можете отфильтровать определенные ABI в файле build.gradle
вашего приложения (за исключением x86_64 и arm64-v8a):
android {
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
Можно проверить включенные файлы в mrmaffen. репозиторий и последние версии Android Studio:
Настроить несколько APK для ABI
Добавьте блок abi внутри вашего разделяет блок. В блоке abi укажите список желаемых ABI. Источник
android {
...
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 and armeabi-v7a.
// 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"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
universalApk false
}
}
}
Создать несколько APK
Нажмите Build > Build APK, чтобы собрать все APK для текущего выбранного модуля на панели Project.
Gradle создает APK для каждого ABI в каталоге проекта
build/outputs/apk/
.
Настроить варианты сборки
Эта страница основана на Настройте обзор сборки, чтобы показать вам, как вы можете настроить варианты сборки для создания разных версий вашего приложения.
Комбинируйте abi-фильтры и варианты сборки
android { productFlavors { x86 { ndk { abiFilter "x86" } } arm { ndk { abiFilters "armeabi-v7a", "armeabi" } } } }
Несколько APK через ABI и разделение по плотности
Как уменьшить количество APK-файлов с разделением ABI
Здесь фрагмент кода, который можно использовать для установки кодов версий для разбиений ABI.
Дайте x86_64 и x86 более высокие номера версий, чем ARM, так как многие устройства x86 могут запускать код ARM через уровень эмуляции, хотя и с более низкой производительностью.
Если вы не хотите управлять слишком большим количеством APK, нацельтесь на самые популярные (обычно ARM и, возможно, x86) с помощью разделенного APK и предоставьте универсальный APK всем остальным.
Крайне важно, чтобы вы опубликовали универсальный APK в Play Store с более низким номером версии, чем у всех других пакетов, специфичных для ABI.
Если вам нужна дополнительная гибкость для настройки нескольких APK, ознакомьтесь с Мульти-APK через вкусы продукта.
Рекомендуемая публикация на Medium для выбора поддерживаемых ABI
В этом посте мы разберемся, что такое ABI, проблемы с разделением ABI и альтернативный способ избежать этих проблем... Например, Android поддерживает следующие ABI:
mips, mips64, X86, X86–64, arm64-v8a, armeabi, armeabi-v7a
Таким образом, вы должны принять вызов о поддержке 64-битных библиотек на основе критериев размера и производительности, но mips, mips-64 и armeabi должны быть удалены без каких-либо колебаний.
Решение проблемы UnsatisfiedLinkError на некоторых устройствах
Как описано здесь, 64-разрядные процессоры сгенерируйте и проверьте папку arm64 для загрузки собственных библиотек.
Если в вашем проекте нет папки arm64. Вот решение:
build.gradle
defaultConfig {
...
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
Вам нужно добавить эти фильтры (abiFilters) в файлы build.gradle вашего модуля приложения. Поэтому, когда ваше устройство попытается запустить ваше приложение, оно проверит файл градиента и поймет, что оно не должно создавать какую-либо папку и использовать существующие ресурсы собственной библиотеки. Бум. Почти решен. Но все же есть еще одна вещь. Добавьте эту строку в свой gradle.properties, чтобы использовать устаревший Ndk.
gradle.properties
android.useDeprecatedNdk=true
Вы можете использовать пакет приложений, чтобы вам не приходилось обрабатывать несколько apk. Google Play сделает это за вас автоматически. Кроме того, такой подход может дать дополнительные преимущества. Подробнее: https://developer.android.com/guide/app-bundle