Перейти к содержанию
Fire Monkey от А до Я
  • 0

Исключние Segmentation Fault при запуске приложения на планшете Prestigio PMP5597D (Android 4.1.1)


voytalexey

Вопрос

Простейшие приложения не работают на планшете Prestigio PMP5597D. При запуске приложения пользователем оно мелькает на долю секунды и пропадает. При запуске под отладчиком получаю Segmentation Fault. Эти же файлы APK ставлю на телефон с Android 4.4.2 и всё работает нормально. К сожалению, другого устройства с версией 4.1.1 у меня нет, так что не могу понять, связана ли проблема с версией андроида или конкретным планшетом.

 

Методом тыка выяснил, что всё-таки некоторые приложения работают, если не содержат некоторых контролов на форме. Так, пустая форма с лейблами нормально запускается. А вот появление кнопки на форме вызывает вышеупомянутое исключение. Причем именно видимой кнопки. Если есть кнопка с Visible=false или она расположена за пределами формы, то всё нормально. Но стоит кнопке сделать Visible=true как тут же получаю Segmentation Fault.

Пробовал разные контролы, выяснил что TLabel, TPanel, TShape, TChart нормально отображаются. А вот появление видимого TButton, TMemo, TCheckBox, TGroupBox приводят к исключению в момент установки Visible=true.

Ответа в интернете не нашел, нашел только аналогичный вопрос без ответа: http://codeverge.com/embarcadero.delphi.firemonkey/c++-builder-xe7-and-android-dev/2004616

 

Использую Delphi XE6.

Смотрел Call Stack в момент исключения, там зачем-то идёт копирование громадного куска памяти размером 2560000 байт. Функция FMX.Helpers.Android.JBitmapToSurface обрабатывает какой-то Bitmap размерами {width = 1600, height = 400, stride = 0, format = 0, flags = 0}. Причем параметры этого битмапа не зависят от типа и размера контрола которому я делаю Visible=true. И размерам экрана планшета они тоже не соответствуют.

На этом я застрял, что дальше делать не понимаю.

 

На всякий случай выкладываю ниже содержимое Call Stack.

:4017378A memcpy()
:68B37A98 System.memmove(void*, void const*, unsigned int)()
:68B3AA9C System.Move(void const*, void*, NativeInt)(Source=0x41aca1f0, Dest=0x6bb98008, Count=2560000)
:69184900 Fmx.Helpers.Android.JBitmapToSurface(System.DelphiInterface<Androidapi.Jni.Graphicscontentviewtext.JBitmap>, Fmx.Surfaces.TBitmapSurface*)(SrcBitmap=0x67a5a810, DestSurface=0x66e85bc0)
:6918D882 Fmx.Canvas.Android.TBitmapCodecAndroid.StretchIfNeed(System.DelphiInterface<Androidapi.Jni.Graphicscontentviewtext.JBitmap>, Fmx.Surfaces.TBitmapSurface*, System.DelphiInterface<Androidapi.Jni.Graphicscontentviewtext.JBitmapFactory_Options>, unsigned int)(Self=0x673567f0, SrcBitmap=0x67a5a810, Bitmap=0x66e85bc0, LoadOptions=0x65e30580, MaxSizeLimit=4096)
:6918B260 Fmx.Canvas.Android.TBitmapCodecAndroid.LoadFromStream(System.Classes.TStream*, Fmx.Surfaces.TBitmapSurface*, unsigned int)(Self=0x673567f0, AStream=0x66d7dc50, Bitmap=0x66e85bc0, MaxSizeLimit=4096)
:68D55F38 Fmx.Graphics.TBitmapCodecManager.LoadFromStream(System.Classes.TStream*, Fmx.Surfaces.TBitmapSurface*, unsigned int)(Self=0x696e648c, AStream=0x66d7dc50, Bitmap=0x66e85bc0, MaxSizeLimit=4096)
:68D56B3E Fmx.Graphics.TBitmap.LoadFromStream(System.Classes.TStream*)(Self=0x66e85c78, Stream=0x66d7dc50)
:68D36190 Fmx.Multiresbitmap.TCustomBitmapItem.SetDormant(bool)(Self=0x66d7dba0, Value=false)
:68D35DC6 Fmx.Multiresbitmap.TCustomBitmapItem.GetBitmap()(Self=0x66d7dba0)
:6936200A Fmx.Styles.Objects.TCustomStyleObject.DoDrawToCanvas(Fmx.Graphics.TCanvas*, System.Types.TRectF const&, float)(Self=0x65d77bf8, Canvas=0x65417350, ARect={ = {{TopLeft = {{{X = 3.06330321e+025, Y = 5.7096492e+022}, {V = {3.06330321e+025, 5.7096492e+022}}}}, BottomRight = {{{X = 1.27199452e+023, Y = 3.06475682e+025}, {V = {1.27199452e+023, 3.06475682e+025}}}}}, {Left = 3.06330321e+025, Top = 5.7096492e+022, Right = 1.27199452e+023, Bottom = 3.06475682e+025}}}, AOpacity=1)
:693591A2 Fmx.Styles.Objects.TCustomStyleObject.DrawToCanvas(Fmx.Graphics.TCanvas*, System.Types.TRectF const&, System.Uitypes.TAlphaColor, float)(Self=0x65d77bf8, Canvas=0x65417350, ARect={ = {{TopLeft = {{{X = 3.06330321e+025, Y = 5.7096492e+022}, {V = {3.06330321e+025, 5.7096492e+022}}}}, BottomRight = {{{X = 1.27199452e+023, Y = 3.06331244e+025}, {V = {1.27199452e+023, 3.06331244e+025}}}}}, {Left = 3.06330321e+025, Top = 5.7096492e+022, Right = 1.27199452e+023, Bottom = 3.06331244e+025}}}, ATintColor=0, AOpacity=1)
:69358D88 Fmx.Styles.Objects.TCustomStyleObject.Paint()(Self=0x65d77bf8)
:693471FC Fmx.Controls.TControl.PaintInternal()(Self=0x65d77bf8)
:69332884 Fmx.Controls.TControl.PaintChildren()(Self=0x671a64d0)
:693472E0 Fmx.Controls.TControl.PaintInternal()(Self=0x671a64d0)
:69332884 Fmx.Controls.TControl.PaintChildren()(Self=0x65d83a58)
:693472E0 Fmx.Controls.TControl.PaintInternal()(Self=0x65d83a58)
:693CEA76 Fmx.Forms.TCustomForm.PaintRects(System.Types.TRectF const*, int)(Self=0x66f1f258, UpdateRects=@0x69cacd00: {{{{TopLeft = {{{X = 0, Y = 0}, {V = {0, 0}}}}, BottomRight = {{{X = 768, Y = 976}, {V = {768, 976}}}}}, {Left = 0, Top = 0, Right = 768, Bottom = 976}}}}, .=0)
:693C06AE __stub_in588v69__ZN3Fmx5Forms17TCommonCustomForm10PaintRectsEPKN6System5Types6TRectFEi()
:6928CE9A Fmx.Platform.Android.TWindowManager.Render().RenderNormalWindows(void*)(__FRAMEPTR__=@0x69cacd54: {<No data fields>})
:6927284E Fmx.Platform.Android.TWindowManager.Render()(Self=0x66f34810)
:692727E4 Fmx.Platform.Android.TWindowManager.RenderIfNeeds()(Self=0x66f34810)
:69290E0A Fmx.Platform.Android.TPlatformAndroid.InternalWaitMessage(int)(Self=0x6715a260, TimeoutOverride=0)
:69279110 Fmx.Platform.Android.TPlatformAndroid.WaitMessage()(Self=0x6715a260)
:69279068 Fmx.Platform.Android.TPlatformAndroid.Run()(Self=0x6715a260)
:6927904E __stub_in256s__ZN3Fmx8Platform7Android16TPlatformAndroid3RunEv()
:693BDE66 Fmx.Forms.TApplication.Run()(Self=0x66f346f8)
:6942014A _NativeMain()
:68B4A30E System.main_app_entry(void*)(param=nil)
:40179B74 __thread_entry()
:401792CC pthread_create()
:66FC3350 ??()
:66FC3350 ??()

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Просил проверить мой тестовый APK на форуме 4pda.ru других владельцев данного девайса, результаты оказались разные.

Производитель выпускал девайс с двумя вариантами прошивки. В одной дельфийские APK нормально работают, в другой, более поздней, уже нет. Перепрошил планшет на первичную прошивку, все мои проекты заработали. Придётся жить с этой прошивкой, хотя она и глючная.

Настройки Android Tools оказались совсем не причём.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...