用android studio做项目的时候,想要实现某一功能的时候,会在github上看到类似的项目,想要直接拿来用,这样就省得自己造轮子了。
1、有的项目直接提供Gradle依赖的方式,这种最简单了,直接一行代码搞定,例如Volley
compile 'com.android.volley:volley:1.0.0'//这行代码要写在项目里的build.gradle的dependencies里面
https://github.com/mcxiaoke/android-volley
然后就直接可以用了
2、有的项目不提供这种方式,提供项目lib和test文件,要下载下来,手动将lib添加到项目中去,例如:
https://github.com/mik3y/usb-serial-for-android
作者本人也说明了使用lib的方式,但是我第一次用时,也遇到了一些问题。
作者说这样一行代码就可以,其他的一些简单的配置没说,我第一次用时先是遇到了这样的问题
Error:(26, 0) Project with path ':usbSerialForAndroid' could not be found in project ':app'.
网上找解决方法,发现要在settings.gradle里添加
include ':usbSerialForAndroid'
这里要说一下,我直接添加了了usbSerialForAndroid,examples就不用了。
然后重建gradle就可以用了。
3、还有项目的lib和test是在一起的,例如
https://github.com/handheldgroup/android-serialport-api
这个项目就是一整个项目在一起的,不能将整个项目添加进来,要将项目里的app文件夹作为lib添加。如果将app文件夹像刚才那样添加进来又会遇到这样的错误
Warning:Dependency SerialPortTest:android-serialport-api:unspecified on project app resolves to an APK archive which is not supported as a compilation dependency. File: D:\androidstudioproject\SerialPortTest\android-serialport-api\build\outputs\apk\android-serialport-api-release-unsigned.apk
这个意思就是现在这个项目不是一个library,而是一个application。将该项目里的build.gradle文件里的apply plugin改成:
apply plugin: 'com.android.library'
然后又遇到了下面的问题
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml:7:9-43
is also present at [SerialPortTest:android-serialport-api:unspecified] AndroidManifest.xml:13:9-38 value=(@drawable/icon).
Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:5:5-18:19 to override.
这里看到Manifest,问题应该就在这里,刚才将build.gradle里的application改成library,所以该项目里的Manifest文件里的application的代码应该全部注释掉,最后重建gradle就好了。
注:这个项目里还有JNI的问题,这个我后面的文章会说
上面就是总结的三种将开源项目作为库添加进现有项目中的方法。