因为app 需要集成热修复框架,对比几个成熟的解决方案后,最终选用微信的解决方案 Tinker ,具体文档请看 https://github.com/Tencent/tinker/wiki 最终为了方便,使用了腾讯的bugly, 具体集成方式请看 https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix-demo/?v=20181014122344 因为都是成熟的框架,集成步骤按着文档来问题也不会太大
下面我说一下我在集成完毕后,所遇到的问题
Warning:ignoreWarning is false, but we found loader classes are found in old secondary dex
这个问题困扰了我两天,下面说下我的解决方法。
在开发中,我们为解决 64K 限制为题,我们一般使用 MultiDex,其原理是将一个完整程序包分成几个小的dex,如果不加处理,就会触发上述问题 (loader classes are found in old secondary dex)。
上图引用至tinker 官方文档,文档说的已经很详细了 ,下面 我就贴代码啦
在你的build.gradle下添加
dexOptions {
jumboMode = true
javaMaxHeapSize "2g"
additionalParameters = [//dex参数详见 dx --help
'--multi-dex',//多分包
'--set-max-idx-number=60000',//每个包内方法数上限
'--main-dex-list='+projectDir+'/multiDexKeep.txt',//打包进主classes.dex的文件列表
'--minimal-main-dex'//使上一句生效
]
}
其中 核心的就是 additionalParameters 这句话 ,下面在 /app下 新建 multiDexKeep.txt 文件,要保证与build.gradle 同一级 下面我贴下 multiDexKeep.txt 的主要内容
.....你的其他类
[你的Application].class
[你的ApplicationLike].class
com/tencent/tinker/loader/shareutil/ShareResPatchInfo.class
com/tencent/tinker/loader/SystemClassLoaderAdder$V23.class
com/tencent/tinker/loader/hotplug/ActivityStubManager.class
com/tencent/tinker/loader/shareutil/ShareOatUtil$1.class
com/tencent/tinker/loader/shareutil/ShareOatUtil.class
com/tencent/tinker/loader/shareutil/SharePatchFileUtil.class
com/tencent/tinker/loader/shareutil/ShareFileLockHelper.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_04.class
com/tencent/tinker/loader/TinkerDexOptimizer$StreamConsumer$1.class
com/tencent/tinker/loader/TinkerDexLoader.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_06.class
com/tencent/tinker/loader/TinkerDexOptimizer$1.class
com/tencent/tinker/loader/TinkerDexOptimizer$StreamConsumer.class
com/tencent/tinker/loader/hotplug/IncrementComponentManager.class
com/tencent/tinker/loader/AndroidNClassLoader.class
com/tencent/tinker/loader/TinkerResourcesKey.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_09.class
com/tencent/tinker/loader/hotplug/interceptor/ServiceBinderInterceptor.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_07.class
com/tencent/tinker/loader/shareutil/ShareIntentUtil.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_00.class
com/tencent/tinker/loader/TinkerResourcesKey$V24.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_05.class
com/tencent/tinker/loader/TinkerTestAndroidNClassLoader.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_01_T.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_01_T.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_01_T.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_07.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_00_T.class
com/tencent/tinker/loader/hotplug/handler/MHMessageHandler.class
com/tencent/tinker/loader/shareutil/ShareElfFile$SectionHeader.class
com/tencent/tinker/loader/TinkerDexOptimizer$ResultCallback.class
com/tencent/tinker/loader/TinkerResourceLoader.class
com/tencent/tinker/loader/SystemClassLoaderAdder$V19.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_06.class
com/tencent/tinker/loader/hotplug/interceptor/ServiceBinderInterceptor$1.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_08.class
com/tencent/tinker/loader/hotplug/interceptor/ServiceBinderInterceptor$BinderInvocationHandler.class
com/tencent/tinker/loader/shareutil/ShareResPatchInfo$LargeModeInfo.class
com/tencent/tinker/loader/hotplug/ActivityStubs.class
com/tencent/tinker/loader/hotplug/interceptor/TinkerHackInstrumentation.class
com/tencent/tinker/loader/TinkerResourcesKey$V19.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_02.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_09.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_00.class
com/tencent/tinker/loader/shareutil/ShareElfFile$1.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_02_T.class
com/tencent/tinker/loader/TinkerTestDexLoad.class
com/tencent/tinker/loader/shareutil/ShareElfFile$ProgramHeader.class
com/tencent/tinker/loader/TinkerSoLoader.class
com/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor$CallbackWrapper.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_01_T.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_08.class
com/tencent/tinker/loader/shareutil/ShareElfFile$ElfHeader.class
com/tencent/tinker/loader/TinkerResourcePatcher.class
com/tencent/tinker/loader/shareutil/ShareTinkerInternals.class
com/tencent/tinker/loader/hotplug/ComponentHotplug.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_07.class
com/tencent/tinker/loader/TinkerDexOptimizer$OptimizeWorker.class
com/tencent/tinker/loader/hotplug/interceptor/InterceptFailedException.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_01.class
com/tencent/tinker/loader/BuildConfig.class
com/tencent/tinker/loader/TinkerLoader.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_03.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_01.class
com/tencent/tinker/loader/SystemClassLoaderAdder$V4.class
com/tencent/tinker/loader/hotplug/interceptor/Interceptor$ITinkerHotplugProxy.class
com/tencent/tinker/loader/shareutil/ShareSecurityCheck.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_09.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_00.class
com/tencent/tinker/loader/hotplug/interceptor/ServiceBinderInterceptor$FakeInterfaceHandler.class
com/tencent/tinker/loader/SystemClassLoaderAdder.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_08.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_06.class
com/tencent/tinker/loader/TinkerResourcesKey$V17.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_00.class
com/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor.class
com/tencent/tinker/loader/shareutil/ShareBsDiffPatchInfo.class
com/tencent/tinker/loader/shareutil/ShareReflectUtil.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_00_T.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_00_T.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_02.class
com/tencent/tinker/loader/TinkerUncaughtHandler.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_02_T.class
com/tencent/tinker/loader/TinkerDexOptimizer.class
com/tencent/tinker/loader/shareutil/ShareConstants.class
com/tencent/tinker/loader/shareutil/SharePatchInfo.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_09.class
com/tencent/tinker/loader/hotplug/handler/PMSInterceptHandler.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_05.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_03.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_01.class
com/tencent/tinker/loader/SystemClassLoaderAdder$V14.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_03.class
com/tencent/tinker/loader/hotplug/IncrementComponentManager$AttrTranslator.class
com/tencent/tinker/loader/shareutil/ShareOatUtil$InstructionSet.class
com/tencent/tinker/loader/app/TinkerApplication.class
com/tencent/tinker/loader/hotplug/interceptor/ServiceBinderInterceptor$FakeClientBinderHandler.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_02.class
com/tencent/tinker/loader/hotplug/UnsupportedEnvironmentException.class
com/tencent/tinker/loader/TinkerRuntimeException.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_04.class
com/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor$MessageHandler.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_06.class
com/tencent/tinker/loader/TinkerDexLoader$1.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_00_T.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_02_T.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_04.class
com/tencent/tinker/loader/hotplug/IncrementComponentManager$1.class
com/tencent/tinker/loader/hotplug/EnvConsts.class
com/tencent/tinker/loader/hotplug/handler/AMSInterceptHandler.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_05.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_03.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_02.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_07.class
com/tencent/tinker/loader/hotplug/ActivityStubs$STDStub_05.class
com/tencent/tinker/loader/AbstractTinkerLoader.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_02_T.class
com/tencent/tinker/loader/SystemClassLoaderAdder$1.class
com/tencent/tinker/loader/TinkerResourcesKey$V7.class
com/tencent/tinker/loader/shareutil/ShareDexDiffPatchInfo.class
com/tencent/tinker/loader/shareutil/ShareElfFile.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTKStub_08.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SGTStub_04.class
com/tencent/tinker/loader/hotplug/interceptor/Interceptor.class
com/tencent/tinker/loader/hotplug/ActivityStubs$SIStub_01.class
com/tencent/tinker/loader/R.class
到这里 我的问题就解决了 ,希望此博客能帮到遇到此问题的朋友,如果哪里说的不对,也请多多指教