接手项目第八天,
公司数据需要抓取同程订单信息,磨磨唧唧通过WebView带post参数获取到了json数据,当时还挺顺利的,心情也不错,然而乐极生悲。。。。。。。
在把获取到的json数据通过gsonformat转换成实体类对象的时候,也没什么,然而当我测试安装的时候,一直在gradle build running的进度条,然后经过漫长等待也没过,
报错cannot merge new index 65555 into a non-jumbo instruction!还有个什么non-zero exit value 2,百度上找了几个小时,有说是项目中存在同名的project或jar的,
也有说是jar包太多,要各种分包啊什么的等等。最后看自己那个实体类也还没被引用就报错,把这个实体类删掉就可以编译通过安装了,感觉还是方法太多超过了65555个靠谱点
,然后网上说有可以加一行代码,具体代码是什么也没记,因为那是对方法不限制,然而低版本的就安装不了该应用了,会报错。
网上找了下,感觉靠谱点的方法:
1.修改Gradle配置文件,启用MultiDex并包含MultiDex支持:
android { compileSdkVersion 21 buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies { compile 'com.android.support:multidex:1.0.0' }
android { compileSdkVersion 21 buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies { compile 'com.android.support:multidex:1.0.0' }
2.让应用支持多DEX文件。在MultiDexApplication JavaDoc中描述了三种可选方法:
在AndroidManifest.xml的application中声明android.support.multidex.MultiDexApplication;
如果你已经有自己的Application类,让其继承MultiDexApplication;
如果你的Application类已经继承自其它类,你不想/能修改它,那么可以重写attachBaseContext()方法:
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base); MultiDex.install(this);
}
在AndroidManifest.xml的application中声明android.support.multidex.MultiDexApplication;
如果你已经有自己的Application类,让其继承MultiDexApplication;
如果你的Application类已经继承自其它类,你不想/能修改它,那么可以重写attachBaseContext()方法:
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base); MultiDex.install(this);
}
参考自:http://www.jianshu.com/p/60065cd0197c
其实这篇是后来修改的,我自己解决的方法已经忘记了。。。只能现在找到别人的来做个笔记。我自己项目是没有继承这个MultiDexApplication。