首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android开发笔记(一百七十九)避免方法数过多的问题

    一个大规模的App工程,往往引入了数量繁多的第三方开发库,其中既有官方的Jetpack库,也有第三方厂商的开源包。有时候运行这种App会报错“Cannot fit requested classes in a single dex file (# methods: 65894 > 65536)”,意思是App内部引用的方法数量超过了65536个,导致App异常退出。 原来Android的每个App代码都放在一个dex文件中,系统会把内部方法的索引保存在一个链表结构里,由于这个链表的长度变量是short类型(short类型的数字占两个字节共16位),使得链表的最大长度不能超过65536(2的16次方),因此App方法数超过65536的话,链表索引溢出就报错了。为了解决方法数过多的问题,Android推出了名叫MultiDex的解决方案,也就是在打包时把应用分成多个dex文件,每个dex的方法数量均不超过65536个,由此规避了方法数过多的限制。 若想让App工程支持MultiDex,需要对其略加改造,具体改造步骤说明如下。 首先要修改模块的build.gradle文件,往dependencies节点添加下面一行配置,表示导入指定版本的MultiDex库:

    02

    LeetCode笔记:70. Climbing Stairs

    总觉得这个题目小时候做过。一开始想着找找规律,按照全程走一个两节的、两个两节的、三个两节的这么去算,列了一下算式发现并没有什么规律。。。 后来想我每到一节都面临两个选择,即走一节还是走两节,于是想到用递归去做,不断返回在某一节为止走两节和走一节的走法数量之和。按照这种方法做了之后,一开始是能够解决的,测试到了44节楼梯的时候,就超时了,看了看答案给出的总走法数,确实是一个很大的数字,用递归要算的太多了。 既然往后面的走法去算走不通,那就往前看,我每来到一节新的位置的走法数量都是到上一节位置的走法数加上到上两节位置的走法数之和,一个是走一节楼梯到当前节,一个是走两节楼梯到当前节,这样从第二节开始去计算(第一节明显是一种走法,第二节开始才可以计算两节以前的位置走法数(即处于0位置时,设其为1)加上一节以前的位置走法数(即处于1位置时,设其为1)。)走到第二节的走法之和,慢慢算到最后一层。这里用一个数组去计算每一层的走法数。当然如果要节省空间也可以就用三个变量,只是每次去改变其值就可以了。

    01
    领券