构建依赖于Android Project Gradle的Java库

构建依赖于Android Project Gradle的Java库,第1张

概述我有一个Android项目,该项目定义了各种通过协议缓冲区序列化的数据类型.我希望有一个单独的Java项目,该项目能够在服务器上反序列化这些数据类型.我的项目结构如下:AndroidLibrary-Data-TypeA-TypeB-...JavaServer-Parser(dependson.Dat

我有一个Android项目,该项目定义了各种通过协议缓冲区序列化的数据类型.我希望有一个单独的Java项目,该项目能够在服务器上反序列化这些数据类型.

我的项目结构如下:

AndroID library  - Data      - TypeA       - TypeB      - ...Java Server  - Parser (depends on .Data)

在此示例中,数据包中的所有类都自行处理封送处理.

尝试构建Java Server时,它成功编译了AndroID项目,但最终失败,并显示Gradle无法找到引用的软件包.

注意,如果仅引入其他Java库,那么我可以成功构建具有跨项目依赖关系的Java Server,这使我相信这是Java->. AndroID依赖问题,而不是Gradle配置问题.

我考虑过的可能解决方案是从AndroID项目中提取所有这些数据类型,并将它们放在单独的Java库中.但是,这样做的麻烦在于,其中某些类仅提供了将AndroID特定类(SensorEvent,Location等)转换为可与ProtoBuf一起使用的类型的方法.我一直在考虑的一种解决方案如下所示:

Data Types  - TypeA  - TypeB  - ...AndroID library  - Data    - AndroIDTypeA (Class with AndroID Specific constructor that can be cast to the parent type)    - AndroIDTypeB    - ...Java Server  - Parser ( Depends on the Data Types module )  

尽管这确实可以解决我的问题,但它似乎并不是最佳解决方案.

有没有办法单独通过Gradle完成此任务?

作为参考,这里是我的build.gradle文件的缩写版本.

AndroID库:

apply plugin: 'com.androID.library'androID {    compileSdkVersion 21    buildToolsversion "21.0.2"    defaultConfig {        applicationID "com.foo.bar.androIDlib"        ...    }    buildTypes {        release {            runProguard false            proguardfiles getDefaultProguardfile('proguard-androID.txt'), 'proguard-rules.pro'        }    }}dependencIEs {    compile filetree(dir: 'libs', include: ['*.jar'])    ...    compile 'com.Google.protobuf:protobuf-java:2.6.1'}

Java服务器:

apply plugin: 'java'dependencIEs {    compile filetree(dir: 'libs', include: ['*.jar'])    compile 'com.Google.protobuf:protobuf-java:2.6.1'    compile project(':androIDlib')}

编辑:

特别是Gradle会出现以下错误:

error: package com.foo.bar.androIDlib does not exist

解决方法:

在Gradle中,您不能拥有依赖于AndroID库的Java库.这是因为Gradle中的AndroID插件不基于Java插件,并且与Java插件不兼容,因此Java无法理解其源集,否则无法很好地使用它.

我认为您不能仅通过Gradle配置解决此问题,即使可以,也可能会使您的构建异常复杂和脆弱.最好的选择是让Java东西仅依赖Java东西,隔离那里常见的protobuf依赖关系,并使AndroID端依赖Java.您概述了使用某些类的AndroID版本的方法.可能行得通,但是我不知道您要采取何种行动来对此进行详细评论,所以没有足够的细节.

总结

以上是内存溢出为你收集整理的构建依赖于Android Project Gradle的Java库全部内容,希望文章能够帮你解决构建依赖于Android Project Gradle的Java库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1089164.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存