You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android Studio报错:存在的ID仍提示未找到及未解析符号问题

问题1:明明存在Android ID却提示“Android ID not found”

这个问题的排查可以从这几个方向入手,毕竟Android ID的获取在不同版本和设备上有不少细节要注意:

  • 确认获取代码的正确性
    正确的原生获取方式应该调用系统Settings类,示例代码如下:

    import android.provider.Settings;
    
    // 务必在有Context的环境下调用(比如Activity内部)
    String androidId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
    if (androidId == null || androidId.isEmpty()) {
        // 此时才会触发"not found"提示
    }
    

    如果你用了第三方库获取,建议先换成原生API测试,排除库的适配问题。

  • 检查Android版本适配
    从Android 10(API 29)开始,普通应用获取的Android ID是应用专属的(卸载重装会重置),但不会返回null。如果是更旧的版本,极少数定制化设备可能会返回null,建议换一台真机测试(模拟器偶尔会出现异常返回的情况)。

  • 避免过早调用获取方法
    不要在ApplicationonCreate()里直接获取Android ID,此时ContentResolver可能还未完全初始化,建议延迟到Activity启动后再执行获取逻辑。


问题2:Main Activity Java代码出现未解析符号/ID错误(确认ID存在)

这个问题我碰到过好多次,大多是Android Studio缓存或R文件生成异常导致的,按下面的步骤逐一排查:

  • 检查R类的导入是否正确
    最常见的坑:不小心导入了系统的android.R,而非你自己应用的com.example.android.quizapplication.R。打开Main Activity代码,看顶部import语句,删掉错误的R导入,替换成自己应用包名的R类。

  • 清理Android Studio缓存并重启
    AS的缓存偶尔会抽风,导致R文件未更新。操作路径:File -> Invalidate Caches... -> 选择Invalidate and Restart,等重启完成后再查看错误是否消失。

  • 排查布局文件的语法错误
    哪怕你确认ID存在,如果布局文件里有其他错误(比如标签未闭合、属性值非法、自定义控件引用错误),AS也不会生成正确的R文件。打开对应布局文件,看右侧提示栏的红标,修复所有布局错误后再同步项目。

  • 重新同步Gradle项目
    点击AS工具栏里的Sync Project with Gradle Files按钮(大象图标),等待同步完成,这会触发R文件的重新生成。

  • 核对ID的拼写一致性
    再仔细检查一遍:布局里的android:id="@+id/xxx"和代码里引用的R.id.xxx是否完全一致(大小写敏感!),比如布局里是username_input,代码里写成userName_input就会报错。

  • 检查模块依赖(多模块项目)
    如果你的项目是多模块结构,确认Main Activity所在模块已经依赖了包含布局文件的模块,并且R类是从正确的模块导入的。


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

火山引擎 最新活动