导航:
论坛 -> 移动应用开发
斑竹:flyers,iamdream
作者:
2018/12/2 7:46:09
标题:
Rad 10.3编译的android程序在三星s5下TBitmap的SaveToFile或SaveToStream报错
浏览:3162
加入我的收藏
楼主:
一、在我的手机三星S5,Android 6.0.1,用刚出的10.3版本编译的android一个小功能,发现TBitmap的SaveToFile或SaveToStream报错:Error in context method 'DoCopyBits' 步奏: 1、放个控件到Fmx窗体: Image1: TImage; 2、 Image1.Bitmap.LoadFromFile('x.jpg');//随便调入一个jpg文件 bmp1 := Image1.Bitmap.CreateThumbnail(300, 400);//建一bitmap try try bmp1.SaveToFile('a.jpg'); except on e: exception do begin ShowMessage('出错:' + e.Message);//这里报错:Error in context method 'DoCopyBits' end; end; finally bmp1.Free; end; 二、这功能用10.3编译成在windows程序,运行是正确的 三、用Rad 10.0、10.1、10.2任何一版本编译成android的程序,运行也正确,就10.3编译的Android程序运行报错,对比了一下Rad 10.2和10.3版本的源码:FMX.Graphics,FMX.Surfaces,几乎没有改动,但程序就是报错
----------------------------------------------
-
作者:
2018/12/2 9:55:49
1楼:
上面代码段把输出改为内存流也报错 stream := TMemoryStream.Create; bmp1 := Image1.Bitmap.CreateThumbnail(300, 400); try try bmp1.SaveToStream(stream); except on e: exception do begin ShowMessage('出错:' + e.Message); end; end; finally bmp1.Free; stream.Free; end;
----------------------------------------------
-
作者:
2018/12/2 10:29:19
2楼:
说了几百遍了 去 qc 。 https://quality.embarcadero.com/browse/RSP-21828 10.3 Log.d(SOpenGLErrorFlag, [Flag, TranslateErrorCode(Flag)]); 说明 如果发生了错误,会有日志,赶紧 给 EMB 报告这个日志。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/12/2 12:16:37
3楼:
有人报了就行
----------------------------------------------
-
作者:
2018/12/2 12:41:04
4楼:
报了这个错误,文件保存成功了吗? 如果成功了,就忽略这个错误。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/12/2 13:08:18
5楼:
安卓下没有保存成功,单步调试也不行,就算将目录指到source\fmx下,重新编译所有的单元也不行,一到那语句就报错
----------------------------------------------
-
作者:
2018/12/2 13:34:39
6楼:
成功与否得看文件内容。 报错只不过是 GL 函数完成之后才发生的。 GL 函数执行过程并没有被打断。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/12/2 13:36:39
7楼:
try try bmp1.SaveToFile('a.jpg'); except bmp1.SaveToFile('a.jpg'); //先给他一次发生错误的机会。 end; except on e: exception do begin ShowMessage('出错:' + e.Message);//这里报错:Error in context method 'DoCopyBits' end; end;
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/12/2 13:51:21
8楼:
我是测一下10.3罢了,不是拿来用,但核对了下FMX.Graphics,FMX.Surfaces,和10.2比较几乎没有改动,不知其原理,换了几个版本sdk/ndk都不行
----------------------------------------------
-
作者:
2018/12/2 14:01:08
9楼:
不配合测试,就解决不了问题。 我只知道,如何忽略这个错误,也就是不产生这个错误的提示。 但是,错误不提示,不表错误就消失了。 另外这不是 ndk 问题。 也不是 sdk 问题。 也就是说:换也是白换。 跟何况的 EMB 要求 NDK 不能换低版本。 SDK 不能换任何非官方指定的版本。 10.3 必须是 R28 + API26。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/12/2 18:41:05
10楼:
换别的机型呢?如果一个工具要考虑不同的版本的sdk、ndk或java,还要考虑不同的手机机型,那就完蛋了。
----------------------------------------------
-
作者:
2018/12/2 18:47:41
11楼:
RIO 10.3为了相容于Android 8,应该牺牲了不少相容性,现在编绎出来的apk是基于目标API 26的,而且ndk也换版本了。也许国内的朋友不知道,从8月起,所有新上架谷歌商店的apk都一律要基于API 26,在此之前,都是基于API 14的,那是相容于Android 4的。11月起,所有维护中的apk也一律都要基于API 26,所以如果想要使用旧版本的朋友,还是用回旧版的比较好。
----------------------------------------------
-
作者:
2018/12/2 20:32:03
12楼:
我们国内的 各种市场,也规定了,大概 过几个月,也必须 API 26。 而且,现在提交新项目,也必须是 API 26了。
----------------------------------------------
(C)(P)Flying Wang
作者:
bdl1 (bdl1)
▲▲▲▲▲
-
普通会员
2018/12/3 8:27:50
13楼:
在华为荣耀7x上无此问题。 android 8.0.0
----------------------------------------------
-我的博客
作者:
2018/12/3 9:34:33
14楼:
直接savto到一个文件名而不添加指定目录名有点危险吧?
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
2018/12/3 10:05:07
15楼:
仅是写个简易语句,为了看明bitmap的savetoStream或saveTofie报错罢了,Qc上已经报了https://quality.embarcadero.com/browse/RSP-21828,和我的手机都是三星s5 androiud6.0.1
----------------------------------------------
-
作者:
2018/12/3 10:13:27
16楼:
不配合测试,就解决不了问题。 我只知道,如何忽略这个错误,也就是不产生这个错误的提示。 但是,错误不提示,不表错误就消失了。 如果 文件保存成功了,只是成功之后,弹出这个错误。 那么,就表明,我们完全可以忽略他。
----------------------------------------------
(C)(P)Flying Wang