导入项目到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就是你要使用的支持库版本号,你可以根据需要改成其它的。

下面推荐一篇终极解决jar包和依赖问题的博客:

http://blog.csdn.net/u013134722/article/details/54602510

文章到此,欢迎批评指正,谢谢大家!


  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值