Android4.0 的编译慢的解决方案

困扰:

最近由于项目中需要使用一些4.0的系统函数,从而把sdk调到4.0后,导致每次运行编译真是苦不堪言。有时一个小的界面布局的调整编译器也会编译半天,致使编程效率低下,开发进度也有所延迟。有神马办法可以即使用4.0的系统函数又可以不用升级现有的sdk版本。令boss爽,pm爽,自己也超爽的解决办法呢。下面就由小马我来给大家介绍一种解决方案。

 

解决方案:

以我们的项目为例来讲解解决方案。之前我们项目是使用2.1的sdk。现在是使用4.0的sdk编译速度很慢。现在我们来动手即使用4.0的系统函数又可以基本保持2.1的编译速度。我们把我们现有使用4.0的sdk项目打开,调整sdk为2.1。把报错的函数和类统统记录下来到一个文本文件(注:暂时命名为a.txt)。在分别修改4.0 和2.1的android.jar为android.zip(注:先分别做好4.0和2.1的android.jar的拷贝,以防止出问题可以恢复)。在拿出之前记录的a.txt。在4.0的android的压缩包中找到相应的函数和类。替换或者增加到2.1的压缩包中相对应的文件夹中。这样2.1的压缩包中就有了4.0的sdk的函数和类了。导致在把2.1的android.zip修改为android.jar。在android中加载该jar,移出之前4.0的sdk。这样就大功告成了。大家可以试一下是不是速度有了明显的改善。

 

风险:

由于这个不是标准的sdk的android.jar。所以这种方式是有风险:比如假设classA和classB和api级别是14(也就是android 4.0才有),且在classB中包含classA对象,classB中的一些函数调用了classA对象的函数。这样如果你只在迁移4.0的函数和类中,只把classB的类放到2.1的android.jar中,这样编译也不会报错,但是当运行classB对象调用函数且该函数又调用到classA的函数时就会crash。还有其他问题敬请各位网友补充。


注:

该方案最好只在开发过程中使用,如果对外发布apk的时候还是需要系统标准的sdk版本(比如我们项目是sdk 4.0)进行打包发布。由于该方案可能存在未知风险不可预知,所以只提供学习交流使用,也希望大家可以相互交流沟通。

你可能感兴趣的:(编程,android,api,Crash,编译器)