Использование ароматов Gradle на vlc-android-sdk

В моем приложении я использую библиотеку "de.mrmaffen:vlc-android-sdk:2.0.6", и она занимает много места, но я не могу найти альтернативу меньшего размера.
Поэтому я решил как CommonsWare упомянул использование разделения или вкусов продукта, но я не могу заставить его работать.
Я безуспешно пытался следовать документации.
Любая помощь приветствуется.


person Zacktamondo    schedule 26.12.2017    source источник
comment
Это довольно простой вопрос. Что вы пробовали? Что вы имеете в виду, вы не можете заставить его работать?   -  person Tim Malseed    schedule 05.01.2018
comment
Как я уже упоминал в вопросе, я безуспешно пытался следовать документам.   -  person Zacktamondo    schedule 07.01.2018
comment
Где ваши примеры следования документам? Каким образом это не работает для вас? Вы не предоставили достаточно информации, чтобы кто-то мог вам помочь. Если вы не добавите эти детали, вы вряд ли найдете ответ, который ищете.   -  person Tim Malseed    schedule 07.01.2018


Ответы (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 в отношении зависимостей, и проверьте это:

  1. git clone репо.
  2. откройте командную строку в этом репо. "cd" или измените каталог на него.
  3. git clone .
  4. измените каталог на каталог vlc-android.
  5. git tag
  6. git checkout <tag_version>. В этом случае 2.1.2.
  7. cd ..
  8. закомментируйте оба compile/build скрипта build.gradle, которые вам не нужны.
  9. ./gradlew buildLibVlc
  10. у вас должна быть успешная сборка как с исходными кодами Java, так и с файлами общих объектов (*.so) в папке jniLibs.
  11. создайте папку 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-фильтры и варианты сборки

Исключить abi из apk

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
person albodelu    schedule 07.01.2018

Вы можете использовать пакет приложений, чтобы вам не приходилось обрабатывать несколько apk. Google Play сделает это за вас автоматически. Кроме того, такой подход может дать дополнительные преимущества. Подробнее: https://developer.android.com/guide/app-bundle

person Mike Makhovyk    schedule 15.06.2019