마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

build.gradle 파일을 살펴보면

0 추천

Error:Execution failed for task ':mod:prepareDebugDependencies'.
> Dependency Error. See console for details.
 

이런에러가 납니다

build.gradle 파일을 살펴보면

sourceSets.main {
    // Compile된 Native Library가 위치하는 경로를 설정합니다.
    jniLibs.srcDir 'src/main/libs'

    // 여기에 JNI Source 경로를 설정하면 Android Studio에서 기본적으로 지원하는 Native
    // Library Build가 이루어집니다. 이 경우에 Android.mk와 Application.mk를
    // 자동으로 생성하기 때문에 편리하지만, 세부 설정이 어렵기 때문에 JNI Source의
    // 경로를 지정하지 않습니다.
    jni.srcDirs = []
}

 

위의내용이 나오는데 

이클립스에서 사용하던 jni 를 안드로이드 스튜디오에서는 잘안되서

모두 지워버렸는데 위 항목이 남아있는것같습니다

위항목때문에 에러인것같은데 어떤식으로 고쳐야될까요?

모두 지워버려도 될런지...?

sourceSets.main

항목이 뭘 의미하는지 궁금합니다

구름처럼달처럼 (5,830 포인트) 님이 2016년 7월 22일 질문

1개의 답변

+1 추천
 
채택된 답변

sourceSets는 gradle 빌드에서 각 모듈 ( 기본 생성시 app이라는 어플리케이션 모듈이 있죠)이 빌드 될때 참조될 소스 세트를 가르킵니다.

보통 지정할 필요가 없지만 경로가 다른곳에 있게 된다면 정의해줘야 합니다.

sourceSets.main은 빌드시 연결할 소스셋트 중 main 항목 소스의 경로를 정의합니다.

원래 main의 jniLibs 기본 경로는 "src/main/jniLibs"입니다.

jniLibs.srcDir 'src/main/libs'

위 코드는 기본 경로를 쓰지않고 libs 폴더를 쓰겠다고 정의한거죠.

 

만약 flavor를 purchase, demo 처럼 만들게 되면 해당 flavor로 빌드 할때는 sourceSets.purchase, sourceSets.demo 처럼 정의해서 소스 경로를 빌드시스템에 알려줄 수 있죠.

jniLibs 폴더는 so파일의 디렉토리며, 현재 사용하는 so파일이 없다면 지우셔도 무방합니다.

 

그런데... 에러는 의존 항목에서 오류 나는거 보니 dependencies(외부라이브러리)의 compile 중 잘못된 것을 찾아보셔야 할 듯 한데요...

원격 저장소 형식이 잘못 되었다던가... jar이 아닌 라이브러리가  libs에 있다던가...

칠리님 (10,910 포인트) 님이 2016년 7월 25일 답변
구름처럼달처럼님이 2016년 7월 25일 채택됨
확신은 못하겠지만... libs폴더에 jar외 so파일을 넣어놓고 dependencies에서 compile fileTree 모든 파일로 하신건 아니신지..?
터미널 탭에서
./gradlew assembleDebug --info
해보시고 오류 로그를 찾아보세요.
더 자세히 보시려면
./gradlew assembleDebug --debug
로 해보시구요.

(윈도우에서는 ./ 안붙이고 그냥 gradlew 하면 되죠? 윈도우 cmd는 몇번 안써봐서 기억이...)
...