6

Android Maven プロジェクトがあり、 Google Guice 3.0を使用したいと考えています。

Android と互換性のある「No-AOP」バージョンの Guice があります。

「No-AOP」バージョンのに指示するにはどうすればよいですか?

更新 1 (2013 年 3 月 5 日 10:46 MSK):

Google Guice への依存関係を追加すると、ビルド中に次の例外が発生します ( mvn clean install):

[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Lcom/google/inject/Abs
tractModule;
[INFO]  at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:12
3)
[INFO]  at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
[INFO]  at com.android.dx.command.dexer.Main.processClass(Main.java:490)
[INFO]  at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459)
[INFO]  at com.android.dx.command.dexer.Main.access$400(Main.java:67)
[INFO]  at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398)
[INFO]  at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpen
er.java:245)
[INFO]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.j
ava:131)
[INFO]  at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java
:109)
[INFO]  at com.android.dx.command.dexer.Main.processOne(Main.java:422)
[INFO]  at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333)
[INFO]  at com.android.dx.command.dexer.Main.run(Main.java:209)
[INFO]  at com.android.dx.command.dexer.Main.main(Main.java:174)
[INFO]  at com.android.dx.command.Main.main(Main.java:91)
[INFO] 1 error; aborting

ここに私の依存関係があります:

<dependencies>
    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android</artifactId>
        <version>4.1.1.4</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>3.0</version>
        <classifier>no_aop</classifier>
    </dependency>

    <!-- Make sure this (robolectric dependency) is below the android dependencies -->
    <dependency>
        <groupId>com.pivotallabs</groupId>
        <artifactId>robolectric</artifactId>
        <version>1.0-RC4</version>
    </dependency>
    <dependency>
        <groupId>org.achartengine</groupId>
        <artifactId>achartengine</artifactId>
        <version>1.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.easytesting</groupId>
        <artifactId>fest-assert-core</artifactId>
        <version>2.0M8</version>
    </dependency>
    <dependency>
        <groupId>ru.altruix</groupId>
        <artifactId>ccp-commons</artifactId>
        <version>1.0.2</version>
    </dependency>
    <dependency>
        <groupId>ru.altruix</groupId>
        <artifactId>commons</artifactId>
        <version>1.11</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.1.4</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.1.4</version>
    </dependency>
</dependencies>
4

3 に答える 3

10

no_aop次のように分類子として 指定する必要があります。

<dependency>
   <groupId>com.google.inject</groupId>
   <artifactId>guice</artifactId>
   <version>3.0</version>
   <classifier>no_aop</classifier>
</dependency>
于 2013-05-03T06:23:57.140 に答える
1

Googleは、リフレクション パフォーマンスのため、Android での Guice の使用を推奨していません。使用できる最後のno_aopバージョンは次のとおりです。

compile 'com.google.inject:guice:2.0-no_aop'

'com.google.inject:guice:3.0-no_aop'は、maven リポジトリーだけでなく、'com.google.inject:guice:4.1.0-no_aop'.


'com.google.inject:guice:4.1.0Android で次のようにクラッシュします。 com.google.common.util.concurrent.ExecutionError: java.lang.ExceptionInInitializerError

compile ('com.google.inject:guice:4.1.0') {
   exclude group: 'aopalliance', module: 'aopalliance'
}

でクラッシュしますNoClassDefFoundError: org.aopalliance.intercept.MethodInterceptor

于 2017-02-17T15:11:38.257 に答える