Tam*_*afi 29 java android gradle kotlin android-studio
我是kotlin的新手,我已经从java转换了一些代码,但似乎有些不对劲,findViewById(R.id.my_id)中的R以红色突出显示,并显示以下消息:"未解析的引用:R"..我一直在寻找解决方案,但我好像不知道,所以我该怎么办?这是一个截图:
mar*_*tom 27
我使用了com.android.tools.build:gradle:3.3.0-alpha13并遇到了同样的问题.更改为稳定版本3.2.1为我解决了这个问题.
Tam*_*afi 21
这个问题可能是由许多因素造成的,
com.android.tools.build:gradle版本引起的,将其版本更改为更稳定版本可以解决问题:例如:com.android.tools.build:gradle:3.4.0-alpha02withcom.android.tools.build:gradle:3.2.1 此外,拥有来自同一组但具有不同版本的库可能会导致问题甚至更多的运行时错误.
它也可能由于资源和代码不匹配而发生,包括您活动中的这个输入行也可能解决问题: implementation('com.squareup.picasso:picasso:2.71828') { exclude(group: 'com.android.support') }
import com.package.name.R -在Android上清理IDE现金也有助于提高性能和内存Studio看起来像这样:Build -> Clean Project / Rebuild ProjectFile-> Invalidate Chases/ Restart -> Invalidate Cashes and Restart. , , - , UpperCase or special Letters或者你正在使用自定义视图:kotlinx.android.synthetic.main.activity_page.*
之后,在活动的onCreat()方法中,你将会只需要调用id,例如:kotlinx.android.synthetic.main.view_layout.view.*或者从自定义视图中调用:my_edit_text_ID.text = "Kotlin Dbest!"编辑:
我遇到过这个问题,问题是''R''库是从2个不同来源导入的:
com.android.R
com.example.package.R
您只能使用您的应用程序包名称导入"R"库,在这种情况下,mCostumView.my_edit_text_ID.text = "Kotlin Dbest!"
有时根本不导入库,导入它,单击未解析的参考com.example.package.R并按R
所以这是一个误导性错误.
我将解释30,000英尺的正在发生的事情.这不是精确的订单或精确的流程,它只是非常接近;)所以,如果你知道更多然后我做的确切的顺序和关心修改链接,感觉自由我不会停止你:).
过程
R文件是生成的代码.
有一代人的命令.
Gradle会做它的魔力,拉动它的依赖关系并首先启动它的警告和错误树,
然后Android在幕后将所有Kotlin转换为Java.是的,我们心爱的Kotlin仍然必须为我们心爱的ART虚拟机编译Java.
然后它会运行并执行您为JVM Statics创建的适配器以及一些其他任务.接下来,它首先编译所有xml数据绑定文件,以创建生成的数据绑定文件.
如果一切顺利,它将继续处理资产和资源.这会为您在代码中引用的每个资源创建指针或ID.接下来,它将贯穿并开始编译代码和打包过程.
非常直接的过程,但这里存在的问题.
误导性错误
如果在R生成完成之前任何步骤失败,则R不会生成.有时您需要进行简单的重建,有时只需要简单的文件 - >无效缓存和重启即可.但是,您的gradle,xml,数据绑定或适配器中的代码问题通常会阻止编译器进入R生成阶段.
所以下一个问题是
"拍好,如果错误毫无价值或根本不存在,我们如何解决问题".
首先让我们谈谈这些错误出现的许多方式.
接下来,让我们谈谈造成问题的潜在候选人.因为有很多大声笑.
不幸的是,这在前沿技术中发生了很多,其中UI工具还没有达到基于终端的工具的速度.所以我建议你从一个终端的项目根目录运行
bash gradlew assembleRelease --debug
Run Code Online (Sandbox Code Playgroud)
当它失败时,它会.开始向上滚动日志,直到找到红色,在那里您可以看到实际发生故障并阻止下一个阶段发生.
当您开始处理数据绑定时,您会发现这特别有用.
小费:
当你开始处理数据绑定时,请确保你经常编译和运行,因为目标是在做其他文件之前立即识别,以确保你没有破坏生成并让你的生活更容易知道你刚刚添加的代码导致问题在走得太远之前.
在继续之前编译并运行以确认没有问题的时间.
就像我上面提到的那样,原因是为了避免得到这么多的变化,找到与生成的数据绑定代码相关的通用模糊,可怕的错误就成了一个故障排除的噩梦.我确信这些工具会有所改进,但是现在,在更改数据绑定相关项目时,请自己帮个忙并编译并运行.
快乐的编码
使用gradle命令.
在Android Studio的右侧菜单中:
Gradle -> :app -> Tasks -> build -> clean.
之后,Gradle -> :app -> Tasks -> build -> build
我有错误的 import 语句import android.R而不是import my.project.package.R. 修复它解决了问题
| 归档时间: |
|
| 查看次数: |
21530 次 |
| 最近记录: |