我有一个使用making use of delegate. After, push the second
动态加载库的Android应用程序。到目前为止,应用程序和库是在单独的项目中开发的。我想将项目整合到一个项目中(项目中的两个模块?)但我不知道如何使用Android Studio / Gradle实现它。请注意,我不想在应用程序和库之间添加静态依赖项。我想要达到的结果是:
有什么想法吗?
答案 0 :(得分:1)
如果您想将模块带入项目,可以在项目中编辑文件settings.gradle
以包含模块并提供其路径。
include ':app' //your project module name
include ':library' //your imported module name
project(':library').projectDir = new File("/<path_to_module_library>/other_project/library")
然后该模块将出现在您的项目中。
如果您转到项目gradle文件(例如:build.gradle),您现在可以将模块包含为项目依赖项。
dependencies {
...
compile project(':library')
...
}
修改强>
如果您只想自动将jar从库中复制到项目的assets文件夹,只需在库build.gradle中定义gradle task,如:
task copyTask(type: Sync) {
from '/<path_to_your_jar>/classes.jar'
into '/<path_to_your_project>/app/assets/'
}
这会将你的jar复制到你的资产文件夹。
要在编译代码时使用它,可以将此任务添加到运行/调试配置中。
答案 1 :(得分:1)
小米的回答给出了一个很好的方向,但最终的解决方案有所不同。
该项目将包含两个模块:一个用于应用程序,另一个用于库。应用程序模块将依赖于库,因此库将在应用程序之前构建。当JAR文件准备好后,它将被转换为DEX并复制到应用程序的资产库中。应用程序的构建活动将自动捆绑最终APK中的资产文件夹。
如果还没有,请将库模块包含在项目设置文件WS : (' '|'\r'|'\n'|'\t') -> channel(HIDDEN);
中:
settings.gradle
在include ':app', ':libmynewlibrary'
模块的build.gradle
中添加依赖项:
app
现在是棘手的部分。我们希望在创建JAR后立即添加自定义操作。幸运的是,Android Gradle插件有一个预定义的任务“jar” - 它显然构建了JAR。我们将在lib的dependencies {
...
compile project(':libmynewlibrary')
}
中添加一些内容。请注意,该任务是隐式的,根本不在gradle文件中。我们只是通过向其添加build.gradle
来扩展它:
doLast