Android合并项目的一些坑

Android合并项目的一些坑

最近要把一些公司以前的项目(eclipse)作为module合并到一起

发现一些问题,写下文档来帮助自己记忆.也以便以后翻阅

先放一篇大神的总结:Android开发各类常见错误解决方案

坑一

多个Module依赖同一个jar的解决方法 :

将任意一个Module中的jar依赖为compile files('your jar name'),
其他需要依赖的地方改为provided files('your jar name')并且删除compile fileTree(include: ['*.jar'], dir: 'libs) 即可。
「jar需要复制到需要用到的module libs文件夹下」
下面详细介绍为什么这样做以及案例

===============分割线===============

AndroidStudio中Module相当于Eclispe中的Library,
这里不做过多介绍 多个Module依赖同一个jar,
直接把jar放入对应需要的Module会导致编译报类冲突 

这里就要讲一讲AndroidStudio中的依赖的几种方式 

compile
是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中。 

Provided
是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。 
APK 只会打包到apk文件中,而不参与编译,所以不能再代码中直接调用jar中的类或方法,否则在编译时会报错 

Test compile 
仅仅是针对单元测试代码的编译编译以及最终打包测试apk时有效,而对正常的debug或者release apk包不起作用。 

Debug compile 
仅仅针对debug模式的编译和最终的debug apk打包 

Release compile 
仅仅针对Release 模式的编译和最终的Release apk打包。 

我们需要用的是Provided,这样在写代码的时候可以在Module中正常使用jar中的类,
但是要有一个Module以compile的方式依赖这个jar,这样编译的时候只有一个jar编译进apk。 
注:使用Provided必须删除compile fileTree(include: ['*.jar'], dir: 'libs') 不然lib下的jar均按照compile方式引入到Module

</br>

坑二</br>

报错:Error:Execution failed for task ':ProjectName:mergeDebugResources'. > Crunching Cruncher some file or .9.PNG failed, see logs:

在build.gradle里添加以下两句:

aaptOptions.cruncherEnabled = false     
aaptOptions.useNewCruncher = false
sample.png

用来关闭Android Studio的PNG合法性检查的,直接不让它检查。
还是不行的话就把报错那张图片删除重做吧
</br>

坑三

报错:FATAL EXCEPTION: main
java.lang.NoSuchFieldError: No static field left_arrow of type I in class 
Lcom/yourprojectname/R$id; or its superclasses (declaration of 'yourprojectname.R$id' 
appears in /data/data/yourprojectname/files/instantrun/dex/slice-slice_9-classes.dex)

起因:文件名冲突,R文件存在多个同名id引发错误

解决方法:

其他module和APP module引用的xml布局文件同名,有可能导致后面的题库module会引用报错

所以尽可能把module的xml文件名改为与APP module的不一样就解决了.

例如:一般都会有的activity_main,把module的activity_main改成activity_othername

</br>

坑四

一些方法过时,或者一些包已经不能用了

GOOGLE吧,然后把过时的方法修改回来,然后重新添加一些包

还有就是其他module的View 的点击事件不能用try catch , 要注意了

</br>

坑五</br>

</br>

一些自定义的组件记得去布局文件里面修改包名哦~

</br>

坑六</br>

修改了Android项目的最小SDK版本之后出现很多stysle文件找不到

compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.example.name"
minSdkVersion 14
targetSdkVersion 23
}

compileSdkVersion 是多少版本的

那么compile 'com.android.support:appcompat-v7:23.2.1’ 就是啥版本的。
</br>

坑七

Android studio 编译问题:finished with non-zero exit value 2
报错:Error:Execution failed for task ':androidShopNC2014Moblie:transformClassesWithDexForDebug'.
>
com.android.build.api.transform.TransformException: 
com.android.ide.common.process.ProcessException: 
java.util.concurrent.ExecutionException: 
com.android.ide.common.process.ProcessException: 
org.gradle.process.internal.ExecException: 
Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' 
finished with non-zero exit value 2

解决方法:(这个错误在app的build.gradle里面添加下面这句就好了。)

android { 
defaultConfig { 
            multiDexEnabled true
       }
}

</br>

坑八

Error:Execution failed for task 
':app:transformClassesWithJarMergingForDebug'.> 
com.android.build.api.transform.TransformException: 
java.util.zip.ZipException:
 duplicate entry: org/apache/http/ConnectionClosedException.class

解决方法:

这个是在我们启动的时候报错的,而不是在编译的时候,
原因是存在了相同库或者库中的类名冲突了
stackoverflow上有人也提了这样的问题。
只需要删除其中的一个就可以解决了。

</br>

坑九

打包APK的时候出现冲突的错误:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'

解决方法:
1 , 删除相同包
2 , 请参考这个:stackoverflow上的一个回答
3 , 还有这个:AndroidStudio中包冲突问题(使用解析和Multidex重复条目 </br>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容