是否有可能拥有一个普通的java库模块,取决于Android Studio中的Android SDK

前端之家收集整理的这篇文章主要介绍了是否有可能拥有一个普通的java库模块,取决于Android Studio中的Android SDK前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的多模块 Android Studio项目中,我想创建一个普通的java模块.但在该模块中,我还希望能够使用某些Android API.这可能吗?如果是的话,build.gradle应该怎么样?

谢谢

解决方法

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

如果该功能位于通过Android SDK Manager安装的工件之一中,那么您可以像上面一样添加依赖项,但是您需要添加本地Android repo来提取工件:

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

编辑

也忘了提一下,你要标记所提供的Android工件,这样就不会产生依赖性冲突.您可以使用以下方法执行此操作:

  1. configurations {
  2. provided
  3. compile.extendsFrom provided
  4. }
  5. dependencies {
  6. provided('com.google.android:android:4.1.1.2')
  7. }

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

编辑2

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

  1. apply plugin: 'java'
  2. apply plugin: 'maven'
  3. apply plugin: 'pmd'
  4. apply plugin: 'jacoco'
  5. apply plugin: 'findbugs'
  6. apply plugin: 'project-report'
  7. apply plugin: 'jxr'
  8.  
  9. group = 'com.example'
  10. archivesBaseName = 'project-name'
  11. version = '1.0.0-SNAPSHOT'
  12. sourceCompatibility = 1.7
  13.  
  14. configurations {
  15. provided
  16. compile.extendsFrom provided
  17. }
  18.  
  19. buildscript {
  20. repositories {
  21. maven { url 'http://repo1.maven.org/maven2/' }
  22. maven { url "http://jcenter.bintray.com" }
  23. }
  24.  
  25. dependencies {
  26. classpath('net.davidecavestro:gradle-jxr-plugin:0.1')
  27. }
  28. }
  29.  
  30. repositories {
  31. mavenCentral()
  32. if (project.hasProperty("mavenLocal")) {
  33. maven { url "${System.env.HOME}/.m2/repository" }
  34. }
  35. maven { url "file:///${System.env.ANDROID_HOME}/extras/android/m2repository" }
  36. }
  37.  
  38. dependencies {
  39. compile('com.google.code.findbugs:annotations:2.0.2')
  40. compile('com.google.code.gson:gson:2.2.4')
  41. compile('com.google.guava:guava:15.0')
  42. provided('com.google.android:android:4.0.1.2')
  43. testCompile('commons-io:commons-io:2.4')
  44. testCompile('junit:junit:4.11')
  45. testCompile('org.robolectric:robolectric:2.3')
  46. testCompile('org.mockito:mockito-all:1.10.8')
  47. }
  48.  
  49. test {
  50. dependsOn ':assemble'
  51. testLogging {
  52. showExceptions = true
  53. showStackTraces = true
  54. exceptionFormat = "full"
  55. events "passed","skipped","Failed"
  56. }
  57. }
  58.  
  59. javadoc {
  60. source = sourceSets.main.allJava
  61. classpath = test.classpath
  62. }
  63.  
  64. jacocoTestReport {
  65. dependsOn test
  66. description = "Generate Jacoco coverate reports after running tests."
  67. reports {
  68. xml.enabled false
  69. csv.enabled false
  70. html.destination "${buildDir}/reports/jacoco"
  71. }
  72. }
  73.  
  74. pmd.ignoreFailures = true
  75. pmdTest.enabled = false
  76. pmdMain.enabled = true
  77. pmdMain {
  78. reports {
  79. xml.enabled = false
  80. html.enabled = true
  81. }
  82. }
  83.  
  84. findbugs.ignoreFailures = true
  85. findbugs.excludeFilter = file('./findbugs-exclude-filter.xml')
  86. findbugsTest.enabled = false
  87. findbugsMain.enabled = true
  88. findbugsMain {
  89. reports {
  90. xml.enabled = false
  91. html.enabled = true
  92. }
  93. }
  94.  
  95. task wrapper(type: Wrapper) {
  96. gradleVersion = '2.1'
  97. distributionUrl = "http://services.gradle.org/distributions/gradle-${gradleVersion}-all.zip"
  98. }
  99.  
  100. task sourcesJar(type: Jar) {
  101. classifier = 'sources'
  102. from sourceSets.main.allSource
  103. }
  104.  
  105. task javadocJar(type: Jar) {
  106. classifier = 'javadoc'
  107. from "${projectDir}/build/docs"
  108. }
  109.  
  110. artifacts {
  111. archives sourcesJar
  112. archives javadocJar
  113. }
  114.  
  115. uploadSite.dependsOn(':check')
  116. check.dependsOn('sourcesJar')
  117. check.dependsOn('javadoc')
  118. check.dependsOn('jacocoTestReport')
  119. check.dependsOn('projectReport')
  120. check.dependsOn('jxr')

猜你在找的Java相关文章