이번 글은 webnautes님께서 작성해주신 방법으로 진행하다가 제게 생긴 에러의 해결법을 공유하고자 합니다.
능력자이신 분을 찬양하며, 제가 참고한 글의 링크입니다.
http://webnautes.tistory.com/923
불가피하게 구 버전에서 작업하게 되어 안드로이드 스튜디오 2.1.2로 작업하게 되었습니다.
제게 발생한 에러는 모두 버전이 낮아서 생긴 문제였기 때문에, 저처럼 구버전으로 작업하시는 분들께 도움이 될 것 같습니다.
개발 환경
- Windows 10
- Android Studio 2.1.2
- OpenCV 3.2.0
- Android API Level 26
에러 문구는 간단히 요약하여 적겠습니다.
1. NDK integration is deprecated in the current plugin.
-> gradle.properties에서 android.useDeprecatedNdk=true 를 작성해주시면 됩니다.
2. Gradle dsl method not found externalnativebuild.
-> build.gradle에서 classpath 'com.android.tools.build:gradle:2.2.0' 으로 변경 (2.2.0이상의 버전에서만 지원한다고 합니다.)
3. Error: minimum supported gradle version is 2.14.1.
-> gradle-wrapper.properties에서 distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 으로 변경
2, 3번의 경우 저는 최소버전에 맞춰 변환했지만 아래 내용을 참조하여 유동적으로 최신버전을 맞추어도 됩니다. 2번 에러 해결 후 3번 에러가 나는 이유는 Plugin version과 Required Gradle version이 맞지 않기 때문에 생기는 문제입니다.
여기까지가 구버전에서 webnautes님의 글대로 진행했을 때의 에러 해결법입니다. 이 후 정상적으로 동작하는 것을 확인하였으며, 이 외에 생기는 에러들은 jni상의 헤더나 cpp파일에서 JNICALL이 잘못 적혔을 확률이 높습니다. 매개변수에 배열을 넣어주실 분들은 jnit value[]가 아니라 jintArray로 표현해야하니 혹시 처음 하시는 분들은 참고하시기 바랍니다. 전 이것 때문에 많이 해맸거든요..
출처
개발 환경 설치 법 - http://webnautes.tistory.com/923
2번 에러 - https://stackoverflow.com/questions/39506379/could-not-find-method-externalnativebuild-for-arguments
3번 에러 - https://developer.android.com/studio/releases/gradle-plugin.html