Android Studio引用Github类库&引起问题的解决方法

来源:互联网 发布:域名两个a记录 编辑:程序博客网 时间:2024/06/05 20:56

一般github上面的开源项目都会生成一个library(就是工具类库,可随意命名的),我们就是想要用里面的东西。 
以开源项目https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh为例 
点击Download Zip 下载到电脑。 
图1

解压后可以看到文件夹下面一个ptr-lib文件夹,里面就是library,你也可以导入进去Androidstdio里面看一下项目详情,但是有可能与你.gradle版本不一样而出错,可以参考这篇文章:Android Studio导入github项目详解,文章叫你如何导入github项目

图2

我们新建一个项目AS项目HelloApplication,被我画掉的是已经导入成功的两个library 
这里写图片描述

依次点击File - New - Import Module… 
在新出现的弹窗点击Source directory右侧的按钮,找到你解压的路径的ptr-lib文件夹 
库名字可以修改,也可以不修改 
这里写图片描述
点击Finish,这样你就导入成功了 

settings.gradle  include ':lib'
  注意,gradle使用:作为路径分隔符。这样Android Studio就知道了我们的类库放在哪里,当然这样还是不够的,要让项目能使用类库,我们还需要添加这个类库作为项目的依赖,选择File->Project Structure,然后选中主module的名称,点击dependencies,添加:ShunixDevKit:lib就可以了,gradle的build就能成功。


接下来打开你app目录下的build.gradle,在dependencies中加入一行

compile project(':ptr-lib')
  • 1
  • 1
如下图所示

这里写图片描述
最后就是修改ptr-lib目录下的build.gradle,修改你的compileSdkVersion和buildToolsVersion 
我的compileSdkVersion是19 
buildToolsVersion是‘23.0.2’ 
或者改成与你app目录下的build.gradle,compileSdkVersion和buildToolsVersion一样也是可以的,如果还有错误就是Clean 一下你的project,重新编译。 
这里写图片描述



引起的错误:

问题1:

Android Studio解决unspecified on project app resolves to an APK archive which is not supported

   

          出现该问题unspecified on project app resolves to an APK archive which is not supported as a compilation dependency的情形可能是:创建了两个Module,其中一个Module依赖另一个Module而导致了出现该问题;

          如果在Android Studio中,有ModuleA和ModuleB,我们希望ModuleA依赖ModuleB,运行时候可能会出现该问题,查看被依赖的ModuleB的build.gradle,里面可以看到:

[html] view plain copy
  1. apply plugin: 'com.android.application'  

这句话告诉了Gradle将ModuleB编译称为application,也就是apk,这就是问题的所在;


解决方法:将上面该句改为:

[html] view plain copy
  1. apply plugin: 'com.android.library'  

此时,Gradle将编译称为一个Library,也就是库,运行之后,如果出现这个问题:Error:Library projects cannot set applicationId. applicationId is set to 'package_name' in default config.,那是因为一个库不允许设置applicationId,需要将builde.gradle — android — defaultConfig中的applicationId删除;



如果说,我们ModuleB仍然需要生成apk,则我们需要将其中公共的代码放到一个Module,作为一个support的库;

问题二:

Error:(26, 9) Attribute application@icon value=(@drawable/logo) from AndroidManifest.xml:26:9

Error:(28, 9) Attribute application@theme value=(@style/ThemeActionBar) from AndroidManifest.xml:28:9
is also present at XXXX-trunk:XXXXLib:unspecified:15:9 value=(@style/AppTheme)
Suggestion: add 'tools:replace="android:theme"' to <application> element at AndroidManifest.xml:24:5 to override
Error:Execution failed for task ':XXXX:processDebugManifest'.

> Manifest merger failed with multiple errors, see logs


原因:

AS的Gradle插件默认会启用Manifest Merger Tool,若Library项目中也定义了与主项目相同的属性(例如默认生成的Android:icon和android:theme),则此时会合并失败,并报上面的错误。


解决方法有以下2种:

方法1:在Manifest.xml的application标签下添加tools:replace="android:icon, android:theme"(多个属性用,隔开,并且记住在manifest根标签上加入xmlns:tools="http://schemas.android.com/tools",否则会找不到namespace哦)

方法2:在build.gradle根标签上加上useOldManifestMerger true (懒人方法)


参考官方介绍:

http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger



0 0
原创粉丝点击