gpt4 book ai didi

android - 库使用了错误的 R 文件

转载 作者:行者123 更新时间:2023-11-29 00:16:33 24 4
gpt4 key购买 nike

我将一个库项目打包为 aar 文件,并通过 gradle 将其包含在不同的项目中。现在看来,库项目使用了错误的 R 文件,导致 NullPointerExceptions。

库项目(打包为aar):

  • 一些 fragment

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = new View(getActivity());
    v = inflater.inflate(R.layout.fragment_some, container, false);
    }

我的项目

  • MyFragment 扩展了 SomeFragment

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    L.d("ExtendedFragment - onCreateView");

    return super.onCreateView(inflater, container, savedInstanceState);
    }

R 值:

  • build/generated/source/r/debug/com.example.myapp/R.java - fragment_some=0x7f030005;
  • build/generated/source/r/test/debug/com/example/mylibrary/R.java - fragment_some=0x7f030005;
  • build/intermediates/exploded-aar/com.example/mylibrary/version/R.txt - fragment_some 0x7f030000

在调试时我意识到在库中 R.txt 文件的 Id 被传递给了 Inflater。问题是 Inflater 使用上面提到的 R.java 来解析资源,得到错误的资源并膨胀,因此错误的布局导致以下异常。

这种行为的原因可能是什么?

  • R.txt 文件是否生成错误? R.txt 文件有什么用途?
  • 我是否必须在代码中的某处设置上下文或 R 文件?
  • 或者它可能在项目的构建脚本中,它可能没有正确地包含库?

2014 年 10 月更新

我还找不到解决方案,但我将 libraryproject 作为模块直接包含到我的项目中,一切正常。所以 gradle 如何解析 aar 文件似乎是个问题。

最佳答案

步骤

  1. 清理您的项目并再次构建
  2. 检查R.java文件是否生成如果未生成 R.java,则您的项目很可能在 xml 文件
  3. 中存在错误
  4. 从imports中找出R.java被导入的是import android.R还是import android.projectName.R。所以正确的是import android.projectName.R。 Android 会自动执行此操作,但有时您必须手动执行此操作

关于android - 库使用了错误的 R 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26357722/

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