gpt4 book ai didi

android - log.d 不适用于 Android 服务(Delphi Berlin)

转载 作者:行者123 更新时间:2023-11-30 00:50:33 25 4
gpt4 key购买 nike

我正在使用 Delphi-Berlin Update-2

Android 服务不能使用 log.d(),因为它需要使用 FMX.Types,使用它会导致整个应用程序崩溃。

我试图从 FMX.Types 中提取日志部分,但没有成功。

是否有任何解决方案让 log.d 工作?

到目前为止,我一直在为此使用 IdUDP,但这不是一个理想的解决方案。

最佳答案

我正在使用 Tokyo 并在真实的 LG-LS997 设备上看到同样的问题。

你可以这样使用内置的LOGI:

uses Androidapi.Log;

procedure MyProcedure(msg: String);
var
M: TMarshaller;
begin
LOGI(M.AsUtf8(msg).ToPointer);
end;

更多信息:

每次我在我的服务中包含一个 FMX 单元时,我都会遇到一个段错误。 Log.d 调用 LOGI,后者调用 Android NDK 函数 __android_log_write。还有用于格式化的__android_log_print,不过还没有换行。无论如何,您可能应该只在 Delphi 中格式化并调用 __android_log_write

LOGI 被定义为以日志级别 ANDROID_LOG_INFO 调用 __android_log_write。 Warn、error 和 fatal 也被封装为 LOGWLOGELOGF

我在这里包含了其余的日志记录级别(未经测试,不包括 ANDROID_LOG_UNKNOWN):

function LOGDEF(Text: MarshaledAString): Integer;
begin
Result := __android_log_write(android_LogPriority.ANDROID_LOG_DEFAULT, 'default', Text);
end;

function LOGV(Text: MarshaledAString): Integer;
begin
Result := __android_log_write(android_LogPriority.ANDROID_LOG_VERBOSE, 'verbose', Text);
end;

function LOGDBG(Text: MarshaledAString): Integer;
begin
Result := __android_log_write(android_LogPriority.ANDROID_LOG_DEBUG, 'debug', Text);
end;

function LOGS(Text: MarshaledAString): Integer;
begin
Result := __android_log_write(android_LogPriority.ANDROID_LOG_SILENT, 'silent', Text);
end;

关于android - log.d 不适用于 Android 服务(Delphi Berlin),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41102803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com