ch
Feedback
Android разработка

Android разработка

前往频道在 Telegram

все о Android разработке @itchannels_telegram - 🔥 лучшие it каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - ml 📚 @pythonlbooks -📚books

显示更多
4 910
订阅者
+524 小时
+117
-3230
帖子存档
В библиотеку ANGLE, используемую в Chrome и Android, добавлена поддержка Wayland Разработчики Chromium реализовали поддержку протокола Wayland библиотеке ANGLE. Библиотека осуществляет трансляцию вызовов OpenGL ES в графические API OpenGL, Direct3D 9/11 и Vulkan, и применяется в Chrome в качестве бэкенда для WebGL, а в Android для реализации OpenGL ES поверх Vulkan. Упоминается, что изменение позволит реализовать поддержку Wayland во фреймворке CEF (Chromium Embedded Framework), предназначенном для встраивания браузерного движка Chromium в приложения. Среди прочего, отсутствие поддержки Wayland в CEF не позволяет реализовать Wayland-версию клиента Steam. Подробнее: https://opennet.ru/65541/ https://opennet.me/65541/

🖥 Китайский разработчик выложил в открытый доступ целую автомобильную ОС, которая превращает любой Android-смартфон в беспро
🖥 Китайский разработчик выложил в открытый доступ целую автомобильную ОС, которая превращает любой Android-смартфон в беспроводной адаптер CarPlay. Она называется OkcarOS. Это кастомная прошивка Android 13, которая напрямую общается с экраном автомобиля по протоколу CarPlay. → Подключение за 4 секунды → Видео 60 fps, битрейт 25 Мбит/с → Без потерь аудио PCM → Разрешение 1:1 с экраном в автомобиле 100% с открытым исходным кодом. https://github.com/okcar-os/android

+3
Google показала Android 17 - систему, где Gemini встраивают почти в каждый слой Android 17 выглядит не как обычное обновление с новыми иконками, а как попытка превратить смартфон в полноценного AI-ассистента. Что обещают внутри: - ИИ сможет взаимодействовать с приложениями от имени пользователя - система будет собирать автоматизации под конкретные задачи - появятся кастомные AI-виджеты - голосовой ввод научат чистить от пауз, мусора и слов-паразитов - Gemini Intelligence станет частью повседневных сценариев, а не отдельной кнопкой в приложении Одна из самых заметных фич - Screen Reactions. Она позволит одновременно записывать экран и себя, а потом накладывать реакцию поверх видео, комментариев или другого контента. По сути, встроенный инструмент для реактов и коротких роликов без стороннего софта. Отдельно Google анонсировала Googlebook - премиальные компьютеры под ChromeOS и глубокую интеграцию Gemini Intelligence. Похоже, Google больше не продаёт просто Android и ChromeOS. Она собирает экосистему, где ИИ становится стандартным интерфейсом между пользователем, приложениями и устройством.

🔍📱 Doorr: Android интерфейс для поиска с Prowlarr и Jackett Doorr — это мобильное приложение для Android, которое упрощает
🔍📱 Doorr: Android интерфейс для поиска с Prowlarr и Jackett Doorr — это мобильное приложение для Android, которое упрощает поиск контента через Prowlarr и Jackett. Удобный интерфейс и функциональные возможности делают его отличным инструментом для пользователей. 🚀Основные моменты: - Интуитивно понятный интерфейс для поиска - Поддержка Prowlarr и Jackett - Легкий доступ к файлам и настройкам 📌 GitHub: https://github.com/Lifailon/doorr

Tencent ужал переводчик до 440 мегабайт и сделал его умнее Google Translate Китайцы из Tencent выложили в открытый доступ мод
+1
Tencent ужал переводчик до 440 мегабайт и сделал его умнее Google Translate Китайцы из Tencent выложили в открытый доступ модель Hy-MT1.5-1.8B-1.25bit, и это тот случай, когда длинное название скрывает по-настоящему любопытную штуку. Переводчик весит 440 мегабайт, целиком работает офлайн на телефоне, понимает 33 языка и при этом обгоняет Google Translate на стандартных бенчмарках. Главный фокус тут в квантовании. Обычно модель такого размера в FP16 занимает около 3,3 гигабайта, что для смартфона уже многовато. Tencent сжали её до 1,25 бита на вес, и в итоге получили файл в семь с половиной раз меньше оригинала. Что особенно приятно, это не привычная история «сжали и оно начало нести чушь». Точность не просела, а по сравнению с предыдущими подходами на 1,67 бита новая версия ещё и работает примерно на десять процентов быстрее. При своих скромных 1,8 миллиарда параметров модель умудряется тягаться с коммерческими API и даже с гигантами на 235 миллиардов. То есть на стандартных тестах перевода она играет в одной лиге с системами, которые в сотню раз тяжелее и крутятся в дата-центрах, а не у вас в кармане. Покрытие тоже не для галочки. 33 языка, 5 диалектов и 1056 направлений перевода, причём в список попали тибетский и монгольский. Это редкий случай, когда крупный игрок не ограничивается английским, испанским и парой ходовых европейских, а реально вкладывается в малые языки, которые обычно остаются за бортом коммерческих сервисов. В довесок Tencent напоминают, что их переводческий стек уже тридцать раз брал первые места на международных соревнованиях по машинному переводу и стоит внутри продуктов компании. ЭТО боевая технология, которую просто решили отдать наружу. На Hugging Face лежит сама модель, на GitHub код, и есть готовый APK для Android, чтобы потрогать всё руками без танцев со сборкой. Если коротко, то идея «переводчик уровня Google прямо на телефоне без интернета и подписки» из разряда фантастики окончательно переехала в разряд скачал и пользуйся. 📲Demo APK (Android): https://huggingface.co/AngelSlim/Hy-MT1.5-1.8B-1.25bit-GGUF/resolve/main/Hy-MT-demo.apk 🤗Hugging Face:: https://huggingface.co/AngelSlim/Hy-MT1.5-1.8B-1.25bit 🔗GitHub: https://github.com/tencent/AngelSlim 📄Paper: https://arxiv.org/abs/2601.07892

⚡️ CORS в Spring Boot: не лечите это костылями на фронте Если frontend и backend живут на разных доменах или портах, браузер
⚡️ CORS в Spring Boot: не лечите это костылями на фронте Если frontend и backend живут на разных доменах или портах, браузер начнет резать запросы по CORS. Это не баг Spring Boot и не проблема React. Это нормальный механизм безопасности браузера. Правильный способ - настроить CORS на стороне backend. В Spring Boot это можно сделать глобально через WebMvcConfigurer: указать маршруты, разрешенные origins, HTTP-методы, заголовки и работу с credentials. Главное - не ставить бездумно * везде подряд, особенно если используете cookies, токены или allowCredentials(true). В проде лучше явно перечислять доверенные домены, например frontend-домен приложения. Такой подход дает централизованный контроль: вы один раз задаете политику CORS и не размазываете настройки по каждому контроллеру. Для Java backend-разработчика это базовая, но важная вещь: CORS должен быть частью архитектуры API, а не случайной правкой перед деплоем.

🦀 Google затащили Rust туда, где его реально ждали - прямо в cellular baseband у Pixel 10. Не в приложение, не в системный с
🦀 Google затащили Rust туда, где его реально ждали - прямо в cellular baseband у Pixel 10. Не в приложение, не в системный сервис и даже не в очередную утилиту, а в прошивку модема. Это уже совсем другой уровень. Первым шагом заменили DNS-парсер, который раньше был написан на C и регулярно оставался источником memory-safety проблем. Теперь там Rust на базе hickory-proto: bare-metal, no_std, FFI к существующим C-аллокаторам - все по-взрослому. И самое важное тут даже не сам DNS-парсер. Главное, что Google уже протащили Rust в build system baseband. А значит, это не разовая демонстрация, а начало нормальной поэтапной миграции. Вот так и выглядит реальное внедрение Rust в критическую инфраструктуру: без громких лозунгов, но с максимальной пользой. Сначала один опасный компонент, потом еще один, а дальше язык постепенно заходит в самые уязвимые части системы. Для всей индустрии это очень показательный кейс. Rust все чаще идет не в новые игрушечные проекты, а в старые и сложные куски железа, где цена ошибки слишком высокая. security.googleblog.com/2026/04/bringing-rust-to-pixel-baseband.html #Rust #RustLang #MemorySafety #EmbeddedSystems #Android

🔥 Одна аннотация, которая экономит тонны кода в Spring @RestController - это не просто удобство, а скрытая магия, про котору
🔥 Одна аннотация, которая экономит тонны кода в Spring @RestController - это не просто удобство, а скрытая магия, про которую многие забывают. Под капотом это комбинация @Controller + @ResponseBody . То есть тебе не нужно писать @ResponseBody в каждом методе - всё работает автоматически. • Меньше бойлерплейта • чище код • меньше шансов забыть и получить неожиданный результат Кажется мелочью, но на больших проектах это реально экономит время и нервы Если до сих пор используешь @Controller + @ResponseBody вручную - пора упрощать

Два брата запустили стартап на ИИ и делают $3 млн в день Самый быстрый путь к миллионам сейчас - ИИ. Без команды, без офиса,
Два брата запустили стартап на ИИ и делают $3 млн в день Самый быстрый путь к миллионам сейчас - ИИ. Без команды, без офиса, почти без кода руками. Medvi - телемед-сервис для похудения на GLP-1 препаратах. Его собрал Мэттью Галлахер прямо у себя дома в Лос-Анджелесе: $20 000 бюджета и всего 2 месяца на запуск. Дальше - интереснее. Почти всё делают нейросети: ChatGPT, Claude и Grok пишут код, собирают сайт, крутят рекламу и даже отвечают клиентам. Да, иногда ИИ косячит - путает цены, предлагает не то. Но экономика всё равно бьётся. Цифры выглядят как баг в реальности: 300 клиентов в первый месяц $401 млн за первый год прогноз — $1,8 млрд в этом году И самое безумное - в компании до сих пор всего два человека. Похоже, “маленькая команда” больше не ограничение, а новая суперсила. https://www.forbes.com/sites/josipamajic/2026/04/02/ai-and-20000-helped-one-man-build-a-18-billion-telehealth-startup/

Repost from Java
🖥 Маленький, но мощный трюк для продакшена в Spring Boot. Если вы используете Hibernate, добавьте: spring.jpa.hibernate.ddl-
🖥 Маленький, но мощный трюк для продакшена в Spring Boot. Если вы используете Hibernate, добавьте: spring.jpa.hibernate.ddl-auto=validate Что это даёт: - Приложение проверяет, совпадает ли схема БД с entity - Если есть расхождения — сервис не запустится - Никаких случайных изменений структуры в продакшене Идеальный сценарий - использовать вместе с Flyway или Liquibase: spring.jpa.hibernate.ddl-auto=validate spring.flyway.enabled=true Что в итоге: - Все изменения БД — только через migration-скрипты - Fail fast, если схема и код не совпадают - Меньше сюрпризов после деплоя Это один из тех параметров, которые могут спасти продакшен от тихих и очень дорогих ошибок. #SpringBoot #JavaDev

🚀 Spring Boot: отправка email за несколько минут В Spring Boot есть готовое решение для отправки писем - spring-boot-starter
🚀 Spring Boot: отправка email за несколько минут В Spring Boot есть готовое решение для отправки писем - spring-boot-starter-mail. Этот стартер уже включает всю необходимую конфигурацию и зависимости, поэтому вам не нужно вручную настраивать JavaMail или подключать десятки библиотек. Достаточно добавить зависимость, указать SMTP-настройки в application.properties или application.yml, и можно сразу отправлять письма из приложения. Spring Boot автоматически настроит JavaMailSender, а в коде останется лишь создать сообщение и отправить его. Это один из самых простых способов добавить email-уведомления, подтверждения регистрации, сброс пароля или системные алерты в ваше приложение.

<!-- зависимость -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

# application.properties
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=my_email@gmail.com
spring.mail.password=my_password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

@Service
public class MailService {

    @Autowired
    private JavaMailSender mailSender;

    public void sendEmail(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setSubject(subject);
        message.setText(text);
        message.setFrom("your_email@gmail.com");

        mailSender.send(message);
    }
}

🚀 Spring Boot tip: как быстро защитить REST endpoint С Spring Boot + Spring Security можно буквально за пару строк закрыть н
🚀 Spring Boot tip: как быстро защитить REST endpoint С Spring Boot + Spring Security можно буквально за пару строк закрыть нужные маршруты. Допустим, у нас есть контроллер:

@RestController
public class MyController {

    @GetMapping("/admin")
    public String admin() {
        return "Admin panel";
    }
}
Теперь хотим, чтобы /admin был доступен только аутентифицированным пользователям. Добавляем конфигурацию безопасности:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/admin").authenticated()
                .anyRequest().permitAll()
            .and()
            .httpBasic();
    }
}
Разберём, что происходит: • authorizeRequests() - начинаем описывать правила доступа • antMatchers("/admin").authenticated() - для /admin требуется аутентификация • anyRequest().permitAll() - остальные маршруты публичные • httpBasic() - включаем HTTP Basic Auth В итоге: • /admin защищён • всё остальное - открыто • минимум кода, максимум контроля Spring Security выглядит сложно, пока не начинаешь разбирать по шагам. А дальше можно добавлять роли, JWT, OAuth2 и более гибкие политики доступа.

⚓️ Удобный клиент для управления вашим *arr стеком ArrMatey — это современное мобильное приложение для управления несколькими инстансами Sonarr, Radarr и Lidarr. Оно построено на Kotlin Multiplatform с использованием Jetpack Compose для Android и SwiftUI для iOS, предлагая интуитивно понятный интерфейс и мощные функции. 🚀 Основные моменты: - Поддержка нескольких инстансов с быстрой сменой - Управление библиотекой с фильтрацией и сортировкой - Интерактивный поиск и календарь предстоящих релизов - Мониторинг загрузок в реальном времени - Современный интерфейс с динамической темой 📌 GitHub: https://github.com/owenlejeune/ArrMatey #kotlin

📌 Тестировать Spring Boot контроллеры можно без запуска сервера. Аннотация @AutoConfigureMockMvc автоматически настраивает M
📌 Тестировать Spring Boot контроллеры можно без запуска сервера. Аннотация @AutoConfigureMockMvc автоматически настраивает MockMvc в тестовом контексте и позволяет отправлять HTTP-запросы напрямую через Spring.

@SpringBootTest
@AutoConfigureMockMvc
class UserControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    void shouldReturnUser() throws Exception {
        mockMvc.perform(get("/users/1"))
               .andExpect(status().isOk())
               .andExpect(jsonPath("$.id").value(1));
    }
}
Что происходит под капотом: - @SpringBootTest поднимает полный контекст приложения - @AutoConfigureMockMvc настраивает MockMvc - Tomcat не запускается - Запросы проходят через DispatcherServlet внутри приложения Результат: - тесты работают быстрее - нет сетевых накладных расходов - проверяется реальный Spring pipeline Идеальный вариант для быстрых и надёжных controller-тестов.

Китайцы наконец-то импортозамистили Android😂
Китайцы наконец-то импортозамистили Android😂

🚀 Ускоряем Spring Boot без изменения кода Многие приложения тормозят не из-за бизнес-логики, а из-за логирования. Каждый лог
🚀 Ускоряем Spring Boot без изменения кода Многие приложения тормозят не из-за бизнес-логики, а из-за логирования. Каждый лог - это I/O операция. При высокой нагрузке это становится узким местом. Решение - асинхронное логирование через Logback. Что происходит: - сообщения складываются в очередь - отдельный поток обрабатывает их в фоне - основной поток не блокируется - меньше задержек и выше throughput Настройка проста - добавьте logback-spring.xml в: src/main/resources/ Пример конфигурации:

<configuration>

    <!-- Async wrapper -->
    <appender name="ASYNC_CONSOLE"
              class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="CONSOLE"/>
        <queueSize>5000</queueSize>
        <discardingThreshold>0</discardingThreshold>
        <includeCallerData>false</includeCallerData>
    </appender>

    <!-- Console appender -->
    <appender name="CONSOLE"
              class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger - %msg%n
            </pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="ASYNC_CONSOLE"/>
    </root>

</configuration>
Когда это особенно полезно: • high-load сервисы • микросервисы с большим количеством логов • API с высокой RPS • продакшен-окружение ⚠️ Важно: при аварийном завершении часть логов из очереди может потеряться. Для критичных логов используйте файл + async. Маленькая настройка - большой прирост производительности. #SpringBoot #Java #Backend #Performance

⚡️ Spring Boot: полный контроль над HTTP-ответами через ResponseEntity Если нужно управлять не только телом ответа, но и стат
⚡️ Spring Boot: полный контроль над HTTP-ответами через ResponseEntity Если нужно управлять не только телом ответа, но и статусом и заголовками — используйте ResponseEntity. Что это даёт: - Явно задаёте HTTP-статус (200, 404, 201 и т.д.) - Добавляете кастомные заголовки - Возвращаете любой объект в body - Контролируете поведение API на уровне протокола Пример:

@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
    User user = userService.findById(id);

    if (user == null) {
        return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
    }

    return ResponseEntity
            .status(HttpStatus.OK)
            .header("Custom-Header", "UserFound")
            .body(user);
}
• разные статусы для разных сценариев (404, 400, 204) • REST API с чёткой семантикой • добавление headers (pagination, tokens, meta) • возврат пустого ответа без body Совет: Если метод просто возвращает данные - достаточно вернуть объект. Если нужен контроль над HTTP - всегда ResponseEntity. @javatg #SpringBoot #Java #Backend #SoftwareEngineering

💡 Spring Boot лайфхак: ускоряй интеграционные тесты Если тебе нужно тестировать Spring MVC контроллеры, но не хочется подним
💡 Spring Boot лайфхак: ускоряй интеграционные тесты Если тебе нужно тестировать Spring MVC контроллеры, но не хочется поднимать всё приложение — используй @WebMvcTest. Что это даёт - Загружает только MVC-слой, без всего Application Context - Тесты работают значительно быстрее - Можно замокать сервисы через @MockBean - Идеально для проверки контроллеров, статусов и ответов API Когда использовать - Тестируешь REST-контроллеры - Нужно проверить HTTP-ответы - Не нужна база, security, messaging и другие слои Идея простая: Вместо запуска всего приложения → поднимаем только веб-контекст. Меньше зависимостей → быстрее тесты → стабильный CI. Пример

@WebMvcTest(HelloController.class)
class HelloControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private HelloService helloService;

    @Test
    void sayHello_returnsExpectedMessage() throws Exception {
        given(helloService.getMessage()).willReturn("Hello!");

        mockMvc.perform(get("/api/hello"))
               .andExpect(status().isOk())
               .andExpect(content().string("Hello!"));
    }
}
Если тестируешь только контроллер — не поднимай всё приложение. WebMvcTest экономит секунды на каждом тесте и минуты в CI.

🚀 Spring Boot трюк, который спасает продакшен Если ваш сервис обращается к внешним API — рано или поздно они начнут падать,
🚀 Spring Boot трюк, который спасает продакшен Если ваш сервис обращается к внешним API — рано или поздно они начнут падать, тормозить или отдавать ошибки. Вместо ручной логики повторов используйте @Retryable. Что это даёт: - Автоматические повторные запросы при ошибках - Настраиваемое количество попыток - Exponential backoff (увеличение задержки между попытками) - Fallback-логика через @Recover, если всё окончательно сломалось Когда это нужно: - Платёжные шлюзы - Внешние API - Микросервисы - Любые нестабильные сети Главная идея: Не падай из-за временных ошибок - попробуй ещё раз. Такая мелочь может значительно повысить стабильность системы без сложного кода.