-
Постов
235 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Активность репутации
-
Камышев Александр получил реакцию от AngryOwl в Failed to load libssl.so
что ж теперь не пользоваться indy? ssl и в других проектах пригодится, вот тут про сборку https://habrahabr.ru/company/intel/blog/271013/
Библиотеки OpenSSL
Рассмотрим сборку библиотек OpenSSL для Android-устройств, построенных на базе архитектуры x86.
Предварительная подготовка
Для дальнейшей работы нам понадобится следующее.
Главный компьютер, работающий под управлением ОС Windows 7 или более поздней.
Так как библиотеки OpenSSL написаны на чистом C, для сборки будет достаточно Android NDK, в который встроена поддержка для кросс-компиляции библиотек для заданных платформ (ARM, x86 и других).
Исходный код библиотек OpenSSL для Android можно загрузить из репозиториев eighthave или guardianproject.
Сборка для платформы x86
Выбрать целевую платформу сборки можно так же, как и для любого другого Android-приложения, используя установки Application Binary Interface (ABI). В нашем случае в файле jni/Application.mk должно присутствовать следующее:
APP_ABI := x86
Итак, после того, как NDK загружен и установлен, исходный код Android OpenSSL так же загружен и размещён в локальной папке (например, в C:\openssl-android-master), для сборки библиотек нужно будет сделать следующее.
Откройте окно командной строки (cmd.exe). Перейдите в папку, где расположены файлы OpenSSL для Android. Например, такой командой:
Не забудьте указать для сборки целевую платформу x86:
APP_ABI := x86
Выполните команду NDK для запуска сборки:
C:\openssl-android-master > ndk-build
После её успешного завершения будут созданы OpenSSL-библиотеки libssl и libcrypto, расположенные, в нашем случае, здесь:
C:\openssl-android-master\libs\x86\libcrypto.so C:\openssl-android-master\libs\x86\libssl.so -
Камышев Александр получил реакцию от Rusland в Функция нечеткого сравнения строк
в Berlin FMX нет AnsiString? да как так то, не может быть, в Seattle же есть...
со строками есть момент такой, сразу код, так понятней:
host = url; int pos = host.AnsiPos( "://" ); #ifdef WIN32 if ( pos ) host.Delete( 1, pos + 2 ); #endif #ifdef __ANDROID__ if ( pos ) host.Delete( 0, pos + 2 ); #endif в общем начало строки с 1 либо с 0
-
Камышев Александр получил реакцию от AngryOwl в Failed to load libssl.so
По всему не установлены SDK Intel x86, соответственно проблема не в них.
Анекдот. При головных болях Врач пациенту: бросай курить, Пациент: я не курю, Врач: попробуй закурить.
1. поискать libssl под х86, пишут что они где-то уже есть в системе у GT.
2. попробовать обновить библиотеки SDK для x86, т.е. если нельзя удалить х86 то надо их поставить
применить метод научного тыка
-
Камышев Александр получил реакцию от Brovin Yaroslav в Какую БД лучше использовать для хранения большога кол-ва аудиозаписей?
Хранить в реляционной БД медиафайлы тоже ни разу не идеально, скорее жуткий моветон.
Если качать с сервера файлы не алё, то вот здесь обсуждался вариант с менеджером ресурсов http://fire-monkey.ru/topic/31-vklyuchenie-svoih-faylov-v-prilozhenie/?do=findComment&comment=83
-
Камышев Александр получил реакцию от Andrey Efimov в Какую БД лучше использовать для хранения большога кол-ва аудиозаписей?
Хранить в реляционной БД медиафайлы тоже ни разу не идеально, скорее жуткий моветон.
Если качать с сервера файлы не алё, то вот здесь обсуждался вариант с менеджером ресурсов http://fire-monkey.ru/topic/31-vklyuchenie-svoih-faylov-v-prilozhenie/?do=findComment&comment=83
-
Камышев Александр получил реакцию от Равиль Зарипов (ZuBy) в Какую БД лучше использовать для хранения большога кол-ва аудиозаписей?
Хранить в реляционной БД медиафайлы тоже ни разу не идеально, скорее жуткий моветон.
Если качать с сервера файлы не алё, то вот здесь обсуждался вариант с менеджером ресурсов http://fire-monkey.ru/topic/31-vklyuchenie-svoih-faylov-v-prilozhenie/?do=findComment&comment=83
-
Камышев Александр отреагировална Евгений Корепов в Программно закрыть клавиатуру
Один из способов Edit1.KillFocusByReturn:=True;
Или можно использовать более гибкий метод, скрывать клавиатуру когда вам захочется:
В Uses добавьте FMX.VirtualKeyboard, FMX.Platform. Код примерно такой:
procedure TForm1.Edit1ChangeTracking(Sender: TObject); begin If Edit1.Text.ToLower.Contains('карамба') Then HideVirtualKeyboard; end; procedure TForm1.HideVirtualKeyboard; var Keyboard: IFMXVirtualKeyboardService; begin if TPlatformServices.Current.SupportsPlatformService( IFMXVirtualKeyboardService, IInterface( Keyboard ) ) then Keyboard.HideVirtualKeyboard; end;
-
Камышев Александр отреагировална Kitty в Eddystone
Удалось увидеть уведомление в шторке телефона. Выяснилось, что протокол ссылки должен быть https. Поэтому не удалось получить в шторке url для fire-monkey.ru
-
Камышев Александр получил реакцию от Kitty в Потоки рушат приложение.
В Synchronize еще и critical section - это финт ушами, достаточно critical_section.
По скрину видно только туеву хучу срэдов, где проблема? где краш? приложение зависает или черный экран?
-
Камышев Александр получил реакцию от Rusland в Пробежать по компонентам на Layout
Align = Scale - удачный выбор, в oldschool Delphi и CBuilder такого не было, в Anchors выставляли руками масштабирование.
Кстати, если кнопки надо изменять только в ширину, то это в Anchors
-
Камышев Александр отреагировална POV в Пробежать по компонентам на Layout
Накидал компоненты на форму как тебе нравится и задал всем это свойство.
При изменении размеров формы всё пропорционально масштабируется.
-
Камышев Александр получил реакцию от Rusland в Failed to load libssl.so
По всему не установлены SDK Intel x86, соответственно проблема не в них.
Анекдот. При головных болях Врач пациенту: бросай курить, Пациент: я не курю, Врач: попробуй закурить.
1. поискать libssl под х86, пишут что они где-то уже есть в системе у GT.
2. попробовать обновить библиотеки SDK для x86, т.е. если нельзя удалить х86 то надо их поставить
применить метод научного тыка
-
Камышев Александр получил реакцию от Kitty в Failed to load libssl.so
счастливые обладатели Intel Atom...
Причина - некорректная работа SDK для x86,
Как вариант - Android на Atom умеет эмулировать armeabi, удали из Deploy или прямо из APK/lib/ папку x86.
При установке андроид не найдет ее и установит приложение в режиме эмуляции arm, скорее всего будет работать.
-
Камышев Александр получил реакцию от Andrey Efimov в Удаление записи из таблицы БД связанной с ListView
имхо... Bind Visually противоречит шаблонам MVC, и полезен скорее для "HelloWord" проектов,
да и с СУБД лучше воевать вручную, хотя SQLite - "недобаза", однако лучше сразу "по-взрослому".
Bind Visually работает в блокирующем режиме? - неясно, скорее всего блокирует интерфейс;
насколько корректно работает AutoCommit? - неясно, видимо на каждое действие проходит commit;
какая будет ситуация с уровнями изоляции? - непонятно... слишком много потенциальных проблем.
-
Камышев Александр получил реакцию от chaplin.u@gmail.com в строка из массива шестнадцатиричных чисел
вот все злые, пристали к программеру, наговорили всякого,
человек хочет тупо массив данных в HEX просматривать, что от него уходит...
IntToHex используй, вот код на си:
AnsiString s; for ( unsigned int i = 0; i < size; i++ ) s += IntToHex( ( (unsigned __int8)(data[i] ), 2 ) + " "; на выходе строка HEXов через пробел
-
Камышев Александр получил реакцию от Rusland в строка из массива шестнадцатиричных чисел
вот все злые, пристали к программеру, наговорили всякого,
человек хочет тупо массив данных в HEX просматривать, что от него уходит...
IntToHex используй, вот код на си:
AnsiString s; for ( unsigned int i = 0; i < size; i++ ) s += IntToHex( ( (unsigned __int8)(data[i] ), 2 ) + " "; на выходе строка HEXов через пробел
-
Камышев Александр получил реакцию от Kitty в Можно ли собрать APK без смартфона ?
Project->Build
APK будет лежать в папке Android\Debug(либо Release)\<имя>\bin\
-
Камышев Александр получил реакцию от rareMax в Убить поток TThread?
Ответ - никак, нет такого механизма, в винде можно принудительно хэндл потока закрыть, но это тоже заканчивается крахом.
метод Terminate только выставляет флаг Terminated и все,
по флагу FreeOnTerminate, после отработки потока, т.е. после выхода из процедуры TBufferThread.Execute поток будет удален автоматически.
Без необходимости не надо применять потоки, или применять потокозащищенные методы,
если уж никак, то работать с ними нужно трепетно:
- не использовать засыпающие надолго функции типа Sleep(10000);
- в компонентах типа доступа к базам данных, tcp, http и т.п. жестко контролировать таймауты;
- не обращаться к компонентам основного потока, особенно к визуальным;
- для потоковой защиты использовать TInterlocked, TEvent или TSimpleEvent;
- при большом объеме кода, расставлять проверки флага для выхода из цикла if ( Terminated ) break;
- дожидаться корректного окончания работы потока.
-
Камышев Александр получил реакцию от Rusland в События при переходе в спящий режим и выходе из него
Rusland, вот обсуждение
и код оттуда
BroadcastReceiver:= TCSBroadcastReceiver.Create(nil); BroadcastReceiver.OnReceive:= BroadcastReceiverOnReceive; BroadcastReceiver.RegisterReceive; BroadcastReceiver.Add('android.intent.action.PHONE_STATE'); BroadcastReceiver.Add('android.intent.action.NEW_OUTGOING_CALL'); а если попробовать:
BroadcastReceiver.Add('android.os.action.POWER_SAVE_MODE_CHANGED');
-
Камышев Александр получил реакцию от zairkz в [XE10][Android] Пример номеронабирателя, звонилки
туплю
-
Камышев Александр получил реакцию от Ingalime в Сглаживание при рисовании в буфер bitmap
протестировал 3 варианта:
1. правка FMX.Graphics.pas как указано выше
2. пишу на с++, можно исправить файл FMX.Graphics.hpp
заменить код
__property TCanvasQuality Quality = {read=FQuality, nodefault}; на
__property TCanvasQuality Quality = {read=FQuality, write=FQuality, nodefault}; после этого можно
bmp_buf->Canvas->Quality = TCanvasQuality::HighQuality; 3. Создать новую канву как указано выше
TCanvas *MyCanvas = TCanvasManager::CreateFromBitmap( bmp_buf, TCanvasQuality::HighQuality ); во всех трех случаях свойство Quality под debug имеет значение HighQuality, проверял перед DrawPath:
bool b = MyCanvas->Quality == TCanvasQuality::HighQuality; и во всех вариантах эффекта не было...
неспроста Quality для формы нужно ставить в design-time
что происходит при сборке, из-чего включается антиалиасинг?
.
-
Камышев Александр получил реакцию от Mantikor в Альтернатива FMX
Ядро Андроида - Linux Kernel, написан, в основном, на си, и серьезность проекта коррелируется скорее с навыками программера чем со средой RAD.
Приложения под операционную систему Android являются программами в нестандартном байт-коде для виртуальной машины Dalvik.
Программы для Dalvik пишутся на языке Java. Несмотря на это, стандартный байт-код Java не используется, вместо него Dalvik исполняет байт-код собственного формата. После компиляции исходных текстов программы на Java (при помощи javac) утилита dx из Android SDK преобразует файлы классов (расширение .class) в файлы собственного формата (с расширением .dex), которые и включаются в пакет приложения (.apk).
Android Native Development Kit позволяет портировать библиотеки и компоненты приложений, написанные на Си и других языках.
-
Камышев Александр получил реакцию от Martifan в Альтернатива FMX
Ядро Андроида - Linux Kernel, написан, в основном, на си, и серьезность проекта коррелируется скорее с навыками программера чем со средой RAD.
Приложения под операционную систему Android являются программами в нестандартном байт-коде для виртуальной машины Dalvik.
Программы для Dalvik пишутся на языке Java. Несмотря на это, стандартный байт-код Java не используется, вместо него Dalvik исполняет байт-код собственного формата. После компиляции исходных текстов программы на Java (при помощи javac) утилита dx из Android SDK преобразует файлы классов (расширение .class) в файлы собственного формата (с расширением .dex), которые и включаются в пакет приложения (.apk).
Android Native Development Kit позволяет портировать библиотеки и компоненты приложений, написанные на Си и других языках.
-
Камышев Александр получил реакцию от Kitty в Альтернатива FMX
Ядро Андроида - Linux Kernel, написан, в основном, на си, и серьезность проекта коррелируется скорее с навыками программера чем со средой RAD.
Приложения под операционную систему Android являются программами в нестандартном байт-коде для виртуальной машины Dalvik.
Программы для Dalvik пишутся на языке Java. Несмотря на это, стандартный байт-код Java не используется, вместо него Dalvik исполняет байт-код собственного формата. После компиляции исходных текстов программы на Java (при помощи javac) утилита dx из Android SDK преобразует файлы классов (расширение .class) в файлы собственного формата (с расширением .dex), которые и включаются в пакет приложения (.apk).
Android Native Development Kit позволяет портировать библиотеки и компоненты приложений, написанные на Си и других языках.
-
Камышев Александр получил реакцию от Cody71727172 в Не сохраняются данные в ini, На Android.
В Seattle поменялся путь к документам, и то что в GetDocumentsPath не видно - ибо не Shared теперь, в файловом менеджере не видно, однако файлы пишутся, проверяли их на чтение?
В XE7 GetSharedDocumentsPath выводил в Android/data/com.embarcadero.имя, в Seattle путь в папку Documents в корне.
GetDocumentsPath в Seattle указывает в Android/data/com.embarcadero.имя и файлы скрытые.
Еще момент, были проблемы с файлами после перехода с XE7, если работа с файлами в конструкторе формы, помог вынос в OnCreate, что-то там поменялось.