You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android共享库中无法解析符号'Log',无需导入包如何输出到Logcat?

问题根因

你当前的模块使用的是java-library插件,属于纯Java/Kotlin库,编译环境没有内置Android SDK的相关类,所以自然找不到android.util.Log,哪怕手动加import也没用。

可行方案

方案1:自定义日志抽象层(最优,符合跨平台要求)

这个方案不需要你的共享库依赖Android SDK,完全保留纯Java库的跨平台属性,同时在Android端运行时自动输出到Logcat:

  • 第一步:在共享库内定义日志接口,比如:
public interface Logger {
    void d(String tag, String msg);
    void i(String tag, String msg);
    void w(String tag, String msg);
    void e(String tag, String msg);
    // 按需添加其他日志级别方法
}
  • 第二步:在共享库内写一个日志工具类,持有这个接口的实现,供内部调用:
public class LogUtils {
    private static Logger sLogger;

    // 给外层注入日志实现的入口
    public static void setLogger(Logger logger) {
        sLogger = logger;
    }

    public static void d(String tag, String msg) {
        if (sLogger != null) {
            sLogger.d(tag, msg);
        }
    }

    // 其他级别对应的静态方法同理
}
  • 第三步:在Android端的应用/穿戴设备应用初始化的时候,注入android.util.Log的实现:
LogUtils.setLogger(new Logger() {
    @Override
    public void d(String tag, String msg) {
        Log.d(tag, msg);
    }

    @Override
    public void i(String tag, String msg) {
        Log.i(tag, msg);
    }

    @Override
    public void w(String tag, String msg) {
        Log.w(tag, msg);
    }

    @Override
    public void e(String tag, String msg) {
        Log.e(tag, msg);
    }
});
  • 第四步:如果后续要对接iOS端,只需要在iOS侧注入对应平台的日志实现即可,共享库的代码不需要做任何修改,完全符合跨平台复用的要求。

方案2:直接输出到System.out(临时快速方案)

Android的Logcat默认会捕获System.out和System.err的输出,对应Logcat的INFO和ERROR级别,你不需要依赖任何Android SDK的类,直接在共享库中调用即可:

// 对应Logcat的INFO级别
System.out.println("tag: 日志内容");
// 对应Logcat的ERROR级别
System.err.println("tag: 错误日志内容");

这个方案的缺点是不支持自定义日志级别,日志格式也比较固定,适合临时调试用。

方案3:将模块改为Android Library(不推荐,不符合你的跨平台需求)

如果你放弃跨平台复用的需求,可以把build.gradle的配置改成Android库,就能直接使用android.util.Log了:

// 替换原来的apply plugin: 'java-library'
apply plugin: 'com.android.library'

android {
    compileSdk 33 // 按需选择你需要的版本
    defaultConfig {
        minSdk 21 // 匹配你的穿戴/移动端的最低支持版本
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}

这个方案会让你的库变成Android专属,无法给iOS端复用,不匹配你的需求,所以不推荐。

内容的提问来源于stack exchange,提问作者lcj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:45:07