使用 gradle 将独立的本地库包含到我的 android 应用程序中
Include independent local library to my android app with gradle
我很难将本地库作为我的 android 应用程序的依赖项使用 gradle。
主要是因为这个库是我的android应用所在项目之外的独立库。
据我了解,这可以使用 composite builds 来完成。所以我尝试使用它。
我创建了一个非常小的 repo 来说明我的问题:https://github.com/ampeixoto/composite-build-example
基本上我想添加 :my-external-lib
作为 :app
模块的依赖项
所以我在 my-composite-app\settings.gradle
中添加了 includeBuild '../my-external-lib'
。
到目前为止,如果我同步 gradle,我现在可以在项目结构中看到 my-external-lib
。
但是当我尝试将依赖项添加到 app\build.gradle
:
dependencies {
//Trying to add the dependency to my lib here
implementation project(":my-external-lib")
//other dependencies
}
同步时出现以下错误 gradle:
Caused by: org.gradle.api.UnknownProjectException: Project with path ':my-external-lib' could not be found in project ':app'.
at org.gradle.api.internal.project.DefaultProject.project(DefaultProject.java:659)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:484)
at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:196)
at org.gradle.internal.metaobject.CompositeDynamicObject.tryInvokeMethod(CompositeDynamicObject.java:98)
at org.gradle.internal.extensibility.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:34)
at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.tryInvokeMethod(BasicScript.java:135)
at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:77)
at build_4wxxt4nomiqq4pt98j577hegv$_run_closure2.doCall(C:\Projects\CompositeBuildExample\my-composite-app\app\build.gradle:42)
我觉得我遗漏了一些简单的东西,但不确定是什么...任何指针将不胜感激。
好的,找到问题了。需要在 my-external-lib\build.gradle
上添加 group 'com.example'
然后我可以添加依赖项,例如使用:
implementation "com.example:my-external-lib"
请参阅 commit 进行修复。
我很难将本地库作为我的 android 应用程序的依赖项使用 gradle。
主要是因为这个库是我的android应用所在项目之外的独立库。
据我了解,这可以使用 composite builds 来完成。所以我尝试使用它。
我创建了一个非常小的 repo 来说明我的问题:https://github.com/ampeixoto/composite-build-example
基本上我想添加 :my-external-lib
作为 :app
模块的依赖项
所以我在 my-composite-app\settings.gradle
中添加了 includeBuild '../my-external-lib'
。
到目前为止,如果我同步 gradle,我现在可以在项目结构中看到 my-external-lib
。
但是当我尝试将依赖项添加到 app\build.gradle
:
dependencies {
//Trying to add the dependency to my lib here
implementation project(":my-external-lib")
//other dependencies
}
同步时出现以下错误 gradle:
Caused by: org.gradle.api.UnknownProjectException: Project with path ':my-external-lib' could not be found in project ':app'.
at org.gradle.api.internal.project.DefaultProject.project(DefaultProject.java:659)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:484)
at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:196)
at org.gradle.internal.metaobject.CompositeDynamicObject.tryInvokeMethod(CompositeDynamicObject.java:98)
at org.gradle.internal.extensibility.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:34)
at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.tryInvokeMethod(BasicScript.java:135)
at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:77)
at build_4wxxt4nomiqq4pt98j577hegv$_run_closure2.doCall(C:\Projects\CompositeBuildExample\my-composite-app\app\build.gradle:42)
我觉得我遗漏了一些简单的东西,但不确定是什么...任何指针将不胜感激。
好的,找到问题了。需要在 my-external-lib\build.gradle
上添加 group 'com.example'
然后我可以添加依赖项,例如使用:
implementation "com.example:my-external-lib"
请参阅 commit 进行修复。