2014-10-30 2 views

답변

0

어떤 프로젝트 구조의 나머지가 생겼 : 내 build.gradle는 다음과 같은 종속성이?

는 특히, 당신은 기본적으로 Configuring RoboBlender for a large application using libraries - 종류에 해당하는 프로젝트를 생성합니다 안드로이드 스튜디오의 RoboBlender wiki

이후 버전을 읽을 수 있습니다. 아래

수정은 다음을 수행 :

  • 프로젝트에 대한 프로젝트에
  • 초보 모듈을 GuiceModule하는 포인터를 공급 build.gradle에

    1. 다시 정렬 종속


    diff --git a/app/build.gradle b/app/build.gradle 
    index 1e69cec..8450fff 100644 
    --- a/app/build.gradle 
    +++ b/app/build.gradle 
    @@ -34,9 +34,9 @@ android { 
    } 
    
    dependencies { 
    - provided 'org.roboguice:roboblender:3.0' 
        compile fileTree(dir: 'libs', include: ['*.jar']) 
        compile 'org.roboguice:roboguice:3.0' 
    + provided 'org.roboguice:roboblender:3.0' 
    } 
    
    project.tasks.withType(JavaCompile) { task -> 
    diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml 
    index 017d11e..dba9e49 100644 
    --- a/app/src/main/AndroidManifest.xml 
    +++ b/app/src/main/AndroidManifest.xml 
    @@ -8,6 +8,7 @@ 
         android:label="@string/app_name" 
         android:theme="@style/AppTheme" > 
         <meta-data android:name="roboguice.annotations.packages" android:value="org.jush.roboguice3test"/> 
    +  <meta-data android:name="roboguice.modules" android:value="org.jush.roboguice3test.GuiceModule"/> 
         <activity 
          android:name="org.jush.roboguice3test.MainActivity" 
          android:label="@string/app_name" > 
    


    package org.jush.roboguice3test; 
    
    import android.app.Application; 
    
    import com.google.inject.AbstractModule; 
    
    public class GuiceModule extends AbstractModule { 
        private Application application; 
    
        public GuiceModule(Application application) { 
         this.application = application; 
        } 
    
        @Override 
        protected void configure() { 
        } 
    } 
    
  • +0

    를 바랍니다. 전체 프로젝트는 https://github.com/jush/RoboGuice3Test 에서 찾을 수 있습니다. 오류 : "경로 :/data/app/org에서 org.jush.roboguice3test.AnnotationDatabaseImpl"클래스를 찾지 못했습니다. .jush.roboguice3test-1.apk " – jush

    +0

    "''AndroidManifest.xml'''에는''''''그리고 프로젝트에서 여러분의 모듈을 생성하십시오. 그것은 아주 비울 수 있습니다. –

    +0

    제안을 주셔서 감사하지만 그것을 추가했지만 도움이되지 않았다 : https://github.com/jush/RoboGuice3Test/commit/0726a14e447b81b5fd003fde0f0d03957a96e9e8 – jush

    1

    좋아, 그래서 내가 메인 클래스 MainActivity의 모든 주입을하지 않았기 때문에이 내부 AsyncTask의 주석 처리를 실행하지 않은 것으로 보인다. 따라서 어노테이션 데이터베이스가 생성되지 않았다.

    또한 익명 내부 클래스의 삽입이 지원되지 않는 것 같습니다. 따라서 AsyncTask은 적절한 클래스 여야합니다 (여전히 MainActivity 안에있을 수 있음).

    RoboGuice에게 내부 클래스를 검사하는 방법을 아직 알지 못했습니다. 외부 클래스에는 주사가 없습니다.

    +0

    이것을 파악할 수 있었습니까? – amadib

    +1

    아니요, [Dagger 2] (http://google.github.io/dagger/)로 전환하기로 결정했습니다. – jush

    0

    주석 처리를 트리거 한 이유는 무엇입니까? 나의 주요 활동에는 주사가있다. 메인 액티비티는 추상적 인 액티비티를 상속받습니다. 그 추상 액티비티는 RoboActivity로부터 상속받습니다.

    내가 roboguice 에 NoClassFound 예외가 더 이상 발생하지 않는 roboguice.annotations.packages을 설정,하지만 난 내가 사용 싶어 최초의 분사-개체에 대한 NullPointer 예외를 얻을 때.

    저는 이클립스를 사용하여 앱을 시작합니다.

    RoboBlender (RoboGuice.setUseAnnotationDatabases (false);)를 비활성화하면 주입이 작동합니다.

    +0

    당신의 활동이 RoboActivity로부터 물려 받았다면 그것은 내가 가진 것과는 다른 문제입니다. 또한 주석 데이터베이스를 사용하지 않으면 작동하는 것입니다. 따라서 주입이 작동하지만 db가 생성되지 않습니다. 또한 내부 익명 클래스의 주입을 트리거하는 방법을 찾지 못했습니다. 나는 그 자신의 수업으로 옮겨야 만했다. – jush

    +0

    Roboblender는 Eclipse에서도 작동합니까? AnnotationDatabaseImpl에서 noclassdeffound를 계속 가져 오면 클래스가 생성되지 않습니다. – Christine

    4

    수 있습니다 컴파일시에 생성되지만 그것은 당신을 도울 수 있습니다. 이유는 모르지만 RoboGuice 3.0 및 3.0.1에서는이 예외가 throw됩니다.다음과 같이 당신이해야 할 일은 당신의 MainActivity에서 데이터베이스에 대한 해제 주석입니다 :

    static { 
        RoboGuice.setUseAnnotationDatabases(false); 
    } 
    

    는 내가 안드로이드 매니페스트에 컴파일러 인수 및 메타 데이터를 추가 도움말을