【采坑记录】Tinker 报错Warning:ignoreWarning is false, but we found loader classes are found in old secondar

1 篇文章 0 订阅
1 篇文章 0 订阅

Tinker生成Patch包时报错: 

Warning:ignoreWarning is false, but we found loader classes are found in old secondary dex. Found classes: {Lcom/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_01;,Lco......

前提:你是不是直接在AS中点击的Run按钮运行的Base包?然后看包结构Tinker的loader始终在classes2.dex中。

1.【先提供别人的解决思路】

有没有尝试在app module下写一个maindexlist.txt,

<<****你自己的Application.class>>
<<*****TinkerApplicationLike.class>>

com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_01
com/tencent/tinker/loader/shareutil/ShareResPatchInfo
com/tencent/tinker/loader/SystemClassLoaderAdder$V23
com/tencent/tinker/loader/hotplug/ActivityStubManager
com/tencent/tinker/loader/shareutil/ShareOatUtil$1
com/tencent/tinker/loader/shareutil/ShareOatUtil
com/tencent/tinker/loader/shareutil/SharePatchFileUtil
com/tencent/tinker/loader/shareutil/ShareFileLockHelper
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_04
com/tencent/tinker/loader/TinkerDexOptimizer$StreamConsumer$1
com/tencent/tinker/loader/TinkerDexLoader
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_06
.....等等等

然后:1.1【方式1】:

dexOptions {
        jumboMode = true
//        preDexLibraries = false
        javaMaxHeapSize "2g"     //增加java堆内存大小
        additionalParameters = ['--multi-dex','--set-max-idx-number=60000','--main-dex-list='+projectDir+'/maindexlist.txt', '--minimal-main-dex']
        additionalParameters = ['--set-max-idx-number=65000', '--num-threads=4', '--minimal-main-dex']
    }

1.2【方式2】:

buildTypes {

        debug {
            debuggable true
            minifyEnabled false
            multiDexKeepFile file('maindexlist.txt')
//            signingConfig signingConfigs.debug
        }

        release {
            multiDexKeepFile file("maindexlist.txt")
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

最后发现两个方式都不好用,dex的包中依然把Tinker的load放到了classes2.dex中,最后甚至dexKnife都用上了,还是会报错。

该解决方式引用地址:https://blog.csdn.net/qq_29870299/article/details/84194002


2.【我的解决方式如下,核心思想:用命令行去打包!!!!!!举例是debug包】


1:生成Base包用:./gradlew assembleDebug
2:生成Patch包用:./gradlew tinkerPatchDebug
ps:1.7.6版本后的话,不用刻意去设置app下build.gradle中的loader;

ps:另外,注意手机读写动态权限的申请!!!否则会让你很挠头,找不到问题所在。

ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},12); //8.0需要动态权限申请

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值