Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в
Уже ничего здесь не размещаю кроме своих любимых ошибок во Flutter. Итак встречаем новую)))
flutter: Caught Framework error
flutter: ══╡ EXCEPTION CAUGHT BY FLUTTER FRAMEWORK ╞═════════════════════════════════════════════════════════
flutter: The following assertion was thrown:
flutter: This widget has been unmounted, so the State no longer has a context (and should be considered
flutter: defunct).
flutter: Consider canceling any active work during "dispose" or using the "mounted" getter to determine if
flutter: the State is still active.
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
Решается простым оборачиванием вашего говна, которое вызываясь падает в эксепшен в if (mounted) {}
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в
Без длинных описаний перейду сразу к делу, если столкнулся с такой же ошибкой, то подмешай к целевому классу PreferredSizeWidget и заоверрайдь его метод:
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в
Снова Flutter. Ни с того ни с сего при запуске разрабатываемого приложения в эмуляторе стала вылетать такая ошибка.
Performing Streamed Install
adb: failed to install /Users/alexander/projects/cportal_flutter/build/app/outputs/flutter-apk/app.apk:
Exception occurred while executing 'install':
android.os.ParcelableException: java.io.IOException: Requested internal only, but not enough space
at android.util.ExceptionUtils.wrap(ExceptionUtils.java:34)
at com.android.server.pm.PackageInstallerService.createSession(PackageInstallerService.java:557)
at com.android.server.pm.PackageManagerShellCommand.doCreateSession(PackageManagerShellCommand.java:3143)
at com.android.server.pm.PackageManagerShellCommand.doRunInstall(PackageManagerShellCommand.java:1341)
at com.android.server.pm.PackageManagerShellCommand.runInstall(PackageManagerShellCommand.java:1303)
at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:193)
at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
at android.os.ShellCommand.exec(ShellCommand.java:38)
at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:24742)
at android.os.Binder.shellCommand(Binder.java:950)
at and
Error launching application on sdk gphone64 arm64.
Решилось простыми действиями:
Открываем в андроид студии AVD Manager и делаем Wipe Data
После чего в терминале выполняем:
flutter clean
flutter pub get
P.S. Проблема носила регулярный характер, и приходилось почти каждый запуск эмулятора производить действия выше. Решением оказалось создать новый эмулятор и выделить под него 4000 мегабайт оперативной памяти
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в
Ни для кого не секрет, что я в своей профессиональной деятельности использую в основном продукты «яблочной» промышленности. Помимо выше озвученного факта, основной средой разработки для меня является великолепный Фреймворк Flutter, в своей жизнедеятельности эксплуатирующий не менее великолепный язык программирования Dart.
Ну вот как бы два никому на хрен ненужных факта, и что дальше, спросишь меня ты. А то, что я задался вопросом, почему бы у себя в MacOS не мочь при нажатии в Finder на пробел отображать предпросмотр dart файлов. Ведь нередко случается, что ищешь какие то либы, импорты или самописные функции в проекте, чтобы применить, где-то в другом месте и открывать весь проект в IDE каждый раз становится несколько муторно. Ведь любая IDE начинает сканировать, чекать зависимости, проверять линтером и т.д., что несколько тратит времени и изрядно раздражает.
И я нашел способ делать предпросмотр dart(и не только) файлов по нажатию пробела в Finder. Далее расскажу как этого добиться.
В finder жамкаем Cmd + Shift + G и вставляем ~/Library/Quicklook и нажимаем Enter, ето перенесет нас в соответствующую директорию. Если finder ругнется, что такой директории нет, то создаём её (Если не в силах создать её, то признаёмся себе в слабоумии и отказываемся от этой тщетной затеи).
Закидываем в эту директорию скачанный в 1 пункте файл QLColorCode.qlgenerator.
Далее берем любой свой уже созданный dart файл, и прописываем в терминале его путь с такой командой:
mdls -name kMDItemContentType ~/main.dart
5. Терминал должен ответить чем-то таким(хз будет ли у вас точно такая же кодировка, проверьте на всякий случай):
kMDItemContentType = «dyn.ah62d4rv4ge80k2pwsu»
6. Копируем только ту часть, что находится в кавычках, то есть dyn.ah62d4rv4ge80k2pwsu.
7. Вводим в терминале: open ~/Library/QuickLook/QLColorCode.qlgenerator/Contents/Info.plist Если установлен Xcode то откроется им, если не установлен то хз чем вы там будете править его, с Xcode оченьно это удобно делать.
8. Погружаемся вглубь открытого в Xcode документа по пути Property List > Document types > Item 0 > Document Content Type Identifiers, после чего жамкаем плюсик на добавление нового элемента в список, как на скриншоте ниже.
И вставляем ету самую часть из кавычек из пункта 5 dyn.ah62d4rv4ge80k2pwsu должно получиться как на скриншоте выше под пунктом Item 0. После чего сохраняем файл.
9. Далее в терминале вводим команду: qlmanage -r И всё, можете проверять работоспособность.
ПЫ.СЫ. : Ежели qlmanage -r ругается на то, что не знает такой команды, то через brew устанавливаем старую версию сего файла brew install qlcolorcode, после чего по пути ~/Library/Quicklook заменяем файл на скачанный в первом пункте и проделываем с ним все последующие манипуляции.
Если же и там будет ругаться что дескать данный файл поврежден обратитесь к администратору системы то в терминале уже бахните:
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в
И снова Flutter! Нет-нет, я не умаляю достоинств этого потрясающего фреймворка. Он, на мой взгляд, реально на сегодняшний день лучшее решение, как минимум для кросплатформенной мобильной разработки, но как говорится и «на старуху бывает проруха», в общем всё равно буду плакать но продолжать грызть кактус))).
Что-то, как-то незаметно пилил в проекте и вдруг при очередном запуске Flutter выдал вот такое:
Launching lib/main.dart on sdk gphone64 arm64 in debug mode...
Running Gradle task 'assembleDebug'...
../../flutter/.pub-cache/hosted/pub.dartlang.org/get_it-7.2.0/lib/get_it_impl.dart:185:7: Error: Expected an identifier, but got ','.
Try inserting an identifier before ','.
,rethrow;
^
../../flutter/.pub-cache/hosted/pub.dartlang.org/get_it-7.2.0/lib/get_it_impl.dart:185:7: Error: Expected ';' after this.
,rethrow;
^
../../flutter/.pub-cache/hosted/pub.dartlang.org/get_it-7.2.0/lib/get_it_impl.dart:185:7: Error: Unexpected token ','.
,rethrow;
^
FAILURE: Build failed with an exception.
* Where:
Script '/Users/alexander/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 1005
* What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.
> Process 'command '/Users/alexander/flutter/bin/flutter'' finished with non-zero exit value 1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 22s
Exception: Gradle task assembleDebug failed with exit code 1
Промучавшись сутки с этой бедой, решил банальной пересборкой кеша:
flutter pub cache repair
Надеюсь это кому то сэкономит сутки жизни, берегите себя)
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в
Очередная заруба с эмулятором под маком. На этот раз в обновленной версии android studio уже появились образы под архитектуру arm64-v8a, решил перейти на встроенное решение вместо описанного здесь.
Но не тут то было. После стандартной успешной установки через AVD manager эмулятор великолепно, почти мгновенно стартует, чем не может не радовать, но в интерфейсе android studio, ровно как и в Visual Studio Code пишет что не выбрано устройство и невозможно подключиться к эмулятору.
Первое действие которое необходимо выполнить это внести в твой .bashrc или .zshrc (в зависимости от того каким шеллом ты пользуешься) строку указывающую путь к твоим platform-tools(предварительно проверь в SDK manager в Android Studio стоит ли галочка на Android SDK Platform-Tools скин прилагаю)
Проверил? Теперь иди в Finder, ищи в своей домашней папке папку Библиотеки или Libraries если ты работаешь в английском интерфейсе MacOS. Если не можешь там найти её значит она в скрытых файлах, включи в finder отображение скрытых файлов(В английской раскладке нажми комбинацию клавишь Cmd+Shift+.)
Включил? Нашёл папку библиотеки? Красавчег! В папке библиотеки открывай Android/SDK/platform-tools и смотри. Дело в том, что в моём случае затык был в том, что в этой папке была ещё одна папка platform-tools в которой собственно все эти тулзы и лежали. Из неё копируем все файлы в родительскую папку platform-tools(так как именно к ней обращается эмулятор в поисках adb). После чего я прописал в конфиг .zshrc строку
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в
Обожаю flutter. Нет, правда это лучший, на мой скромный взгляд, мультиплатформенный фреймворк. С помощью которого можно написать нативное приложение с гуём под любую платформу. И вот пилю я значится как всегда приложение и ничего не предвещало беды. На одном из этапов потребовалось, значится, добавить картиночку локально в приложение.
Прописал я как положено изображение в файле pubspec.yaml со всеми yaml подобающими отступами в виде табов:
и понять не понимаю какого буя приложение постоянно в эксепшн выпадает с такой вот ошибкой:
════════ Exception caught by image resource service ════════════════════════════
The following assertion was thrown resolving an image codec:
Unable to load asset: /assets/img/logo.png
When the exception was thrown, this was the stack
#0 PlatformAssetBundle.load
package:flutter/…/services/asset_bundle.dart:224
<asynchronous suspension>
#1 AssetBundleImageProvider._loadAsync
package:flutter/…/painting/image_provider.dart:675
<asynchronous suspension>
Image provider: AssetImage(bundle: null, name: "/assets/img/logo.png")
Image key: AssetBundleImageKey(bundle: PlatformAssetBundle#9dc2c(), name: "/assets/img/logo.png", scale: 1.0)
════════════════════════════════════════════════════════════════════════════════
════════ Exception caught by image resource service ════════════════════════════
Unable to load asset: /assets/images/logo.png
════════════════════════════════════════════════════════════════════════════════
Час мучаний и гуглопоиска ни к чему хорошему не привёл. Я уже было начал подумывать, что всему виной обновление Flutter до последней, на текущий момент, версии:
Оказалось всё так глупо и прозаично, что решил в назидание таким же затупкам как и я оставить сей топик-высер. Итак внимание, барабанная дробь…
Оказывается не надо в виджете перед assets ставить слеш. <FACEPALM>. Да-да, я там фиганул слеш и потратил уйму времени на поиски решения, посыпаю голову пеплом, не будь таким как я. Делай так:
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в
Для того чтобы подключиться к докер контейнеру по ssh нам собственно критически необходим ентот самый докер контейнер посему, самым первым нашим шагом для подключения по ssh к докер контейнеру будет, как ни странно создание ентого чуда- юда.
Сделать это нехитрое действо крайне просто, для этого открываем терминал, я так полагаю, что docker у вас уже инсталлирован, и вводим в терминале до боли простенькую комманду, и да, для самых ленивых все команды я воткну в описание к этому видео.
docker run --rm -ti -p 52022:22 ubuntu
rm – говорит о том что после выхода из контейнера контейнер будет удалён t говорит о том что при создании докер контейнера будет создан псведо tty i это ключик interactive говорит о том что процесс стандартного ввода линукс будет открытым даже когда не используется
После ввода команды мы попадаем в ubuntu
Итак мы в терминале голой убунты, вводим команду на обновление репозиториев, склеиваем её с командой установки openssh сервера, и для последующего редактирования ssh конфига устанавливаем свой любимый консольный графический редактор, мне последнее время нравится micro вы ставьте что более удобно для вас nano vim или ещё какая-нибудь дичь.
Отвечаем на пару вопросов о вашем локальном местоположении, после этого задаем пароль root пользователю, который в последствии будем вводить при ssh подключении. Для этого забиваем в терминале простеньку команду
passwd
после чего правим конфиг вновь установленного ssh сервера командой
micro /etc/ssh/sshd_config
(Понятное дело, что вместо micro вводите ваш текстовый редактор)
Находим строку PermitRootLogin, раскомментируем и в ней прописываем yes.
Сохраняем и закрываем файл, запускаем ssh сервер
/etc/init.d/ssh start
Поздравляю, теперь если всё сделано правильно вы можете подключиться к этому контейнеру по ssh, проверяем.
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в
Шёл 2021 год, а я всё никак не хотел запоминать эти простые действия, ну что же, как обычно запишу сюда микромануал чтобы не гуглить больше.
Итак, стоит задача чуть-чуть засекурить вновь арендованный сервер, а именно создать нового пользователя, настроить ему логин по ssh ключу, отключить доступ по паролю и отключить аутентификацию от root пользователя.
Да сотворю я пользователя нового и добавлю его в группу админску, дабы умел он пользоваться всеми благами sudo:
adduser manjarqo
вводим дважды пароль никому не ведаемый, дабы супостат не смог прознать тайны заветной(ясно-понятно вместо manjarqo имя своего юзера). Потом добавляем ему sudo привелегии:
usermod -aG sudo manjarqo
2. На локальной машине если ещё не создан ssh ключ то генерим:
ssh-keygen -t rsa
Если уже есть то сразу выполняем:
ssh-copy-id manjarqo@232.321.212.321
Вводим пароль, который задали при создании пользователя, после чего проверяем появился ли доступ по ключу:
ssh manjarqo@232.321.212.321
Если залогинился то переходим к следующему пункту, если не залогинился, то разбирайтесь что пошло ни так и потом переходите к следующему пункту.
3. После входа на сервер по ключу от нового пользователя открываем для редактирования ssh конфиг и чуть-чуть его правим:
sudo nano /etc/ssh/sshd_config
В нём приводим строку к виду PasswordAuthentication no, предварительно раскомментировав если закоментирована и строку к виду PermitRootLogin no, так же раскомментировав, после чего перезапускаем службу ssh командой:
sudo service ssh restart
Если всё прошло хорошо, то под root пользователем больше не зайти, что сразу же обломит тех кто непрерывно брутфорсит наш сервак и вообще вход возможен только человеку у которого в папке ~/ssh лежит именно ваш ключик, так что берегите его. Всем добра!
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в
Возникла необходимость перегнать dvd диск в нормальный формат, скопировал целиком файлы с диска на мак, стал искать и нашел кучу платных решений, оказалось что есть великолепный инструмент Handbrake. По ссылке на офсайте есть версия и для M1 Apple Silicon. Работает великолепно.
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в