기본 콘텐츠로 건너뛰기

android -> androidx 전환시 오류 고치기





구글 IO 2018에서 발표된 JetPack은 기존의 'com.android.support.*' 라이브러리들을 통합한 라이브러리 라고 보면 편하다.

그래서 원래 있던 프로젝트들을 위와같이 바꿔주고 빌드를 하면...













짠. 버그가 발생한다.



프로젝트 맨위에 'gradle.properties' 파일에 아래내용을 추가해준다.

android.useAndroidX=true
android.enableJetifier=true

 


원래 Android Studio 버전이 3.2.0 이상이면 마이그레이션 기능을 지원하지만, 일일히 옮기면 저런 버그가 발생하니 주의!

댓글

이 블로그의 인기 게시물

C언어 register 변수의 함정카드

C언어를 하다보면 register 라는 CPU의 레지스터에 자료를 저장하는 변수를 알수있다. 대신에 한 프로그램에서 최대 2개 정도까지만 사용이 가능하고 지역변수만 가능 및 32bit CPU는 32bit 크기의 변수만 사용 가능하다. 장점만 보면 기본적으로 메모리쪽에 저장되는 일반 변수들보다 더 빠르게 접근이 가능할 것 같은데...인라인 어셈이랑 메모리랑 레지스터랑 비교하면 어떤게 가장 빠른지 궁금해서 한번 테스트 해보게 되었다. 우선 테스트 해볼 코드는 다음과 같다. 거의 동일한 연산을 하고 다른 점이 있다면 인라인 어셈은 전부 다 레지스터를 이용해서 연산한다는 정도...? 위의 코드를 컴파일 해서 실제로 돌려보면 실행 결과는 다음과 같이 나온다. !? 그냥 아무런 형식도 지정해주지 않은 auto와 똑같은 결과가 나온다. # C언어는 기본적으로 아무런 형식을 지정해주지 않으면 auto로 해준다. # int a => auto int a 그래서 어째서 저런 결과가 나왔는지 컴파일에 옵션을 줘서 어셈파일을 분석해 보았다. 인라인 어셈 auto for register for push ebp mov ebp, esp mov ecx, 0 jmp SHORT $INLoop$3 $INLoop$3: cmp ecx, 10000000 jae SHORT $EXIT$4 mov eax, ecx shl eax, 2 inc ecx jmp SHORT $INLoop$3 $EXIT$4: cmp ebp, esp call __RTC_CheckEsp popebp ret,0 push ebp mov ebp, esp sub esp, 8 mov DWORD PTR [ebp-8], -858993460 mov DWORD PTR [ebp-4], -858993460 mov DWORD PTR _i$2[ebp], 0 jmp SHORT $LN4@For $LN...

Android Auto Naver Login (네이버 자동 로그인) - 2

(1편 부터 이어집니다.) 웹뷰에서 자바 스크립트설정이랑 쿠키도 끝낫으니 이제 요청헤더에 몇몇개의 값을 추가해줘야된다. 나중에 로딩할때         web.loadUrl(NAVER_LOGIN, extraHeaders);   이렇게 포함시켜주면 된다. 일단 요청헤더를 추가하기 위해서 Map<String, String> 형식으로 추가해준다.         Map<String, String> extraHeaders = new HashMap<String, String>();         extraHeaders.put("Referer", Config.HEADER_REFERERURI);         extraHeaders.put("ContentType", Config.HEADER_CONTYPE);         extraHeaders.put("User-Agent", Config.HEADER_UA); 대충 이렇게 설정해주는데 각각의 값은 다음과 같다. (코드에서 Ctrl + C, Ctrl + V라 좀 깁니다...) [Class Config]     public static final String HEADER_CONTYPE = "header_ConType = \"application/x-www-form-urlencoded\";";     public static final String HEADER_UA = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/...

마소 후기

원래 한 5명? 정도가 가기로 했는데 이 석ㅇ... 암튼 애들이 다 숙제나 다른 애는 광주로 간다고 해서 결국 혼자 다녀왔다.... (도착) (사실상 경치 감상하기 좋은 곳) 앞에 광화문에서 어떤 행사인지는 모르지만 행사를 해서 위에서 지켜다 보면서 기다리다가 입장을 하게 되었다. (입장) 이번에는 저번 구글 IO 때처럼 대충 듣고 가기 싫어서 앞자리를 차지했다. 기억에 남는 내용 몇 가지를 뽑자면  일단 첫 번째로 왼쪽은 Visual Studio 내장 에뮬로 구동을 한 설정 이고, 오른쪽은 그냥 윈도우 10에 내장된 설정 창이다. 대충 보면 많이 다른 것처럼 느껴지지만 ... 이 두 가지 방법을 이용하여 두 설정을 동시에 만들어 낼 수가 있다. 사이즈에 따라 속의 UI 가 바뀌어 진다는 것이 마치 반응형 웹 페이지를 보는 기분... 두 번째로 기억에 남는 내용은 컴파일 바인딩에 관련된 것이다. (왼쪽 : 동적 데이터 바인딩, 오른쪽 : 컴파일 바인딩) 두 가지 바인딩 식이 있는데 하나는 컴파일 바인딩 하나는 동적 데이터 바인딩 동적 데이터 바인딩은 DataContext 설정이 필요하다. 컴파일 바인딩은 바인딩 성능 향상 과 기존의 편리함을 유지하고 런타임 시 부하가 적고 리플렉션 코드가 최소화 된다. 그리고 변환된 코드는 무려 디버깅이 가능하다! 하지만 대상 타입의 명시적인 선언이 필요하고 해당 페이지의 멤버만 바인딩이 가능하다는 단점(?)이 있다. 그리고, 세 번째로 기억에 남는 부분은 Windows 10 IoT 에디션 인데.... 데스크탑 API의 54%공유 (나머지는 모바일 전용 셀롤러 데이터 등) 모바일의 84% (센서 부분을 위한 API) 최소사양이 램 256MB... 하나의 UI...