Gradle warning
언제부터인지, Proguard가 안된다. 원인을 찾지 못하고 있다. 빌드하면, 8가지 Warning이 뜬다. 문득, Warning이 문제가 아닐까 하는 생각이 든다. Warning부터 하나 하나 처리해본 후 프로가드를 다시 적용해볼 셈이다.
Firebase Warning
Warning: The app gradle file must have a dependency on com.google.firebase:firebase-core for Firebase services to work as intended.
/*
경고 : app grad 파일에는 com.google.firebase : firebase-core for Firebase 서비스가 의도 한대로 작동하도록해야합니다.
*/
위의 경고를 보니 의아하다. Warning이 발생하고 있는 프로젝트는 Firebase의 ads, 와 database만을 사용하기 때문이다.
혹시 모르니, 아래와 같이 추가했다. 그랬더니, Warning이 사라졌다…. Firebase core는 대체 무엇이란 말인가…
implementation "com.google.firebase:firebase-core:$rootProject.firebase_core_version"
SystemUtils.java: uses or overrides a deprecated API
더이상 사용되지 않는 API를 사용하거나 대체합니다.
이 Warning과 더불어 나온 Warning은 아래와 같다.
SystemUtils.java:
uses or overrides a deprecated API.
Recompile with -Xlint:deprecation for details.
Some input files use unchecked or unsafe operations.
Recompile with -Xlint:unchecked for details.
막상 SystemUtils.java를 열어보면 어떤 API가 Deprecated 인지 알 수 없다. Deprecated 기호가 나타나지 않기 때문이다.
그래서 아래와 같이 모듈 수준의 build.gradle에 작성하고 빌드를 해야 정확히 알 수 있다.
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
빌드를 마치면 이제 좀 더 정확한 Warning이 나타난다. Warning 수는 당연히 기존보다 늘었다.!!
그러나, 정확히 어떤 Java파일이 문제이고, 어떤 라인, 어떤 코드가 문제인지 정확하게 짚어준다. 고맙다!!
...
[unchecked] unchecked conversion required: BaseAdapterDataModel<SelectableItem<Theme>>
found: BaseAdapterDataModel
[unchecked] unchecked cast
required: ArrayList<Object>
found: Object
[unchecked] unchecked cast
required: ArrayList<Object>
found: Object
...
Generate APK, Proguard 등에 영향이 미치지 않는다면
@SuppressWarnings("unchecked") // 이런 식으로.. 처리하자
이제, 즐겁게 개발하자 :))