How to Deal with Problems When Migrating from Kotlin Android Studio Project to AndroidX (2019)

좋습니다, 그래서 이것은 후속 비디오입니다 내 이전 비디오로 Android Studio 프로젝트를 Android X로 마이그레이션하십시오

이것은 코 틀린 스에게 특유한 것입니다 나는 몇몇 함정에 대해서 이야기 할 것이다 전환 할 때 발생할 수있는 문제 안드로이드 X에 Kotlin 안드로이드 스튜디오 프로젝트 먼저 첫 번째 비디오를 확인하십시오 내가 몇 가지 것들을 마이그레이션을 수행해야합니다

하지만 그걸 본 후에, 여기 와서 이걸 보렴 나머지 단계를 거치도록하겠습니다 희망을 갖고 Kotlin 프로젝트를 시작하도록 그것을 변환하고 나중에 Android X로 이전합니다 시작합시다 (낙관적 인 하우스 음악) 본 적이 없다면 이 시리즈의 이전 비디오 이걸보기 전에 할 수 있습니다

이 동영상에서 몇 가지 문제를 보여 드리겠습니다 Android X를 사용하도록 코드를 마이그레이션 할 때 발생할 수 있습니다 그러나, 나는 토론하지 않을 것이다 마이그레이션 프로세스 자체를 자세히 설명하고, 그것은 이전 비디오에 있습니다 이제 화면에 해당 동영상에 대한 링크가 있습니다

이 동영상에 대한 설명에도 나와 있습니다 그리고 계속해서 우리는 이주 할 Kotlin 프로젝트를 가지고 있습니다 그럼 언제 어떻게되는지 봅시다 Android X를 사용하도록 이전합니다 그래서 저는 리팩토링 메뉴에 올 것입니다

Android X로 이전을 선택하겠습니다 이걸 염두에두면 화면에 표시하고있다 Android Studio의 경우 실행중인 경우 Android Studio 33 이제 내가 할 일은 도구를 사용하여 백업 zip 파일을 만든 다음 더블 팩터를 클릭 할거야 위의 폴더에 그 파일을 넣을 것입니다

현재 프로젝트 그래서 아무 방법도 없다 이 프로젝트에 추가됩니다 나는 지금 내가 가진 것을 대체 할 것이다

그리고 실제로 사용법을 스캔하고 있음을 알 수 있습니다 무엇이 업데이트되어야하는지 리팩토링 프로세스를 수행합니다 나는 또한 마지막 비디오에서 언급했다 다음과 같은 대화 상자가 나타날 수 있습니다 변화가 감지되었음을 보여 주거나 말하기

이 대화를 듣는다면, 재방송 검색 버튼을 클릭하십시오 그래도 그 순간 이상하게 행동합니다 아마도 두 번째 리팩토링 검토 창, 미리보기 창 말하지만 리팩토링 버튼은 없습니다 그 경우에는 창을 클릭하고 리팩토링 버튼을, 원래의 창에서, 하지만 제 경우에는 그 중 아무 것도 나오지 않았습니다 알았어, 이제 리팩토링 도구를 클릭 할거야

그리고 끝내려면 시간이 걸릴거야 통과하고 알아 내기 때문에 무엇이 업데이트되어야하는지, 그리고 실제로 적절한 구성 요소를 다운로드하려고합니다 완료되면 우리는 실제로 바뀐 것을 확인하려고합니다 좋아, 이제 끝내자 그래서 제일 먼저 우리가 할거야, 우린 갈거야

모듈의 빌드 도트 그라디언트 파일을 확인하십시오 그래서 저는 Gradle 스크립트로갑니다 모듈 앱을 살펴보십시오 우리가 만든 gradle 파일 아래로 스크롤하여 살펴 본다면 여기에 꽤 오래된 버전이 있습니다

우리는이 모든 버전들이 이제 새로운 버전을 사용할 수있게되었습니다 기본적으로 Android X는 빠르게 변화하고 있습니다 그 순간에 우리는 각 라이브러리의 릴리스 버전 그때 나는 이것을 쏘고있다 전구 몇 개를 클릭하면됩니다 이 첫 번째 항목을 제외한 모든 항목이 실제로 변경됩니다

그리고 내가 이것을 처음으로하지 않을 이유는 이 버전 번호를 별도로 정의하기 때문에, Android Studio는이를 변경하는 옵션을 제공하지 않습니다 그러나 나는 다른 모든 것들을 모두 통과 할 수있다 그리고 지금 할거야 그래서 저는 이것들 각각을 선택할 것입니다 그리고 변화

그리고 분명히 이것을함으로써 프로젝트를 다시 동기화해야합니다 나는이 모든 것을 끝내고 다 할 것입니다 알았어 그래서 나는 그 모든 것을 바꾸었다 내가 언급했던 그 첫번째 입구 이외의

그리고 지금 다시 동기화해야합니다 또는 지금 동기화를 클릭하여 동기화 할 수 있습니다 그러면 프로젝트가 다시 동기화됩니다 끝나면 볼 수 있습니다 그것의 각종 파일을 지금 다운로드하는, 화면 하단의 상태 표시 줄에 완료되면 우리는 모양을 가지고 어떤 문제가 발생했는지 확인하십시오

그리고 일반적으로 당신이 이것을 할 때 그것은 좋은 것입니다 프로젝트의 모든 파일을 검토하는 아이디어, 문제를 확인하십시오 하지만 지금 내가 말할 두 가지 주요한 것들은, 이 작업이 아직 완료되면 현재 사용하지 않은 수입입니다 잘못된 재정의뿐만 아니라 이 작업을 마무리하고 우리는 다시 와서 그것을 통해 갈 것입니다 알았어, 이제는 그레고리를 볼 수있어

프로젝트 빌드, 빌드가 완료되었습니다 방금 경고를 받았습니다 우리가 떠날거야, 우리는 그걸 바꾸려하지 않을거야 우리가 원하는 경우 수동으로 입력 할 수 있습니다 사실, 내가 왜 그렇게하지 않겠습니까? 수명주기 버전을 검토하고 변경하십시오

210 대시 알파 21 대시 0 대시

알파 2 그냥 해보고 다시 동기화하겠습니다 그냥 우리는 다른 경고가 없다 우리의 빌드 gradle 파일 좋아, 이제 너에게 보여주고 싶어

소개 될 오류 중 그래서 첫 번째가 열릴거야 일부 Kotlin 코드 및이 프로젝트에서 첫 번째 것은 날짜 선택기 조각입니다 클래스에서 살펴 보겠습니다 그리고 우리가 여기에있는 오류를 살펴 본다면, 우리가 그 위에 마우스를 가져 가면 볼 수 있습니다 첨부는 아무것도 무시합니다

그리고 그 이유는 서명은 Android X 코드에서 변경되었습니다 그래서 여기 52 행에서 컨텍스트 매개 변수 이 nullable 컨텍스트를 선언하십시오 Java에는 null 허용되지 않는 유형이 없습니다 하지만 Google은 주석을 추가하고 있습니다 Kotlin이 알 수 있도록 Android 프레임 워크 코드 일부 기능은 null 인수로 불려 갔다

그리고 그것은 실제로 여기서 일어난 일입니다 그리고 컨트롤이나 명령으로 볼 수 있습니다 슈퍼 첨부 기능을 54 번 라인에서 클릭하십시오 그래서 그렇게 할거야 우리는 지금 소스 코드를보고 있습니다

그리고 310 행에서 볼 수 있습니다 컨텍스트 매개 변수가 표시됩니다 그 주석을 사용해 null가 아닌 경우, 그래서 그것을 고치는 것은 매우 쉽습니다 우리가 할 수있는 것은 돌아온 것뿐입니다 매개 변수 유형에서 물음표를 제거하십시오

사용 된 컨텍스트 인수 함수 내부 및 nullable 유형 마커, 내가 한 것처럼, 이제 우리에게 경고를 주었고 그것은 불필요한 것입니다 안전한 전화 교환 원, 여기 57 번 줄에 있습니다 Android X 라이브러리는 Google이 있기 때문에 Kotlin에서 사용 이러한 null이 아닌 주석을 추가합니다 안전 호출 연산자를 그렇게 많이 사용할 필요는 없습니다 지금 기능을 무시할 때

내가 할 일은 그 안전한 전화를 지우는 것이다 우리는 다음 문제가 무엇인지 알게 될 것입니다 이제 우리는 중복 된 것을 볼 수 있습니다 to 문자열을 호출하십시오 내가 보여줄 수있는 예제가 필요했다

Android X가 코드를 변경하는 방식 하지만 그 라인은 현재 일을 마쳤고 따라서 to 문자열 함수 호출을 삭제할 수 있습니다 그래서 나는 그것을 할거야, 난 그냥 갈거야 달러 문맥에서 벗어나이 코드의 나머지 부분을 삭제하십시오 권리 좋아, 그 수업을 고쳤어

내가 바라는 다음 일은 커서 리사이클 뷰 어댑터 클래스 이제 가져 오기 섹션에서 찾을 수 있습니다 사용하지 않은 가져 오기가 실제로 표시됩니다 내 경우에는 그다지 올랐지 만 그것은 당신을 위해 올지도 모릅니다 그러나 문제는 완전한 자격으로 인해서 온다

마이그레이션 프로세스가 실제로 채택한 이름 예를 들어 17 행에서 볼 수 있습니다 안드로이드 X dot recycler보기 도트 위젯 이것은 리사이틀 뷰의 정규화 된 이름입니다 그래서 나는 그것을 제거 할 것입니다 그리고 수입을 받아 들일 것입니다

알았어 그래서 내가 실제로 고쳤다 다시 돌아가서 그 코드를 그대로 되돌려 놓을 것입니다 이제 다시 이것은 특히 나쁜 문제는 아니었다 하지만 사용하지 않은 가져 오기가 표시되는 경우 아마 당신이 고치기를 원할지도 모르는 사소한 성가심, 내 경우에는 실제로는 그렇지 않지만 거기에서 보았 듯이 완전한 경로 이름을 사용하십시오

그래서 우리가 해낸 것은 우리가했습니다 그 정규화 된 이름을 제거했습니다 Android X를 검색 할 것입니다 그리고 나는 다른 것들도 제거 할 것입니다 41 번 줄에 하나 더 있습니다

보시다시피 나는 그것을 제거 할 것입니다 나는 기본적으로 수색을 할 것이다 이제 그게 전부입니다 알았어 그래서 나는 그 두 가지를 바로 잡았다

이제 다른 예제를 살펴보면, 우리는 우리 프로젝트로 돌아갈 것이다 우리의 기간 보고서를보십시오 이제 당신은 아마도 거기에서 잠깐 보았을 것입니다 사용되지 않은 수입이있었습니다 실제로 나타나지 않는 이유는 내 취향에 있기 때문에

일반적으로 자동 가져 오기입니다 즉시 최적화 된 가져 오기가 있습니다 따라서 실제로 사용되지 않는 수입품은 숨어 있습니다

하지만 기본적으로 여전히 같은 것을 사용하고 있습니다 또는 그것은 그 정규화 된 이름과 동일한 이슈입니다 그리고 나는 그것을 사용하지 않는 것이 더 좋다고 생각한다 그 정규화 된 이름 우리가 할 수있는 일은 Android X를 검색하면됩니다

거기에 또 하나가 있다는 것을 알 수 있습니다 우리는 이것을 리니어 매니저로 대체 할 수 있습니다 나는 지금 모든 것을 통과하지는 않을 것이다 좋아, 다른 것도있어 기본적으로 더 많이 같습니다

그래서 나는 그 이상을 고치지 않을 것입니다 하지만 몇 가지 다른 문제가 있습니다 그 앱이 현재 실행되는 것을 막을 것입니다 첫 번째 관심을 끌고 싶습니다 주요 활동 클래스입니다

여기에 오류가 있습니다 기본적으로 우리는 번들을 변경해야합니다 물음표를 null이 아닌 유형 번들에 추가 그래서 우리는 단지 물음표를 제거 할 것입니다 그리고 그 오류를 수정합니다 그리고 주요 활동 단편

같은 문제가 있습니다 기본적으로 이전에 본 컨텍스트와 함께, nullable이 아닌 유형을 다시 제거 할 것입니다 중복 문자열 호출을 수정하려고합니다

좋아, 그거 좋은데 따라서 이러한 문제를 볼 수 있습니다 찾기 쉽고 수정하기 쉽습니다 그리고 앱을 실행하기 전에 앱이 여전히 작동하는지 확인하기 전에 나는 경고로 끝낼거야 우리는 정규 자격을 변경했습니다

클래스 이름을 단순화합니다 그리고 꽤 많이 있습니다 다른 클래스의 일부에서는 논쟁의 여지가있는 단편 활동 확장 그 (것)들의 짐을 가지고있다, 그리고 그것은 분명히 위로 정리되는 것으로 할 수 있습니다 프로젝트를 진행할 때 쉽게 할 수 있습니다 이 이름을 자동으로 단순화하는 습관을 가지며, 하지만 한 가지만하면 안됩니다

레이아웃 리소스 파일에서 그래서 우리는 나의 작업 레이아웃 파일 중 하나를 열 것입니다, 리소스 레이아웃 폴더에 있습니다 그리고 이름은 우리의 임무가 기간을 강조한다는 것입니다 이제 그걸 열어 봐 그리고 내가 텍스트보기인지 확인하십시오

나는 우리 다 그리고 우리는 단지 전체 화면으로 갈 것이다 먼저 제약 레이아웃이 완전 자격을 얻었습니다 Android X 도트 제약 레이아웃 레이아웃 도트 위젯에서 가져옵니다 레이아웃을 제약하는 것을 시도하거나 단순화하지 마십시오

아니면 앱을 망칠거야 그리고이 파일의 마지막 위젯 if 우리는 아래쪽으로 스크롤 리사이클 러 뷰는 정규화 된 것입니다

당신이 볼 수 있듯이, 다시 한번 그것을 내버려 둡니다 삭제할 참조를 변경하면 패키지 이름, 앱이 다운됩니다 레이아웃을 팽창 시키려고 할 때 알았어 그걸로 끝내자

그리고 앱이 제대로 작동하는지 확인해 봅시다 그리고 실제로 우리는 하나를 볼 수 있습니다 내가 고칠 필요가있는 다른 것, 아무 것도하지 않는 on attach override 그래서 나는 그것을 두 번 클릭 할 것이다 우리가 이전에 보았던 것과 같은 거기의 거래, null 허용되지 않는 유형을 없애고, 그로 인해 문제가 해결됩니다

그리고 우리는 그것을 다시 시도 할 것입니다 좋아, 우리는 그 다른 경고들을 무시할 것이다 지금은 화면 하단에 그러나 당신은이 시점에서 볼 수 있습니다 메인 화면이로드되고, 눈 모양 아이콘, 도구 모음 또는 도구 모음에서 탭하면, 보고서 화면을 볼 수 있습니다 이제 앱에 데이터가 없으므로 보고서가 비어 있습니다

하지만 우리는 적어도 그것이로드되고 있음을 알고 있습니다 메인 화면으로 돌아갈 수 있습니다 그리고 나는 또한 about 대화를 클릭 할 수 있습니다 확장 메뉴에서 그래서 잘 작동합니다

이제 분명히이 앱을 넣어야합니다 완전한 테스트 사이클을 통해, 앱에서 사용하는 라이브러리 변경 주요 변경 사항이며 테스트해야합니다 이후 앱을 철저히 우리는 분명히이 비디오에서 그렇게하지 않았습니다 좋아, 그게 프로젝트 야 마이그레이션 및 철저한 테스트 준비 및 미래 발달

알았어, 지켜봐 줘서 고마워, 질문이 있으면 의견을 남기십시오 네가 다음에 준비가 되었다면 프로그래밍 관련 비디오, 클릭 왼쪽 상단 모서리에있는 여기 링크 비 코딩을 보는 화면 프로그래밍 관련 질문, 왼쪽 하단에있는 링크를 클릭하십시오 화면을 자유롭게 구독 할 수 있습니다 여기에있는 링크를 클릭하면 다른 비디오에서 보자