Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
ruslan13
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 42
1

Идеология com.android.support:appcompat

17.01.2017, 11:03. Просмотров 304. Ответов 9
Метки нет (Все метки)

Немного не ясно назначение данной библиотеки.
Насколько я понимаю, она нужна, чтобы новые прикольные графические фичи работали на андроидах со старым API.
Хорошо, собираю свой APK; minSDK API 15, targetSDK 25
Размер файла 2 Мб получается.
Собираю при minSDK API 25, targetSDK 25 - те же 2 Мб
Внутри в classes.dex лежит полный com.android.support, хотя я его не подключал во второй раз в build.gradle
По идее, данная библиотека не нужна на API 25.
Она же только для старых систем.
Или не так?

п.с. Моя цель была сделать APK небольшого размера для последних API
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2017, 11:03
Ответы с готовыми решениями:

Android.support.v4.app.FragmentActivity не работает в Android Studio
объясните пожалуйста,как в андроид студио добавить вышеуказанную библиотеку,чтобы работало у меня...

Android.support.v7
Народ, помогите пожалуйста. Интелиж не видит android.support.v7.app.ActionBarActivity хотя в ...

Android-support-v7 ошибка
Добрый вечер, устанавливал google maps API для проекта. и случайно видимо обновился support ...

Android.support.v7.widget.GridLayout
Друзья, помогите пожалуйста! Никак не получается включить GridLayout в макет из библиотеки...

Android-support-v4 и настройка Eclips
Перенес проект с дом. компа на рабочий, все работало нормально до определенного момента (видимо...

9
demixdn
312 / 256 / 80
Регистрация: 31.10.2016
Сообщений: 619
17.01.2017, 12:11 2
ruslan13, вам тогда нужно свои Activity наследовать от Activity, для темы приложения родительской указать
XML
1
parent="android:Theme.Material.Light.DarkActionBar"
а аттрибуты в теме писать через префикс "android:"
XML
1
<item name="android:colorPrimary">@color/colorPrimary</item>
И естественно удалить все упоминания support в ваших dependencies.
тогда приложение с пустым MainActivity будет занимать 34 кб.
1
ruslan13
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 42
17.01.2017, 13:26  [ТС] 3
То есть, если указывать везде com.android.support, то во всех API приложение будет выглядеть по-модному, а если использовать стандартные пакеты, то в в последних API приложение будет по-модному, а в старых - по-старому?
И если я делаю несколько вариантов сборки, то мне по-любому придется иметь несколько наборов исходников (flavors?)
0
demixdn
312 / 256 / 80
Регистрация: 31.10.2016
Сообщений: 619
17.01.2017, 13:44 4
ruslan13, если есть отличия в коде, то их разрешают через проверку параметра
Java
1
android.os.Build.VERSION.SDK_INT
. Прямо целые блоки кода или функции проверяются. Или делаются интерфейсы, а реализация подсовывается в зависимости от версии андроида.
А темы раскидываются по папкам values-v13, values-v21, values-v23.
flavors излишни тут.

Добавлено через 3 минуты
То есть, если указывать везде com.android.support, то во всех API приложение будет выглядеть по-модному, а если использовать стандартные пакеты, то в в последних API приложение будет по-модному, а в старых - по-старому?
Да, так и будет. На 4+ это будет Holo, на 5+ это будет Material. На 2.3+ вообще будет ужасно.
Да, соответственно и эффекты нажатия кнопок нужны будут разные (тоже по папкам раскидывать) и анимации. И много чего нужно будет предусмотреть.

Добавлено через 5 минут
хотя да, придется flavors делать, как по другому разделить apk файлы я не вижу способа. И в них указывать minSdkVersion и targetSdkVersion
0
17.01.2017, 13:44
ruslan13
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 42
17.01.2017, 14:47  [ТС] 5
А как быть с NavigationDrawer, к примеру? Ключевой элемент приложения, между прочим.
Он только в support библиотеках есть.
0
demixdn
312 / 256 / 80
Регистрация: 31.10.2016
Сообщений: 619
17.01.2017, 15:11 6
Цитата Сообщение от ruslan13 Посмотреть сообщение
А как быть с NavigationDrawer, к примеру?
Никак, аналога ему нет. Тогда для уменьшения apk используйте ProGuard. Посмотрите, прочитайте что это и как использовать.
1
ruslan13
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 42
17.01.2017, 15:25  [ТС] 7
Спасибо, у меня указаны эти настройки. Но все равно в итоговом classes.dex библиотеки support'a занимают 85% объема.
Google'у всегда было наплевать на оптимизацию и эффективность...
0
Pablito
2863 / 2275 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
17.01.2017, 15:31 8
сделай лучше
0
demixdn
312 / 256 / 80
Регистрация: 31.10.2016
Сообщений: 619
17.01.2017, 15:41 9
ruslan13, ProGuard режет все ненужные классы, оставляя только те, на которые вы ссылаетесь в проекте или ссылаются подключенные компоненты. Если они есть в проекте с включенным ProGuard, значит они используются.
А если хотите уменьшить вес, избавляйтесь от них и заменяйте чем-то другим, стандартным либо самописным.
0
ruslan13
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 42
17.01.2017, 16:47  [ТС] 10
Лучше?
Сразу после выхода support-v4 добавить NavigationDrawer в стандартный android API - кто мешал? У меня 55% пользователей Android 5.0+, им я бы уже легкую версию раздавал.
А чтобы не было всего геморроя c прямой и обратной совместимостью в коде использовать всегда классы из стандартного API, а в манифесте приложения и при сборке указывать для какого API должны использоваться стандартные классы, для какого - support.
Что это, сложно реализовать? Всяко лучше чем мегабайтные библиотеки с собой таскать повсюду. Половина моих пользователей на хромом EDGE сидят (сельская местность), им апдейтиться раз в две недели по 2 мегабайта довольно некомфортно.

Добавлено через 5 минут
Цитата Сообщение от demixdn Посмотреть сообщение
ruslan13, ProGuard режет все ненужные классы, оставляя только те, на которые вы ссылаетесь в проекте или ссылаются подключенные компоненты. Если они есть в проекте с включенным ProGuard, значит они используются.
А если хотите уменьшить вес, избавляйтесь от них и заменяйте чем-то другим, стандартным либо самописным.
demixdn, попробую убрать весь support, что смогу, и замерю работу прогарда. О результатах отпишусь.

Добавлено через 59 минут
Отписываюсь.
Один NavigationDrawer тащит за собой 90Кб кода из support'a. Другие "незаменимые" элементы пока не тестировал.
В принципе, есть за что побороться..
0
17.01.2017, 16:47
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2017, 16:47

Для чего нужен android.support.v4
Вопрос к знатокам: почему AS по умолчанию импортирует в проект классы из библиотеки поддержки?...

Как подключить com.android.support:design в Eclipse
Доброго дня! Недавно вышла новая библиотека com.android.support:design - вопрос как её подключить...

Ошибки рендеринга после установки android-support v4
Всем привет! Случилась непонятная фигня, решил адаптировать свое приложение под устройства с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.