【发布时间】:2023-04-10 21:50:01
【问题描述】:
在 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”吗,比如这里:stackoverflow.com/a/7003061/1438493?似乎是类似的问题。
-
你能添加你的 proGuard 配置吗?似乎它可能正在缩小类或方法名称,然后代码无法找到它们。
-
要获取有关类结构的更多信息,您可以查看构建文件夹。在那里你应该找到这些类。我认为
MyTemplatePresenter$onDelete$1$1$2是错误消费者{},因此MyTemplatePresenter$onDelete$1$1应该是确认监听器。
标签: java android kotlin proguard