根据this thread的说法,Buck目前还没有完整的多重处理支持-至少在从“官方”解决方案如何解决多重处理的意义上说不。
我感到困惑的是:如果仅使用Exopackage方式,是否可以解决此问题?我仍然可以使用Gradle(慢速)生成发布版本,并使用Buck的Exopackage解决方案进行日常开发。
我知道Exopackge将产生一个单一的主要shell .dex,其中包含次要dexes的加载代码。但是,Exopackage构建会产生多个辅助.dex文件,还是仅产生一个辅助.dex文件(将再次达到65k方法计数限制)?
最佳答案
Buck确实支持您使用Exopackage设置的multi-dex(我想您可以将Exopackage和扩展名称为buck)。这样您就可以超过65k的限制。我的项目超过65k,并且可以与Buck + Exopackage一起很好地工作。
这是我在使用Exopackage时的二进制参数
ANDROID_BINARY_PARAMS = {
'name' : 'pumpup',
'linear_alloc_hard_limit' : 16 * 1024 * 1024,
'use_linear_alloc_split_dex' : True,
'manifest' : 'AndroidManifest.xml',
'keystore' : ':debug_keystore',
'use_split_dex' : True,
'exopackage_modes' : ['secondary_dex'],
'primary_dex_patterns' : [
'^co/pumpup/app/AppShell^',
'^co/pumpup/app/BuildConfig^',
'^com/facebook/buck/android/support/exopackage/',
],
'deps': [
':main-lib',
':application-lib',
],
}
注意
use_split_dex = True
吗?这样你就没事了!
我这里有关于设置Buck的教程:
Buck Tutorial
附言确保以最佳速度安装watchman