Android studio 导入另一个项目做为依赖包

把一个项目做为library导入到另一个项目中:
1.启动AndroidStudio,打开你须要接收Library的项目。好比有两个项目,项目A,Library项目B,那么打开项目A。
2.在下拉菜单中依次找到New→Module→Import Gradle Project,点Next。选择你要导入的Library。
这里写图片描述
点击Module:
这里写图片描述
3.在打开的窗口中点击右侧的”…”浏览窗口,在文件夹窗口中找到你要导入的Library项目的位置,选择后点击底部的OK按钮导入。android

4.导入窗口中显示了该Module(项目)的详细信息,点击Finish完成导入。须要注意的是导入到AndoridStudio项目中的Library也必须是AndroidStudio项目,不能是Eclipse项目,若是是Eclipse项目的话,须要选择导出AndroidStudio项目。
5.在项目首页中选择Project标签,能够看到项目的文件结构图中多出了咱们刚才导入的项目。Library的导入就完成了。web

接下来是一些配置,把该library导入到主项目中app

1.点击顶部左上角的File菜单,在出现的下拉菜单中找到Project Structure,点击进入。
2.在窗口左侧选择原始的项目后,点击右侧的Dependencies(依赖项)。能够看到项目当前引用的jar包等信息。
3.点击右侧的“+”添加按钮,在下拉菜单中找到Module Dependency(项目依赖),点击打开项目选择窗口。
4.选择前面步骤中导入的Library项目后,点击OK按钮导入到原始项目中。
5.原始项目的依赖项中就出现了导入的Libray项目,这时在项目中就能正确引用Library项目中的内容了,点击底部的OK按钮完成添加。
在过程当中会遇到的问题:
问题1:
Error: AndroidStudio TransformException : Error:Execution failed for task’:app:transformClassesWithDexForDebug’
解决方案:
在你的主项目的build.gradle文件中,增长加粗的那一行
Android {
compileSdkVersion ..
buildToolsVersion ‘…’
defaultConfig {

targetSdkVersion ..
multiDexEnabled true // this line will solve this problem
}
}
问题2:
Error :unspecified on project app resolves to an APK archive which is not supported
解决方案:
在咱们做为library的项目里,他的头部是apply plugin: ‘com.Android.application’
这句话告诉了Gradle将咱们要做为library的项目编译称为application,也就是apk,这就是问题的所在;
方法就是,将上面该句改成:apply plugin: ‘com.android.library’ 后,别急 还有问题,Gradle将其编译称为一个Library,也就是库,运行以后,会出现
Error :Libraryprojects cannot set applicationId. applicationId is set to ‘package_name’ indefault config.
那是由于一个库不容许设置applicationId,须要将builde.gradle — android — defaultConfig中的applicationId删除。svg

问题3:
Error:Error:Executionfailed for task ‘:greencar:processDebugManifest’.> Manifest merger failed withmultipleerrors, see logs。
缘由:AS的Gradle插件默认会启用Manifest Merger Tool,若Library项目中也定义了与主项目相同的属性(例如默认生成的android:icon和android:theme),则此时会合并失败,并报上面的错误。
解决方案:
在manifest根标签上加入xmlns:tools=”http://schemas.android.com/tools”,并在Manifest.xml的application标签下添加tools:replace=”name,icon, label,heme”gradle

以及在主项目的 manifest文件中,重复写了 call_phone的权限,网上也有人是某个activity下多写了一句intent-filter,里面没有内容,将这些重复的空的删掉就好,并将做为lib的minisdk与主项目同步(修改library飞build.gradle文件中最小sdk,或者下降主项目的sdk)ui

问题4:
error:在做为library的项目中报错:须要常量表达式
解决方案:
在通常的Android项目中,R类的常量都是用final定义的,但ADT 14以后,若是在library 项目中,它会没有final关键字,而咱们在做为library的项目中使用了switch ,在switch语句的case中,若是使用 R.id.xxx 则会提示有问题,不容许很是量在case语句中。
Google提供的一个方法就是把它转化为if-else语句。this