Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня разберемся, как нам установить релизное приложение на iOS 🙂
Для начала нам нужен файл с разрешением
Для сборки через консоль нужно пойти по пути
Для сборки через Xcode из Organizer нажимаем правой кнопкой мыши на архив, выбираем “Show in Finder”, а дальше, как и с архивом из консоли, пока не дойдем до
Обращаю внимание, что устройство должно быть зарегистрировано в App Store Connect на аккаунт, которому принадлежит приложение.
Пишите в чате, использовали такой метод?
Для начала нам нужен файл с разрешением
`.app` или .ipa — для этого собираем iOS привычным способом. Тут все зависит от вас — flutter build ios --release или flutter build ipa, а может даже архивирование через Xcode. Для IPA делать нам уже ничего не надо, а вот для других способов нам нужно достать файл:Для сборки через консоль нужно пойти по пути
/build/ios/archive/Runner.xcarchive, там нажать правой кнопкой мыши и в меню выбрать “Показать содержимое пакета”, файл будет по пути /Products/Applications/Runner.app.Для сборки через Xcode из Organizer нажимаем правой кнопкой мыши на архив, выбираем “Show in Finder”, а дальше, как и с архивом из консоли, пока не дойдем до
Runner.app.
Вся остальная работа проста. Нужно открыть Xcode, пойти по пути Windows -> Devices and Simulators -> Ваше устройство. Там будет графа Installed Apps, куда мы и добавим файл — можно либо перетащить его, либо нажать на плюсик и выбрать из системы. После этого нужно немного подождать завершения установки.Обращаю внимание, что устройство должно быть зарегистрировано в App Store Connect на аккаунт, которому принадлежит приложение.
Пишите в чате, использовали такой метод?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4🔥3👎1
Hola, Amigos! Уже скоро пройдет IT-конференция BOOST. Делимся программой докладов, которая еще будет дополняться 🙂
В этом году будет 7 тематических потоков:
▫️ Управление бизнесом
▫️ Продажи
▫️ Маркетинг и PR
▫️ Управление проектами
▫️ Управление разработкой
▫️ Дизайн и креатив
▫️ Digital-маркетинг
Дополнительно к докладам на конференции вас ждут:
▫️ Мастермайнды и мастер-классы с лидерами отрасли: вы сможете получить ценные знания и навыки, которые помогут вашему агентству выйти на новый уровень.
▫️ Выставка продуктов и решений: ознакомьтесь с новейшими инструментами и технологиями, которые помогут оптимизировать процессы в вашем бизнесе.
▫️ Премьера фильма «Старая Школа».
▫️ Нетворкинг с коллегами по рынку и яркая вечерняя программа.
Регистрируйтесь по ссылке и не забудьте применить наш промокод:AMIGA10 со скидкой 10%
До встречи на BOOST!
В этом году будет 7 тематических потоков:
▫️ Управление бизнесом
▫️ Продажи
▫️ Маркетинг и PR
▫️ Управление проектами
▫️ Управление разработкой
▫️ Дизайн и креатив
▫️ Digital-маркетинг
Дополнительно к докладам на конференции вас ждут:
▫️ Мастермайнды и мастер-классы с лидерами отрасли: вы сможете получить ценные знания и навыки, которые помогут вашему агентству выйти на новый уровень.
▫️ Выставка продуктов и решений: ознакомьтесь с новейшими инструментами и технологиями, которые помогут оптимизировать процессы в вашем бизнесе.
▫️ Премьера фильма «Старая Школа».
▫️ Нетворкинг с коллегами по рынку и яркая вечерняя программа.
Регистрируйтесь по ссылке и не забудьте применить наш промокод:
До встречи на BOOST!
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! Сегодня разберем, как ускорить скролл в ListView с помощью layout hints.
Если ваши элементы списка имеют фиксированную высоту, Flutter может работать быстрее, если вы ему это подскажете. Тогда он не будет тратить время на лишние вычисления.
Вариант 1 — через
Вариант 2 — с
А если хотите убрать лаги при быстром скролле, рассмотрите
Если ваши элементы списка имеют фиксированную высоту, Flutter может работать быстрее, если вы ему это подскажете. Тогда он не будет тратить время на лишние вычисления.
Вариант 1 — через
itemExtent:ListView.builder(
itemCount: items.length,
itemExtent: 72, // фиксированная высота в пикселях
itemBuilder: (_, i) => ItemTile(item: items[i]),
);
Вариант 2 — с
prototypeItem:ListView.builder(
itemCount: items.length,
prototypeItem: const ItemTile(item: sampleItem),
itemBuilder: (_, i) => ItemTile(item: items[i]),
);
А если хотите убрать лаги при быстром скролле, рассмотрите
cacheExtent. И делитесь своим опытом использования подобных фишек в чате!🔥12👏4❤3
Hola, Amigos!
Продолжаем вещать на мероприятиях, и в этот раз встречаемся на Usetech Mobile Meetup 9 сентября. Павел Гершевич, наш Mobile Team Lead, выступит с темой: «Работаем с legacy на Flutter. Короткая и длинная дороги рефакторинга».
Почему это актуально?
Чаще всего разработчики сталкиваются не с написанием нового кода, а с поддержкой старого. Бывает на проекте полностью меняется команда и возникает потребность в рефакторинге. Но как его сделать и быстро, и качественно, чтобы не замедлить разработку продуктовых задач?
Мероприятие пройдет онлайн, поэтому ждем вас в следующий вторник!❤️
🗓 9 сентября, 18:00–20:00 мск
✅ Регистрация на онлайн-мероприятие
Продолжаем вещать на мероприятиях, и в этот раз встречаемся на Usetech Mobile Meetup 9 сентября. Павел Гершевич, наш Mobile Team Lead, выступит с темой: «Работаем с legacy на Flutter. Короткая и длинная дороги рефакторинга».
Почему это актуально?
Чаще всего разработчики сталкиваются не с написанием нового кода, а с поддержкой старого. Бывает на проекте полностью меняется команда и возникает потребность в рефакторинге. Но как его сделать и быстро, и качественно, чтобы не замедлить разработку продуктовых задач?
Мероприятие пройдет онлайн, поэтому ждем вас в следующий вторник!
🗓 9 сентября, 18:00–20:00 мск
✅ Регистрация на онлайн-мероприятие
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥3
Hola, Amigos! Продолжаем сезон осенних выступлений на FlutterConf — первой в России конференции, полностью посвященной разработке на Flutter.
В этот раз Павел Гершевич, наш Flutter Team Lead, выступит с докладом: «Архитектурные ошибки на Flutter. Легко ли переехать с монолита?». В докладе Павел разберет важный аспект многомодульности на Flutter — как перевести уже работающее приложение на многомодульность.
Также Павел поучаствует в круглом столе: «Сильные и слабые стороны AI-driven development и как эта методология влияет на текущий ландшафт разработки?».
📅 Дата: 2-3 октября 2025 года
📍 Место: Санкт-Петербург, ул. Кораблестроителей, 14
Участников ждет 2 потока докладов от профессионалов по 45 минут. В программе:
• Кейсы реальных приложений с интересными требованиями (нагрузка, специфичные требования и т.д.);
• Архитектура Flutter-приложений в контексте проектов;
• Инструментарий, помогающий увеличить производительность/решить задачу, в том числе специфичную;
• Язык и его использование;
• Тренды, направления развития Flutter.
Круглый стол пройдет 2 октября в 16:10 в зале Green 9, а лекция Павла 3 октября в 13:10. Программа лежит по ссылке. Ждем вас!
В этот раз Павел Гершевич, наш Flutter Team Lead, выступит с докладом: «Архитектурные ошибки на Flutter. Легко ли переехать с монолита?». В докладе Павел разберет важный аспект многомодульности на Flutter — как перевести уже работающее приложение на многомодульность.
Также Павел поучаствует в круглом столе: «Сильные и слабые стороны AI-driven development и как эта методология влияет на текущий ландшафт разработки?».
📅 Дата: 2-3 октября 2025 года
📍 Место: Санкт-Петербург, ул. Кораблестроителей, 14
Участников ждет 2 потока докладов от профессионалов по 45 минут. В программе:
• Кейсы реальных приложений с интересными требованиями (нагрузка, специфичные требования и т.д.);
• Архитектура Flutter-приложений в контексте проектов;
• Инструментарий, помогающий увеличить производительность/решить задачу, в том числе специфичную;
• Язык и его использование;
• Тренды, направления развития Flutter.
Круглый стол пройдет 2 октября в 16:10 в зале Green 9, а лекция Павла 3 октября в 13:10. Программа лежит по ссылке. Ждем вас!
👍4🔥4❤2
Hola, Amigos! Уже скоро пройдет IT-конференция BOOST.
Участников ждет 7 потоков от профессионалов в сфере IT. Amiga представят спикеры:
⚙️ Дмитрий Тарасов, CEO с докладом «Как продавать в Middle-сегменте и выигрывать конкуренцию»
Middle-сегмент — сложная ниша: не масс-маркет, но и не премиум. Дмитрий расскажет, почему особенно важно позиционирование, как отстроиться от конкурентов и какие стратегии реально работают.
⚙️ Артем Салеев, CTO, с докладом «AI в помощь CTO: автоматизация процессов, управление знаниями и борьба с неэффективностью»
Вы узнаете, как AI помогает ускорять продажи, держать под контролем процессы, прокачивать команду и влиять на ключевые метрики разработки.
А еще мы подготовили кое-что интересное для всех участников конференции, поэтому будем ждать вас на нашей стойке! Регистрируйтесь по ссылке и не забудьте применить наш промокод:AMIGA10 со скидкой 10%
До встречи на BOOST❤️
Участников ждет 7 потоков от профессионалов в сфере IT. Amiga представят спикеры:
Middle-сегмент — сложная ниша: не масс-маркет, но и не премиум. Дмитрий расскажет, почему особенно важно позиционирование, как отстроиться от конкурентов и какие стратегии реально работают.
Вы узнаете, как AI помогает ускорять продажи, держать под контролем процессы, прокачивать команду и влиять на ключевые метрики разработки.
А еще мы подготовили кое-что интересное для всех участников конференции, поэтому будем ждать вас на нашей стойке! Регистрируйтесь по ссылке и не забудьте применить наш промокод:
До встречи на BOOST❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥2
Hola, Amigos! Вот и прошла IT-конференция BOOST😍 Мы много общались с другими компаниями, выступали с лекциями, делились факапами, веселились на афтепати, гуляли по Сколково и знакомились с крутыми специалистами. Можем смело заявить, что закрыли все галочки в бинго участника конференции.
Показываем в карточках, как прошли для нас эти 2 дня!
Показываем в карточках, как прошли для нас эти 2 дня!
❤5🔥3😍3
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. При настройке диплинков в наше приложение иногда требуется сделать так, чтобы только определенные ссылки вели в приложение и наоборот. В этой небольшой серии постов мы разберем, как поступать в таких ситуациях.
Начнем со случаев, когда переход должен быть только по определенным путям.
Как и для любых других диплинков, настройка будет внутри проекта для Android и в файле
Для Android нужно открыть файл
Такой код позволит нам открывать только страницы, чей URL начинается с https://example.com/sample.
Используйте
Используйте
Если вы только настраиваете диплинки в ваше приложение, то не забудьте подготовить и загрузить на ваш сайт файл
Давайте сделаем то же самое и для iOS. Откроем или создадим файл
Если нужно сделать переход именно на эту страницу:
Если можно позволить переход на любого потомка этой страницы:
И если в пути содержится часть, но мы не знаем ее точного места:
После этого нужно загрузить этот файл на сервер и подождать, пока AASA-Bot заберет его на CDN компании Apple. Обычно это занимает до суток.
Начнем со случаев, когда переход должен быть только по определенным путям.
Как и для любых других диплинков, настройка будет внутри проекта для Android и в файле
apple-app-site-association для iOS.Для Android нужно открыть файл
AndroidManifest.xml вашего проекта и там добавить код (или изменить его, если вы уже настраивали диплинки до этого):<intent-filter android:autoVerify=”true” tools:targetApi=”m”>
<action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT />
<category android:name=”android.intent.category.BROWSABLE />
<data
android:scheme=”https”
android:host=”example.com”
android:pathPrefix=”/sample”
/>
</intent-filter>
Такой код позволит нам открывать только страницы, чей URL начинается с https://example.com/sample.
Используйте
path, чтобы указать только 1 ссылку:<data android:path="/sample" />
Используйте
pathSuffix, если нужно указать только окончание URL:<data android:pathSuffix="ample" />
Если вы только настраиваете диплинки в ваше приложение, то не забудьте подготовить и загрузить на ваш сайт файл
assetlinks.json. Как он выглядит и создается рассказано в этой статье, которую мы переводили для вас.Давайте сделаем то же самое и для iOS. Откроем или создадим файл
apple-app-site-association. Тут нас интересует массив components внутри объекта details. Существует несколько вариантов реализации:Если нужно сделать переход именно на эту страницу:
{
“/”: “/sample”,
“comment”: “Откроет только https://example.com/sample”
}
Если можно позволить переход на любого потомка этой страницы:
{
“/”: “/sample/*”,
“comment”: “Откроет также https://example.com/sample/first”
}
И если в пути содержится часть, но мы не знаем ее точного места:
{
“#”: “ample”,
“comment”: “Откроет также https://example.com/mySample”
}
После этого нужно загрузить этот файл на сервер и подождать, пока AASA-Bot заберет его на CDN компании Apple. Обычно это занимает до суток.
👍5❤4🔥3
Книга — настоящий must-have для тех, кто хочет разобраться во Flutter с нуля или прокачать свои навыки. Авторы — сильнейшие практики из индустрии: Станислав Ильин (Поток), Юрий Петров (Friflex), Станислав Чернышев (СПбГУАП) и наш Павел Гершевич.
— Пошаговое изучение Flutter: от Dart и верстки до сборки проекта, готового к публикации;
— Сквозной проект — Тетрис, который развивается от главы к главе;
— Два лабораторных практикума от Surf и MadBrains;
— Отдельный курс на Stepik с тестами для закрепления материала.
На написание ушло почти полтора года, и результат того стоит: получилась настольная книга по кроссплатформенной разработке, которая объединяет теорию, практику и настоящий опыт разработчиков. Идеальный старт для тех, кто только знакомится с Flutter, и полезный источник инсайтов для опытных разработчиков.
А приобрести книгу можно на официальном сайте издательства и на маркетплейсах: Ozon, Wildberries.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24❤8👏4👍2🥰1