导入项目到android studio中遇到的各种问题
最近学习一下别人的源码,于是在网上下载了各种源码,有17年的16年的等,本来是想直接找一个androidstudio项目,看着这些年份相对13年(Androidstudio问世)比较久远,猜想这些应该是androidstudio项目了吧,可是我所连续下载的三个都是eclipse项目。于是导入到androidstudio中出现了各种问题。
eclipse导出的android项目有两种,一种是供eclipse使用的,一种是供androidstudio使用的,两者的差别在于根目录下有么有build文件夹和build.gradle文件,有的就是androidstudio项目,没有的就是eclipse项目。“eclipse项目”不可以导入到androidstudio中。因为没有这两个文件(也没有其他某些文件)。
1下面的是eclipse项目
2下面这个是从eclipse中导出的androidstudio项目
3下面是正统的androidstudio中的项目
2,3是可以在androidstudio中运行的,当然,如果不嫌麻烦可以在androidstudio中新建一个项目,把所有的代码全部粘贴上去,在导入项目需要的jar包。
不得不说as使用的编译工具Gradle,由于Gradle还不是成熟的稳定版,所以导入别人项目时经常会出现编译问题,让人头大。
不过也可以解决这个问题的。首先在本地使用当前版本的Gradle创建一个正常的项目,保证可以编译通过即可。然后,用本地项目中的“gradle”文件夹和“build.gradle”文件,去替换要导入项目中的这两个文件夹。接下来在打开这样的项目,就可以使用本地的Gradle进行编译了。
不得不提的是在as中导入jar包时容易出现的问题。
当点击rebuildproject时,出现了
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
的错误
首先要明确一个知识点:androidstudio中的所有jar包都会添加到依赖中
出现这个问题,一定是build.gradle文件出错了,吧错误解决了就不会报错了,记住是一定,一定,一定。重要的事情说三遍!!!
其实在解决这个错误的时候,别人的博客上都是写得“一般”,可能他们有些保留吧,但是,我为什么要这样说“一定”呢?
在解决bug的时候,我一般有个重大毛病,就是抱着试试的态度,然后按照别人博客上说的做,行就解决了bug(偶尔会做一下笔记),不行就换一个。而没有正真地大胆地猜想,假设,如果我的确是他这个问题,为什么我的还不能解决?是不是我的错误和他的同源异路?是不是应该这样做?这样当你在另一条路解决相同的bug的,然后和别人的错误相结合,这样总结出的知识就能让你对此方面的bug解决起来得心应手。
既然说到这,就说说我解决bug的规则吧
1:半小时之内没有找到bug的解决途径,或者没有解决思路的话,就不在耗费时间了,留着下一天解决。如果还没有解决的话,就只有请教大牛了。
2:在bug的死胡同里转来转去,花了两三个小时,明明解决了一个,有出现了新的bug,解决了这个又出现了另外一个。对于这样的bug,如果花了三个小时还没有解决的话,我选择静静。留着过夜,明天再会吧。
继续回到上面
在导入一个maven库(
Maven仓库就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,这节省了磁盘资源。
)中的jar包时,一直出现上面的错误,打开buildgradle文件,发现某一个依赖出现以下提示:Avoid using bundled version of Google Play services SDK,google之。
it is because play-services has contains alot of dependencies inside it.. look here.. developers.google.com/android/guides/setup.. choose any dependencies you want to use instead of using all of them.
应该导入它下面的子jar包,如是照做,打开projectstructure->app->denpendencise,然后点击右边的“+”,选择第一个,在里面找到了
com.google.android.gms:play-services
这样的依赖包,有四个,第一个是总体的,下面三个是单独的功能,只到如这三个jar包(我是由于只导入第一个而出的错)
另外,在导入
compile 'com.android.support:appcompat-v7:26.1.0'
时,总是出错,后来才知道是第三方库的支持库版本问题。下面是添加依赖时的错误提示:
all com.android.support libraries must use the exact same version specification(mixing versions can lead to runtime crashes
去改第三方库所用的支持库版本比较麻烦,如果用的库很多的话工作量很大。这个时候我们可以考虑强制让所有模块都用相同的支持库版本。
在app build.gradle中添加:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.2.0'
}
}
}
}
其中,25.2.0就是你要使用的支持库版本号,你可以根据需要改成其它的。
文章到此,欢迎批评指正,谢谢大家!