Как уменьшить размер библиотеки web-RTC?

Я следовал инструкциям, данным quick blox, как показано ниже: https://quickblox.com/developers/Sample-webrtc-android

dependencies 
{
compile 'com.quickblox:quickblox-android-sdk-videochat-webrtc:3.3.0'
}

Первоначально размер моего apk составляет 9 МБ, но когда я интегрировал видеочат quickblox в свое приложение, размер apk увеличился до 45 МБ из-за следующих платформ различных файлов .so:

>arm64-v8a
>armeabi-v7a
>x86
>x86_64  

libraries - libjingle_peerconnection_so.so

Есть ли способ или предложения по уменьшению размера apk?


person VenSan    schedule 11.03.2017    source источник
comment
любое решение для этого? мне нужно такое же решение   -  person Ranjith Kumar    schedule 14.02.2018
comment
Какие модули webrtc вы используете? Есть ли какой-то конкретный одиночный модуль или несколько модулей? Модули WEBRTC — это основной модуль, модуль пользователей, модуль сообщений, модуль контента, модуль чата и модуль видеочата-webrtc.   -  person Upendra Shah    schedule 21.02.2018


Ответы (2)


Я просмотрел пример кода, предоставленный QuickBlox, и обнаружил, что вы можете сохранить до 10 МБ apk, но вам нужно собрать 4 apk. Вы можете проверить файл gradle

 /*There is code for excluding some native libs (it useful if you need reduce apk size and want
build apk only for specific platform). This method allows you to achieve savings about 10MB
of apk's size (but you need build 4 different apks). */
    packagingOptions {
        exclude '**/armeabi-v7a/libjingle_peerconnection_so.so'
        exclude '**/arm64-v8a/libjingle_peerconnection_so.so'
        exclude '**/x86_64/libjingle_peerconnection_so.so'
        exclude '**/x86/libjingle_peerconnection_so.so'
    }

О нескольких APK

Различные телефоны Android используют разные процессоры, которые, в свою очередь, поддерживают разные наборы инструкций. Каждая комбинация ЦП и наборов инструкций имеет свой собственный двоичный интерфейс приложения или ABI.

  • armeabi-v7a

    arm64-v8a

    x86_64

    x86

Это ABI.

создание 4 apk означало, что вы можете создать apk для этих 4 ABI отдельно. Основная идея состоит в том, чтобы не включать библиотеки, которые не предназначены для конкретного ABI, тем самым уменьшая размер за счет включения только тех библиотек, которые необходимы для этого ABI.

e.g.

splits {
        abi {
            enable true
            reset()
            include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' //select ABIs to build APKs for
            universalApk true //generate an additional APK that contains all the ABIs
        }
    }

Обновлять:

Как загрузить несколько APK в PlayStore?

этот вопрос уже задавался на SO. проверьте этот вопрос

person Sahil Manchanda    schedule 20.02.2018
comment
Это выглядит правильным решением. Можете ли вы дать объяснение о сборке 4 разных apks, я немедленно дам награду. Спасибо за Ваш ответ :) - person Ranjith Kumar; 20.02.2018
comment
@RanjithKumar я добавил объяснение о создании 4 разных apk. пожалуйста, проверьте - person Sahil Manchanda; 20.02.2018
comment
Спасибо за обновленный ответ. Я проверю и предложу награду сегодня вечером. Пожалуйста, дайте мне время, чтобы проверить это - person Ranjith Kumar; 20.02.2018
comment
Я не тестировался. Но я надеюсь, что это работает. Пожалуйста, дайте мне, как загрузить эти 4 разных APK в магазин игр? - person Ranjith Kumar; 21.02.2018
comment
Спасибо за ваши усилия - person Ranjith Kumar; 21.02.2018
comment
Мы можем обойтись опцией разделения, но это снова огромный процесс для поддержки или загрузки 4 apk каждый раз, когда мы отправляем обновление в playstore. Есть ли другой способ, где мы можем использовать какую-то другую библиотеку или какую-то оптимизацию? - person VenSan; 23.02.2018
comment
@VenSan, согласно их образцу кода, кажется единственным способом. Я интегрировал Sinch Video Call в одно из своих приложений, и его размер увеличился примерно на 20 МБ. Если вы можете переключиться, попробуйте Sinch - person Sahil Manchanda; 23.02.2018
comment
@Sahil, можем ли мы сделать такой же процесс разделения для Sinch, чтобы уменьшить размер? - person VenSan; 23.02.2018
comment
@VenSan я не пробовал, но они, похоже, поддерживают это для ios. иметь выглядеть - person Sahil Manchanda; 23.02.2018

Обязательно добавьте эти файлы, если вы хотите добавить возможности видеозвонка или аудиозвонка в свое приложение. С уменьшением размера вашего apk есть много статей об этом, но не слишком много о jnilibs с quickblox.

Google Developer Docs об уменьшении размера

Надеюсь, поможет.

person Norris Boateng    schedule 11.03.2017
comment
Ваш ответ для общего уменьшения размера приложения. Этот вопрос задавался о конкретном размере библиотеки. - person Ranjith Kumar; 19.02.2018