and*_*per 10 android facebook dexopt
似乎一些旧的Android操作系统(甚至可能是最新的操作系统)对每个应用程序可以容纳的代码量有限制.
正如我发现的那样,限制是在名为"LinearAlloc"的缓冲区上.
在2.2或2.3上,它大约是5-8 MB,我认为其他的是16或更多.
如果您的代码太大(并且应用程序可以达到此状态),您将无法在旧设备上安装应用程序,从而获得下一个错误(此处也会报告):
Installation error: INSTALL_FAILED_DEXOPT
Please check logcat output for more details.
Launch canceled!
Run Code Online (Sandbox Code Playgroud)
一种解决方案是尽可能多地删除代码和库,但在一些大型项目中,这样的事情很难做到.
我发现下一个链接谈论Facebook如何通过某种方式增加限制来解决这个问题:
此外,谷歌已经发布了如何通过动态加载代码来解决它:
http://android-developers.blogspot.co.il/2011/07/custom-class-loading-in-dalvik.html
Run Code Online (Sandbox Code Playgroud)
Facebook是如何做到的?
是否有可能以其他方式克服这个问题?
是否有任何免费库可以增加/消除此缓冲区的限制?
对于较新的Android版本有什么限制,如果有的话?
其他巨大的应用程序(和游戏)如何处理这个问题?他们把代码放到C/C++中吗?
是否会动态加载dex文件来解决这个问题?
小智 1
限制是方法引用的总数:
FB/Google 文章中描述的不执行任何操作和多 dex 方法之间的中间立场是使用 ProGuard 之类的工具来删除对 Java 级别未使用代码的引用。看:
| 归档时间: |
|
| 查看次数: |
1107 次 |
| 最近记录: |