2017-09-17 4 views
1

Android Studio 3.0 베타 6/gradle : 3.0.0-beta6을 사용 중입니다. 오늘은 컴파일에 문제가 있습니다.AndroidStudio 그래 클 빌드가 잠겨 있습니다. app : compileDebugJavaWithJavac room 사용

빌드를 시작하면 (Ctrl + F9) 작업이 중지됩니다. ":app:compileDebugJavaWithJavac" 1 시간 이상 기다려도 아무런 변화가 없습니다.

그래디 동조는 정상입니다. 문제는 단지 편집 일뿐입니다.

이 프로젝트는 안드로이드 스튜디오 버전에서 문제없이 다른 프로젝트를 컴파일 할 수 있기 때문에 내 프로젝트에서 문제라고 생각합니다.

나는이 probes에 많은 변화를 주었고 나는 그 문제가 어디에 있는지 정확히 알지 못했다.

내 Gradle을 파일이 포함되어 있습니다

implementation fileTree(include: ['*.jar'], dir: 'libs') 
implementation 'com.android.support:appcompat-v7:26.1.0' 
implementation 'com.android.support:design:26.1.0' 
implementation 'com.android.support:support-v4:26.1.0' 
testImplementation 'junit:junit:4.12' 
androidTestImplementation 'com.android.support.test:runner:1.0.1' 
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' 
compile 'com.jakewharton:butterknife:8.8.1' 
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' 
compile "android.arch.persistence.room:runtime:1.0.0-alpha9-1" 
annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha9-1" 
compile 'com.google.android.gms:play-services-vision:11.4.0' 
compile 'com.squareup.retrofit2:retrofit:2.3.0' 
compile 'com.google.code.gson:gson:2.8.1' 
compile 'com.squareup.retrofit2:converter-gson:2.2.0' 
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.1' 
compile 'com.google.guava:guava:21.0' 

나는 시도 :

  1. 가까운/프로젝트를
  2. 삭제 폴더를 다시/안드로이드 스튜디오
  3. 다시 설치 자바 JDK
  4. 클린 프로젝트를 다시 엽니 다. 그래 브레
  5. r 알약 백분율 파일 변경

그러나 문제는 계속됩니다.

어떤 아이디어? Thks.

편집 : 빌드가 성공적으로 실행

@Database(entities = {Task.class}, version = 1) 

: 나는이 속성을 언급 할 때 때문에 문제가 룸 지속성 도서관 관련이 있음을 발견했습니다.

이 내 데이터베이스 클래스 :

@Database(entities = {Task.class}, version = 1) 
public abstract class MainDatabase extends RoomDatabase { 

private static MainDatabase INSTANCE; 

public abstract MainDao mainDao(); 

private static final Object sLock = new Object(); 

public static MainDatabase getInstance(Context context) { 
     if (INSTANCE == null) { 
      INSTANCE = Room.databaseBuilder(context.getApplicationContext(), 
        MainDatabase.class, "tr.db") 
        .build(); 
     } 
     return INSTANCE; 
    } 
} 

그리고 이것은 내 엔티티 클래스입니다 :

@Entity(tableName = "tasks") 
public class Task { 

    @PrimaryKey 
    @SerializedName("TaskID") 
    @Expose 
    public int taskID; 

    @SerializedName("TaskNumber") 
    @Expose 
    public int taskNumber; 

    @Embedded 
    @SerializedName("ParentTask") 
    @Expose 
    public Task parentTask; 
} 

답변

0

Finnaly, 나는 해결책을 찾아 냈다.

Room 엔티티에서 재귀가 발생하면 빌드가 멈 춥니 다.

내가 재귀 제거하면 문제가 발생하지 않습니다

@Embedded 
@SerializedName("ParentTask") 
@Expose 
public Task parentTask; 

나는 샤워 잘못된 방법을 사용 하였다. 문서 (https://developer.android.com/topic/libraries/architecture/room.html#no-object-references)에 따르면

방은 엔티티 클래스 사이의 객체 참조를 허용하지