Android Studio引用Github类库&引起问题的解决方法
来源:互联网 发布:域名两个a记录 编辑:程序博客网 时间:2024/06/05 20:56
一般github上面的开源项目都会生成一个library(就是工具类库,可随意命名的),我们就是想要用里面的东西。
以开源项目https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh为例
点击Download Zip 下载到电脑。
解压后可以看到文件夹下面一个ptr-lib文件夹,里面就是library,你也可以导入进去Androidstdio里面看一下项目详情,但是有可能与你.gradle版本不一样而出错,可以参考这篇文章:Android Studio导入github项目详解,文章叫你如何导入github项目
我们新建一个项目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中加入一行
- 1
- 1
如下图所示
最后就是修改ptr-lib目录下的build.gradle,修改你的compileSdkVersion和buildToolsVersion
我的compileSdkVersion是19
buildToolsVersion是‘23.0.2’
或者改成与你app目录下的build.gradle,compileSdkVersion和buildToolsVersion一样也是可以的,如果还有错误就是Clean 一下你的project,重新编译。
引起的错误:
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,里面可以看到:
这句话告诉了Gradle将ModuleB编译称为application,也就是apk,这就是问题的所在;
解决方法:将上面该句改为:
此时,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:9is 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
- Android Studio引用Github类库&引起问题的解决方法
- Android Studio引用Github类库
- Android Studio引用GitHub上的库 viewPagerIndicater
- github制作你自己的Android studio依赖引用文件
- Android 页面回收引起的闪退问题的解决方法
- Android Studio 引用自定义属性的问题
- android studio 引用Module或者第三方librar引起的jar冲突
- android studio 不同module资源重名引起引用混乱
- std::string引用计数引起的问题
- python对象引用引起的问题
- 解决visual studio 2010引起的问题
- github项目导入Android studio 出现的问题及解决
- Android Studio 关于github的ssh key配置问题
- 浮动元素引起的问题和解决方法
- Android targetSdkVersion引起的问题
- android studio github的使用
- Github-Android Studio的配置
- Android进阶之AS如何处理不同引用库(module)里jar的重复引起问题
- 02-Keras之网络层思维导图
- 编译安装PHP
- Sublime Text 3 配置
- 嵌入式软件开发工程师谈软件架构的设计
- Python报错:(编码问题)SyntaxError: Non-ASCII character '\xe2' in file
- Android Studio引用Github类库&引起问题的解决方法
- EF框架从MySql生成模型时异常
- onpageshow 用户浏览网页时触发
- apache和php整合
- ajax学习笔记二-jsonp跨域
- SICP学习·第一章·第一节
- 在java中调用/执行python方法
- css中元素的定位
- java类初始化顺序