[안드로이드] android Lint에 대해+UnusedMaterialScaffoledPaddingParameter 해결하기

Lee Yongin·1일 전
0

안드로이드

목록 보기
25/27

에러

원래 이런 건 잘되다가 갑자기 나온다. 'Execution failed for task :app:lintDebug'가 발생했다.

원인

잘 보면 새로 추가했던 google material Scaffold 컴포넌트에 문제가 있다고 한다. 아래 내용을 보자면, UnusedMaterialScaffoldPaddingParameter 이슈는 Scaffold 함수의 content 람다에 포함된 padding 파라미터를 무시하는 경우에 발생한다고 한다. padding 파라미터를 꼭 사용해야 하는 이유는 콘텐츠가 앱 바에 의해 가려지거나, 시각적 문제(레이아웃 깨짐)나 UI 요소와의 상호작용 문제(버튼 클릭 불가능 등)가 발생할 수 있기 때문이다.

Explanation for issues of type "UnusedMaterialScaffoldPaddingParameter":
The content lambda in Scaffold has a padding parameter which will include
any inner padding for the content due to app bars. If this parameter is
ignored, then content may be obscured by the app bars resulting in visual
issues or elements that can't be interacted with.

아래와 같이 MaterialScaffold는 content람다를 제공하는데 람다의 padding 매개변수가 포함되어 있다. paddingValues를 content의 modifier에 추가해주면 해결된다.

 @Composable
fun Scaffold(
    modifier: Modifier = Modifier,
    ...중략
    content: @Composable (PaddingValues) -> Unit
)

해결코드 예시

Scaffold(
        modifier = Modifier.fillMaxSize(1f).background(color = ColorPalette.Neautral100),
        bottomBar = {
            LoopyBottomNavBar(
                navigateToHome = navigateToHome,
                navigateToReport = navigateToReport,
                navigateToProfile = navigateToProfile
            )
        },
        content = { paddingValues ->
            Column(
                modifier = Modifier.background(color = ColorPalette.Neautral100)
                .fillMaxSize(1f)
                .padding(paddingValues), //추가해준다👊👊
                verticalArrangement = Arrangement.SpaceAround
            )
      	}
)

빌드 성공

Lint란 무엇인가

항상 빌드 테스크에 자주 나오는 단어가 바로 'lint'였던 것 같다.

Lint의 역할

Lint는 잠재적인 버그나 퍼포먼스 이슈를 위해 코드를 스캔한다.
스타일 이슈, 호환성 이슈, 보안 취약성, 접근성 이슈, gradle API의 사용을 확인한다.
아래의 그림은 Lint Tool이 어떻게 앱 소스 파일을 처리하는지 나타내고 있다. Lint는 정확성, 사용성, 보안성, 접근성, 퍼포먼스, I18n 총 6가지의 이슈 카테고리에 대해 결과를 낸다.
오늘 해결했던 UnusedMaterialScaffoldPaddingParameter 이슈는 아마 Performancce또는 Usability에서 문제가 되는 항목이었을 것으로 추정할 수 있겠다.

lint.xml 파일

설정 파일 중 하나로, 배제하고 싶거나 보안 레벨 문제를 커스터마이징해서 특정 lint checking 항목을 구체화할 때 사용할 수 있다.

lint tool

안드로이드 프로젝트의 커맨드라인에서 실행할 수 있는 정적 코드 스캐닝 도구이다. 안드로이드 앱의 퍼포먼스나 퀄리티에 영향을 미칠 수 있는 구조적인 코드 문제를 잡아낸다.

lint checking 결과

콘솔에서 볼수도 있고, 안드로이드 스튜디오의 Inspection Results 윈도우에서 볼 수 있다.(Inspection Results 관련 문서 참조)

Lint는 언제 실행되나

Lint는 IDE에서 앱이 빌드될 때 자동으로 실행된다.(태스크 lintDebug, lintRelease 등) 또는 아래와 같이 커맨드 라인으로도 실행된다.

./gradlew :app:lint

참고자료

https://developer.android.com/studio/write/lint

profile
⚡실력으로 말하는 개발자가 되자⚡p.s.기록쟁이

0개의 댓글