gpt4 book ai didi

android - 是否有可能在 Android Studio 中有一个依赖于 android SDK 的普通 java 库模块

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:41 25 4
gpt4 key购买 nike

在我的多模块 Android Studio 项目中,我想创建一个纯 Java 模块。但是在那个模块中,我还希望能够使用某些 Android API。这可能吗?如果是,build.gradle 应该是什么样子?

谢谢家

最佳答案

只要您需要的 Android 功能在 jar 而不是 aar 中,那么您应该能够相当轻松地完成此操作,因为我的团队有几个这样的 Artifact 。对于 Maven Central 中的 Android jar Artifact ,您只需要添加依赖项:

compile 'com.google.android:android:4.1.1.4'

如果该功能位于通过 Android SDK 管理器安装的 Artifact 之一中,那么您只需添加上述依赖项,但您需要添加本地 Android 存储库以提取 Artifact :

maven { url "file:///${System.env.ANDROID_HOME}/extras/android/m2repository" }

编辑

另外忘记提及,您需要将 Android Artifact 标记为已提供,这样您就不会发生依赖性冲突。您可以使用以下方法做到这一点:

configurations {
provided
compile.extendsFrom provided
}
dependencies {
provided('com.google.android:android:4.1.1.2')
}

如果您需要示例 build.gradle,请告诉我,我会添加一个。

编辑2

下面是我们在其中一个项目中使用的示例 build.gradle。

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'pmd'
apply plugin: 'jacoco'
apply plugin: 'findbugs'
apply plugin: 'project-report'
apply plugin: 'jxr'

group = 'com.example'
archivesBaseName = 'project-name'
version = '1.0.0-SNAPSHOT'
sourceCompatibility = 1.7

configurations {
provided
compile.extendsFrom provided
}

buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2/' }
maven { url "http://jcenter.bintray.com" }
}

dependencies {
classpath('net.davidecavestro:gradle-jxr-plugin:0.1')
}
}

repositories {
mavenCentral()
if (project.hasProperty("mavenLocal")) {
maven { url "${System.env.HOME}/.m2/repository" }
}
maven { url "file:///${System.env.ANDROID_HOME}/extras/android/m2repository" }
}

dependencies {
compile('com.google.code.findbugs:annotations:2.0.2')
compile('com.google.code.gson:gson:2.2.4')
compile('com.google.guava:guava:15.0')
provided('com.google.android:android:4.0.1.2')
testCompile('commons-io:commons-io:2.4')
testCompile('junit:junit:4.11')
testCompile('org.robolectric:robolectric:2.3')
testCompile('org.mockito:mockito-all:1.10.8')
}

test {
dependsOn ':assemble'
testLogging {
showExceptions = true
showStackTraces = true
exceptionFormat = "full"
events "passed", "skipped", "failed"
}
}

javadoc {
source = sourceSets.main.allJava
classpath = test.classpath
}

jacocoTestReport {
dependsOn test
description = "Generate Jacoco coverate reports after running tests."
reports {
xml.enabled false
csv.enabled false
html.destination "${buildDir}/reports/jacoco"
}
}

pmd.ignoreFailures = true
pmdTest.enabled = false
pmdMain.enabled = true
pmdMain {
reports {
xml.enabled = false
html.enabled = true
}
}

findbugs.ignoreFailures = true
findbugs.excludeFilter = file('./findbugs-exclude-filter.xml')
findbugsTest.enabled = false
findbugsMain.enabled = true
findbugsMain {
reports {
xml.enabled = false
html.enabled = true
}
}

task wrapper(type: Wrapper) {
gradleVersion = '2.1'
distributionUrl = "http://services.gradle.org/distributions/gradle-${gradleVersion}-all.zip"
}

task sourcesJar(type: Jar) {
classifier = 'sources'
from sourceSets.main.allSource
}

task javadocJar(type: Jar) {
classifier = 'javadoc'
from "${projectDir}/build/docs"
}

artifacts {
archives sourcesJar
archives javadocJar
}

uploadSite.dependsOn(':check')
check.dependsOn('sourcesJar')
check.dependsOn('javadoc')
check.dependsOn('jacocoTestReport')
check.dependsOn('projectReport')
check.dependsOn('jxr')

关于android - 是否有可能在 Android Studio 中有一个依赖于 android SDK 的普通 java 库模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28310912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com