xqnh520 发表于 2021-8-3 02:15:07

生成DEX文件失败???(invalid opcode ba - invokedynamic requires -...

本帖最后由 xqnh520 于 2021-8-5 09:08 编辑

当前程序编译时所需求安卓SDK API版本: 29, 实际所使用版本: 29;运行时所需求API版本: 26
当前程序所需求Java SDK版本: 1.6;实际所使用版本: 1.8
正在进行"生成DEX文件"工作,请稍候...
错误:
    步骤"生成DEX文件"执行失败
    Uncaught translation error:
    com.android.dx.*Fcode.SimException: ERROR in com.youth.banner.adapter.BannerAdapter.onBindViewHolder:(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)V: invalid opcode ba - invokedynamic requires --min-sdk-version >= 26 (currently 13)
   at com.android.dx.*Fcode.Simulator.fail(Simulator.java:947)
   at com.android.dx.*Fcode.Simulator.checkInvokeDynamicSupported(Simulator.java:848)
   at com.android.dx.*Fcode.Simulator.access$700(Simulator.java:43)
   at com.android.dx.*Fcode.Simulator$SimVisitor.visitConstant(Simulator.java:711)
   at com.android.dx.*Fcode.BytecodeArray.parseInstruction(BytecodeArray.java:780)
   at com.android.dx.*Fcode.Simulator.simulate(Simulator.java:117)
   at com.android.dx.*Fcode.Ropper.processBlock(Ropper.java:789)
   at com.android.dx.*Fcode.Ropper.doit(Ropper.java:744)
   at com.android.dx.*Fcode.Ropper.convert(Ropper.java:349)
   at com.android.dx.dex.*F*Franslator.processMethods(*Franslator.java:309)
   at com.android.dx.dex.*F*Franslator.translate0(*Franslator.java:150)
   at com.android.dx.dex.*F*Franslator.translate(*Franslator.java:102)
   at com.android.dx.command.dexer.Main.translateClass(Main.java:779)
   at com.android.dx.command.dexer.Main.access$2700(Main.java:85)
   at com.android.dx.command.dexer.Main$ClassTranslatorTask.call(Main.java:1901)
   at com.android.dx.command.dexer.Main$ClassTranslatorTask.call(Main.java:1886)
   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   at java.lang.Thread.run(Thread.java:748)
    ...at bytecode offset 0000002c
    locals: Lcom/youth/banner/adapter/BannerAdapter;
    locals: Landroidx/recyclerview/widget/RecyclerView$ViewHolder;
    locals: I
    locals: I
    stack: Landroid/view/View;
    stack: Lcom/youth/banner/adapter/BannerAdapter;
    stack: I
    ...while working on block 002a
    ...while working on method onBindViewHolder:(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)V
    ...while processing onBindViewHolder (Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)V
    ...while processing com/youth/banner/adapter/BannerAdapter.class
    1 error; aborting
错误: 建立所指定的安卓APK输出文件"E:\火山安卓\banner封装学习\_int\banner封装学习\debug\linker\banner.apk"失败
--- 项目"banner封装学习"编译或连接失败. 编译过程中共遇到了 0 个警告, 2 个错误.


创世魂 发表于 2021-8-3 07:45:02

你在搞封装吗,估计是什么东西和系统库冲突了,导致编译失败。

xqnh520 发表于 2021-8-3 08:19:23

创世魂 发表于 2021-8-3 07:45
你在搞封装吗,估计是什么东西和系统库冲突了,导致编译失败。

嗯。学习中。不知道是什么原因。我翻译了一下,意思是要用SDK版为26实际是13但是我把编译需求设置成26还是一样的错误,不知道问题在那里。

xqnh520 发表于 2021-8-5 09:07:44

生成DEX文件失败

关于这个错误的提示以找到原因。com.android.dx.*Fcode.SimException: ERROR in com.youth.banner.adapter.BannerAdapter.onBindViewHolderLandroidx/recyclerview/widget/RecyclerView$ViewHolder;I)V: invalid opcode ba - invokedynamic requires --min-sdk-version >= 26 (currently 13)

是因为我在启动类里面使用了高级兼容窗口,在企鹅封装的“高级兼容系列基础类”备注中有说明。而我在引入外部库的时候也用到了androidx库,产生了冲突。


解决方法是

xqnh520 发表于 2021-8-5 09:12:26

但是出现新的问题。

意思提示控件没有这个属性。
我想应该是appcompat这个库 的原因。但是换了还是一样,不知道是在那里出了错。


xqnh520 发表于 2021-8-5 09:14:36

网上找java的解决方案。不知道火山如何修改。研究中

xqnh520 发表于 2023-3-16 19:37:47

xqnh520 发表于 2021-8-5 09:12
但是出现新的问题。

意思提示控件没有这个属性。


在.AAR文件里面找到R.txt文件,删出里面出现的对应单词
页: [1]
查看完整版本: 生成DEX文件失败???(invalid opcode ba - invokedynamic requires -...