4

ライブラリ プロジェクトがあり、別のクライアントがライブラリを使用しています。私のライブラリは GoolgePlayService と appcompat-v7 に依存しています。最近、ant の代わりに Gradle を使い始めました。そこで、andoird-library プラグインを使用し、library.aar ファイルをローカルの依存関係にプッシュしました。今私のTestAppで、ローカルのmavenからaarファイルをロードしましたが、mavenの中央リポジトリからdepeencyファイルをロードしていません。

以下は私のbuild.gradleファイルです

プラグインを適用: 'android-library'

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.0'
    }
}

apply plugin: 'maven'

version = "1.0.0_Build-1"
group = "com.sflibrary"

 repositories {
    mavenCentral()
 }

dependencies {
     compile ('com.google.android.gms:play-services:4.0.30') {
        exclude module: 'support-v4'
     }
     compile 'com.android.support:appcompat-v7:+'
     compile files('libs/android-support-v4.jar')
     compile files('libs/libGoogleAnalyticsServices.jar')
}


android {
    buildToolsVersion "17.0.0"
    compileSdkVersion 17
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 17
    }

    lintOptions {
        abortOnError false
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']

            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']

            renderscript.srcDirs = ['src']

            res.srcDirs = ['res']
            assets.srcDirs = ['assets']

        }


        instrumentTest.setRoot('tests')
    }

}

uploadArchives {
  repositories {
    mavenDeployer {
      repository(url: "file://${System.env.HOME}/.m2/repository/")
    }
  }
}

「gradle uploadArchives」を実行すると、ローカルの mavel リポジトリにアップロードでき、その pom ファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"  
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  <modelVersion>4.0.0</modelVersion>  
  <groupId>com.sflibrary</groupId>  
  <artifactId>library</artifactId>  
  <version>1.0.0_Build-1</version>  
  <packaging>aar</packaging>  
  <dependencies>  
        <dependency>  
           <groupId>com.google.android.gms</groupId>  
           <artifactId>play-services</artifactId>  
           <version>4.0.30</version>  
      <scope>compile</scope>  
    </dependency>  
    <dependency>  
      <groupId>com.android.support</groupId>  
      <artifactId>appcompat-v7</artifactId>  
      <version>+</version>  
      <scope>compile</scope>  
    </dependency>  
  </dependencies>  
</project> 

以下は私の TestApp build.gradle ファイルです apply plugin: 'android' apply plugin: 'maven'

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {

    compile('com.snapfish:library:1.0.0_Build-1@aar')
    compile files('libs/httpmime-4.2.1.jar')
}


android {
    buildToolsVersion "17.0.0"
    compileSdkVersion 17
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 17
    }

    lintOptions {
        abortOnError false
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']

            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']

            renderscript.srcDirs = ['src']

            res.srcDirs = ['res']
            assets.srcDirs = ['assets']

        }
        instrumentTest.setRoot('tests')
    }

}

I am getting below error

   Error Code:
        1
      Output:
        /opt/usr/dev/gradel/AndroidSDK/TestApp/build/res/all/debug/values/values.xml:1549: error: Error retrieving parent for item: No resource found that matches the given name '@style/Widget.AppCompat.Light.ActionBar.Solid'.  
        /opt/usr/dev/gradel/AndroidSDK/TestApp/build/res/all/debug/values/values.xml:1552: error: Error: No resource found that matches the given name: attr 'background'.  
        /opt/usr/dev/gradel/AndroidSDK/TestApp/build/res/all/debug/values/values.xml:1556: error: Error: No resource found that matches the given name: attr 'subtitleTextStyle'.  

ただし、TestApp build.gradle ファイルの依存関係セクションでライブラリの依存関係を再度指定すると、正常に動作します。これは、library.aar ファイルをローカルの Maven リポジトリからロードするが、maven 中央リポジトリから appcompat-v7 をロードしないことを意味します。

ここで何を間違えたのかわかりません。

よろしくお願いします Samba Damerla

4

2 に答える 2

1

現在、gradle は推移的な依存関係を処理しません

詳細については、この回答を参照してください: https://stackoverflow.com/a/20530181/115145

「推移的な依存関係が関係している場合でも、構成が現在解決されているプロジェクトのリポジトリ宣言のみが考慮されます。」

于 2014-02-21T19:43:44.480 に答える