警告:找不到引用的类
Posted
技术标签:
【中文标题】警告:找不到引用的类【英文标题】:Warning:can't find referenced class 【发布时间】:2019-03-17 04:35:49 【问题描述】:在 Kotlin 类中有一个名为 onDelete
的方法。
override fun onDelete(position: Int)
templates?.apply
val deleteDialog = DeleteTemplateDialog(view.getViewContext())
deleteDialog.confirmListener =
CustomTemplateRepository.getInstance().deleTemplate(this[position].templateId!!)
.subscribe(
deleteDialog.dismiss()
this.removeAt(position)
customTemplateAdapter?.notifyDataSetChanged()
view.showEmptyView(this.isEmpty())
, )
当我构建 release-apk 时,我启用了proguard
,但由于以下警告而失败。
警告:com.uniquestudio.android.iemoji.module.library.customtemplate.MyTemplatePresenter$onDelete$1$1$2:找不到引用的类 com.uniquestudio.android.iemoji.module.library.customtemplate.MyTemplatePresenter$onDelete$1 $1
当我使用 dex2jar 从 debug-APK 中检索此类时。我明白了。
public void onDelete(final int paramInt)
final DeleteTemplateDialog localDeleteTemplateDialog = new DeleteTemplateDialog(this.view.getViewContext());
localDeleteTemplateDialog.setConfirmListenner((Function0)new Lambda(localArrayList)
public final Disposable invoke()
CustomTemplateRepository localCustomTemplateRepository = CustomTemplateRepository.Companion.getInstance();
String str = ((Template)this.receiver$0.get(paramInt)).getTemplateId();
if (str == null)
Intrinsics.throwNpe();
localCustomTemplateRepository.deleTemplate(str).subscribe((Action)new Action()
public final void run()
this.this$0.$deleteDialog.dismiss();
this.this$0.receiver$0.remove(this.this$0.$position$inlined);
CustomTemplateAdapter localCustomTemplateAdapter = MyTemplatePresenter.access$getCustomTemplateAdapter$p(this.this$0.this$0);
if (localCustomTemplateAdapter != null)
localCustomTemplateAdapter.notifyDataSetChanged();
this.this$0.this$0.getView().showEmptyView(this.this$0.receiver$0.isEmpty());
, (Consumer)MyTemplatePresenter.onDelete.1.1.2.INSTANCE);
);
我不知道:
谁是com.uniquestudio.android.iemoji.module.library.customtemplate.MyTemplatePresenter$onDelete$1$1$2
谁是com.uniquestudio.android.iemoji.module.library.customtemplate.MyTemplatePresenter$onDelete$1$1
为什么第一个找不到引用的类
【问题讨论】:
你试过“-dontwarn”吗,比如这里:***.com/a/7003061/1438493?似乎是类似的问题。 你能添加你的 proGuard 配置吗?似乎它可能正在缩小类或方法名称,然后代码无法找到它们。 要获取有关类结构的更多信息,您可以查看构建文件夹。在那里你应该找到这些类。我认为MyTemplatePresenter$onDelete$1$1$2
是错误消费者
,因此MyTemplatePresenter$onDelete$1$1
应该是确认监听器。
【参考方案1】:
好像是kotlin的问题,问题可以看这里: https://youtrack.jetbrains.com/issue/KT-16084
重写apply
,一切正常...
【讨论】:
以上是关于警告:找不到引用的类的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot中使用 Redisson 版本冲突导致的类找不到
Proguard 导致 100 个“找不到引用的类”警告,忽略 springframework 和 jackson 的保留规则
eclipse集成tomcat运行web时提示引入jar包的类找不到的解决办法
Q开头的类找不到,无法加载插件:com.mysema.maven:apt-maven-plugin
Android ProGuard警告 - 找不到引用的类“com.zhihu.matisse.R $ plurals”
Android 警告:com.bbn.openmap.MapBean:找不到引用的类 java.awt.geom.Point2D