在我的多模块
Android Studio项目中,我想创建一个普通的java模块.但在该模块中,我还希望能够使用某些Android API.这可能吗?如果是的话,build.gradle应该怎么样?
谢谢
佳
解决方法
只要您需要的Android功能是在jar而不是aar中,那么您应该能够相当轻松地完成此操作,因为我的团队有几个这样的工件.对于Maven Central中的Android jar工件,您只需添加依赖项:
compile 'com.google.android:android:4.1.1.4'
如果该功能位于通过Android SDK Manager安装的工件之一中,那么您可以像上面一样添加依赖项,但是您需要添加本地Android repo来提取工件:
maven { url "file:///${System.env.ANDROID_HOME}/extras/android/m2repository" }
编辑
也忘了提一下,你要标记所提供的Android工件,这样就不会产生依赖性冲突.您可以使用以下方法执行此操作:
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')