Pull to refresh

Comments 29

Мне кажется, что разговор о переходе на Java 8 — это не только разговор о качестве кода. Это разговор о переходе c устаревшей и плохо поддерживаемой кодовой базы Apache Harmony, разрабатываемой 10 лет назад Intel и IBM на OpenJDK 8 (тыц, тыц) — у которой гораздо более продвинутый и поддерживаемый classlib с кучей перфомансных улучшений и пофикшенных багов.
и переход этот во многом вызван судебной тяжбой с Oracle
«не было бы счастья, да несчастье помогло»
Спорный вопрос, считать ли несчастием ситуацию, в которую Google залез самостоятельно. Слушал вчера выпуск подкаста Triangulation с Джеймсом Гослингом, и там он напрямик говорил, что Google в самом начале создания Android приходил к Sun, и просил дать им лицензию на использование Java на Android-устройствах. Бесплатно. Не смотря на то, что лицензия стоила денег, и разработчики Sun как бы не за идею работали. Им предложили индивидуальную стоимость лицензии, дешевле чем остальным, но и это Google не устроило — хотели получить лицензию бесплатно.
Так что тут скорее «За что боролись — на то и напоролись».
Google тормозит развитие Java и нежелание реализовывать новые стандарты и stdlib языка лишь тому подтверждение. Это смешные оправдания в стиле — есть же другие языки, а Java мы не будем развивать. С такой позицией я полностью на стороне Oracle в судебной тяжбе против Google.
UFO just landed and posted this here
Я думаю есть возможность развивать инструменты и stdlib без обновления версии Android.
К примеру, на Marshmallow обновилось многие флагманы от Samsung, а это огромное количество пользователей.

Может в фин-техе все на флагманах, а в реальности дела иначе http://hwstats.unity3d.com/mobile/device-android.html
Уже 7.5% всех устройств работают на Marshmallow — developer.android.com/about/dashboards/index.html
И хочу заметить, динамика роста доли пользователей Marshmallow гораздо бодрее, чем в своё время у Lollipop'а.
Огромное по количеству человек, но не по процентному соотношению.
Так то понятно, полно еще реальных пользователей и с 2.3. Но это же все не означает, что мы не должны поддерживать и ориентироваться на современные версии ОС и их фишки.
Спасибо, поправил.
Не понимаю как можно менять DPI, это же дюйм на пиксель, пиксели что по мановению палочки раздвинулись?
Почему нельзя ввести понятие базовый размер шрифта, и менять его, почему обязательно
менять информацию о том как в реальности будет выглядеть графика вашего приложения.
Потому что не только шрифт теперь поменяется при смене масштаба, но и вся верстка. Это для слабовидящих гораздо удобнее. Да и для верстки это лучше, чем когда только шрифты, указанные в sp меняются
Кроме аппаратного DPI есть множитель, который отвечает за масштаб приложений. Динамический DPI был на моей памяти достаточно давно реализован в кастомных прошивках Paranoid Android, например — можно было приложения на телефоне застаивть выглядеть как планшетные, с уменьшенным масштабом элементов.
Но на рынке работает много недобросовестных разработчиков, которые активно пользуются ресурсами системы, даже когда их приложение в фоне.

И мы даже знаем имена этих разработчиков.

Самые жадные до батареи: Google Services, Android OS и Maps. На последние у меня уже рефлекс — попользовался, доехал, вышел из навигации, сделал ей force-close. Иначе батарея легко сжирается полностью за пару часов.

Самый жадный до данных — Android OS, намного обошедший всех конкурентов. За прошлый месяц, например, сожрал гиг с лишним траффика — больше, чем все остальные потребители вместе взятые (музыка, подкасты, навигация, почта и т.п). И это при том, что все лишние синхронизации (фото, гуглоплюс и т.п.) отключены.

Есть, есть еще над чем поработать некоторым недобросовестным разработчикам.
«Android OS за прошлый месяц сожрал гиг с лишним траффика — больше, чем все остальные потребители вместе взятые».

Когда я пару лет назад купил своё первое Android-устройство (планшет Asus Fonepad на роль автонавигатора), то поначалу никак не мог понять, почему система не может проверить наличие обновлений прошивки — только бешено мигает кнопкой «Проверить» при наличии подключения к сети. Так как покупал накануне поездки, разбираться не было времени. Во время поездки обратил внимание, что трафик течёт рекой: когда пользовался Яндекс.Картами на Symbian, расходовались копейки, а тут за неделю вышло около 1 гигабайта — при том, что основные карты городов я скачал заранее по Wi-Fi. Но самое смешное, что трафик продолжал утекать, даже когда я вернулся домой. После запуска tcpdump на домашнем маршрутизаторе, стало ясно, что планшет ломится на сайт обновлений по HTTPS, получает отлуп, и тут же повторяет попытку — и так до бесконечности, по несколько раз в секунду. Если не ошибаюсь, причина была в том, что в [более-менее свежей] заводской версии был установлен устаревший SSL-сертификат, и дело решилось заменой сертификата и прочисткой кэша диспетчера загрузок. Но это я сумел вовремя заметить и разобраться, — а менее опытные пользователи так до скончания жизни устройства и будут тратить свой трафик впустую, ведь автоматически обновиться они так никогда не и смогут.
Кстати, это тоже вариант. Надо будет проверить.
Про прожорливость Google Play Services — это самое распространенное заблуждение. Дело в том, что любое сторонее или гугловое приложение, которое использует пуши, локацию, карты, Nearby messages, Analytics и другие гугловые сервисы внутри себя, дергает API Google Play Services. Поскольку у вас на устройствах полно таких приложений, то все их обращения в статистике батареи идут одной графой: Google Services. И с Android OS аналогично. Что у вас с картами, не знаю. У меня обычно 2GIS при сворачивании не перестает слушать локацию и продолжает жрать батарею.

Я не спорю, в Android есть протёки, как например mobile radio active bug. Но не нужно туда приписывать плей сервисы.
Ну вот не надо мне рассказывать, какие гуглосервисы и ось хорошие, а все плохие. Есть много мелких косвенных улик, которые подтверждают, что это именно они виноваты.

Простой пример: гуглоплею в настройках сказано качать обновления только через вайфай. Тем не менее, когда вайфая нет у меня постоянно выскакивают сообщения, что появились обновления каких-то программ. Они не скачиваются, слава богу, но проверяются. Хотя, казалось бы, какой смысл? Пустая трата батареи и траффика.

То же самое с гугломузыкой — примерно раз в неделю где-нибудь в дороге вижу сообщение, что она не смогла синхронизироватся. Хотя в настройках ей сказано делать это только через вайфай, в коллекции уже месяц не было никаких изменений, а плеер не использовался минимум неделю. Куда и зачем оно ломилось — совершенно непонятно.

Еще пример из наболевшего, немного из другой области, но подтверждающий кривизну гугловских программ. Случается регулярно. Еду куда-то, слушаю книжку, попутно включена навигация с голосом. Когда голос что-то говорит, книжка останавливается. Удобно. Включаю вместо книжки гугломузыку. Все работает нормально. Выключаю музыку, включаю снова книжку. И тут начинается цирк. Голос от навигации книжку больше не выключает. Кнопка на гарнитуре книжку останавливает, но обратно запускает, внезапно, музыку. Оказывается. умный гуглоплеер вешается на сообщения о паузах/стартах и не отдает их более активным приложениям пока не убьешь его принудительно, вместе с сервисом. Тогда все снова начинает работать как надо.

Так что не говорите мне, что гугл хороший и правильный. У них много хороших задумок, но реализация часто настолько кривая, что возникает желание бросить все и перейти на другую платформу.
самое интересное там — поддержка нового игрового движка Vulkan

И давно у нас вулкан стал игровым движком?
— Стоит ли ожидать в ближайшее время улучшение поддержки NDK?

Понимаю, что вопрос не по Android N, а по Android Studio, просто наболело.
Лаконичные Android.mk зарыли в землю заменили автогенерацией средствами неуклюжего gradle, при этом «забыли» добавить поддержку внешних модулей и статических библиотек.
Более-менее вменяемая поддержка NDK есть только в экспериментальном плагине, который не совместим с дефолтным, что как бы намекает, что пользователи NDK — это «люди с ограниченными возможностями».

Было бы интересно знать, что об этом думают в особо приближенных к императору кругах.
Вполне совместим. експерементальный плагин также генерит aar. соовтесвенно выносим ndk в отдельный модуль, где используем эксперементальный плагин и подключаем как зависимость к основному, который использует старый плагин.
Нативная часть в Android обычно используется совместно с Java классом.
Логично предположить, что этот класс должен быть реализован в нативном модуле.
Или я ошибаюсь?

Если да, то он почему-то никаким образом не хочет импортироваться в главном модуле.
При этом зависимость от нативного модуля обозначена.
А если реализовать этот класс в отдельном модуле, с классическим плагином, то класс успешно импортируется.

Module: app
apply plugin: 'com.android.application' // Java only
...
dependencies {
compile project(path: ':libn')
compile project(path: ':libj')
...
}

Module:libn
apply plugin: 'com.android.model.library' // Native,Java
...
Module:libj
apply plugin: 'com.android.library' // Java only
...
Java класс реализуется в том же нативном модуле и прекрасно виден в главном модуле.
Если хотите, создайте минимальный пример где не работает и залейте на гитхаб, гляну.
Отвечу на свой вопрос сам
В Android Studio 2.2 preview анонсирована поддержка внешних систем сборки нативного кода: ndk-build и cmake.
Для этого в скрипте gradle необходимо указать путь до CMakeLists.txt, либо Android.mk
Прекрасная новость.
Надеюсь, что будет работать и для «сложных» проектов, состоящих из большого количества библиотек.
мы поговорили с первым в России Google Developer Expert Денисом Неклюдовым

Обидно даже, ведь был такой еще аж в 2013-2014 году при старте программы.

Ну или так и пишите — в категории Android
Справедливо, поправил
Sign up to leave a comment.