반응형

나름 디자인을 입혀보겠다고 구글의 Marterial Card 를 사용했는데 빌드만하면 XML 파일 에러를 띄우며 앱이 죽는다.
gradle 에 의존성 추가도 해주고 Marterial-Card-View 레퍼런스를 참고하여 옵션을 넣었는데도 아래와 같은 에러가 발생하였다.

 

Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant). 

 

에러 메시지는 app theme 이 필요하다는데..

그게 무슨말이야! 하고  Getting started 를 살펴보니 에초에 Material 을 사용하기 위한 기본 세팅을 제대로 안해준 것이다..

(레퍼런스를 처음부터 차근차근 읽어보지 않았던 탓... )

 

 

 

원인 : Marterial Design 을 사용하기 위해서는 액티비티에 Material Components Themes 을 style 로 지정해 주지 않아서 발생 

 

 

 

해결책 : AndroidManifest.xml 에서 Material Design 을 사용할 액티비티에 Material Components Themes 중 하나를 선택하여 옵션으로 넣어주면 된다.

 

<activity android:name=".SampleActivity"
android:theme="@style/Theme.MaterialComponents.Light.NoActionBar.Bridge"/>

 

참고로 Material Components Themes 의 종류는 다음과 같다. 

  • Theme.MaterialComponents

  • Theme.MaterialComponents.NoActionBar

  • Theme.MaterialComponents.Light

  • Theme.MaterialComponents.Light.NoActionBar

  • Theme.MaterialComponents.Light.DarkActionBar

  • Theme.MaterialComponents.DayNight

  • Theme.MaterialComponents.DayNight.NoActionBar

  • Theme.MaterialComponents.DayNight.DarkActionBar

이 중 하나를 선택해서 넣어주면 되고, 여기서 원하는 옵션이 없으면 styles.xml 에서 AppTheme 을 수정하거나 새로 Theme 을 만들어서 액티비티 옵션에 넣어줘도 된다.( Getting Started 에 설명이 잘 나와있다. )

 

 

 

* 해당 포스팅은 Material Design : Android 를 기준으로 하고 있습니다.

 

반응형
반응형

안드로이드 스튜디오를 간만에 업데이트(3.4.2 버전)하고 새 프로젝트를 생성하고 빌드하다 보니 다음과 같은 에러가 발생하였다.

 

 Error: Invoke-customs are only supported starting with Android O (--min-api 26) 

 

무슨 에러인가 보았더니 역시나 친절한 안드로이드 스튜디오는 알려준다.

 

AGPBI: {"kind":"error","text":"Invoke-customs are only supported starting with Android O (--min-api 26)","sources":[{}],"tool":"D8"}
> Task :app:mergeExtDexDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:mergeExtDexDebug'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Failed to transform artifact 'material.aar (com.google.android.material:material:1.1.0-alpha08)' to match attributes {artifactType=android-dex, dexing-is-debuggable=true, dexing-min-sdk=24}
      > Execution failed for DexingTransform: /Users/noah/.gradle/caches/transforms-2/files-2.1/37a0daf16d8ba7dc17296903cb0a1c4f/jars/classes.jar.
         > Error while dexing.
           The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle
           android {
               compileOptions {
                   sourceCompatibility 1.8
                   targetCompatibility 1.8
               }
           }
           See https://developer.android.com/studio/write/java8-support.html for details. Alternatively, increase the minSdkVersion to 26 or above.

 

고맙게도 해결방법까지 알려준다.

프로젝트를 생성할 때 이번에 변경된 안드로이드x 패키지를 사용하였는데 라이브러리 중에서 자바8 (JDK 8) 언어의 바이트코드를 의존성으로 가지고 있어 컴파일 옵션추가가 필요하다는 것 같다. ( Dex 쪽 문제인듯 싶다. )

 

 

 

원인 : 라이브러리의 JDK 버전 호환 문제

 

 

해결책 : 프로젝트 gradle 에서 android { ~ } 안에 다음과 같은 옵션 추가

compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}

 

반응형
반응형

안드로이드 프로젝트를 GitHub 에서 받아와서 맥북에 빌드 시키는 과정에서 다음과 같은 에러가 발생하였다.


org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.                

                                                ~ 생략 ~                                                                                                        

Caused by: java.lang.NullPointerException                                                                                                

at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:787)

at com.android.build.gradle.internal.ndk.NdkHandler.getPlatformVersion(NdkHandler.java:159)

at com.android.build.gradle.internal.ndk.NdkHandler.supports64Bits(NdkHandler.java:332)

at com.android.build.gradle.internal.ndk.NdkHandler.getSupportedAbis(NdkHandler.java:404)


에러로그를 보니 프로젝트 설정하는데 에러가 발생하였고, NullPointerException 이 발생한 걸 보니 

무엇인가 없다는 것 같다.

알고보니 맥북에 새로 안드로이드 스튜디오를 설치해서 NDK 관련 SDK 가 없었던 것이다..!




원인 : 안드로이드 스튜디오에 NDK 관련 SDK 가 설치 되지 않아서 발생 




해결책 : 안드로이드 스튜디오 메뉴 중 Preferences 

-> Andorid SDK -> SDK Tools 이동 

SDK Tools 에서  CMake 와 NDK 가 설치되어 있는지 확인 후 

설치 되어 있지 않으면 체크하고 설치 (Install)   


그림과 같이 CMake 와 NDK가 체크되어 있고 Status 에 Installed 라고 표시되어 있어야한다.





반응형
반응형

맥북에서 안드로이드 스튜디오 설치하기


안드로이드 스튜디오는 자바 기반이기 때문에 자바를 먼저 설치해야 한다.




2018/10/01 - [IT 개발 로그캣/기타] - [Mac] 자바 설치





맥북에 안드로이드 개발 환경 구축을  하기 위해 안드로이드 스튜디오 설치를 설치해보자.


안드로이드 스튜디오는 "안드로이드 디벨로퍼" 를 검색해서 안드로이드 디벨로퍼 홈페이지에 들어가셔서 다운받을 수 있다.


역시나 검색해서 들어가기 귀찮음으로 다운로드 링크 : https://developer.android.com/studio/









1. 안드로이드 디벨로퍼 홈페이지에서 Android Studio 를 누르고 들어가서 다운로드 받으면 된다.









2. 설치 파일을 다운로드 받고나서 실행하면 아래와 같은 그림이 나온다. 

처음에 뭔가 했더니 Android Studio 아이콘을 Applications 로 드래그 해서 옮겨주면 실제 설치파일이 컴퓨터에 생성된다.











3. FInder 에서 안드로이드 스튜디오 아이콘을 찾아서 실행해주면 설치 파일을 열것인지 물어보고 열기를 누르면 실제 설치파일이 실행된다.










4. 설치가 시작되면 기존에 안드로이드 스튜디오 설정이 있는지 물어보는데 처음 설치하는 경우 Do not import settings 를 설정해주면 된다.











5. OK를 누르고 넘어가면 Welcome 화면이 나오는데 그냥 형식적 인사임으로 [Next]를 하면되고 그러면 이제 설치 타입을 묻는다.

설치타입을 Custom 으로 하면 테마, 안드로이드 스튜디오 모듈 (에뮬레이터 등), 에뮬레이터 RAM 크기 설정 등을 할 수 있는데 설치하고 나서도 언제든지 변경 가능하다.

잘모르겠거나 귀찮으면 Standard 를 선택하고 [Next] 를 누르면 프로그램들이 자동으로 설치되고 [Finish] 를 누르면 설치가 끝나고 안드로이드 스튜디오가 실행된다.








5-1.  조금 더 개발자 감성을 일찍 느끼고 싶으면 Custom 을 누르고 [Next]를 한다.

첫 설정은 안드로이드 스튜디오 UI (테마)를 고르는 화면이다. 역시나 개발자 감성이라면 Darcula를 선택해준다. (눈의 피로도 또한 감소 시켜준다)







5-2.  다음 설정으로는 인텔의 HAXM 이라는 에뮬레이터의 속도를 높여주는 하드웨어 가속 기능과 안드로이드 가상머신 (에뮬레이터) 를 설치 할 것인가 물어본다.

가끔 에뮬레이터가 필요함으로 두개다 체크 한뒤 [Next]를 눌러준다.

컴퓨터 용량이 부족하거나 테스트 폰으로만 개발해서 에뮬레이터가 필요 없으면 Android Virtual Device 설치를 해제하고 설치하면 된다.






5-3. 마지막 설정으로  인텔 HAXM 기능에 Ram 할당량을 지정하는건데 2G 정도를 추천하니 그냥 추천하는대로 쓰자










6. 설치가 완료되고 [Finish]를 했을 때 실행된 안드로이드 스튜디오 화면



반응형
반응형

맥북에 자바(JDK) 설치하기



Mac OS 에서 개발환경 구축을 위해 자바(JDK)를 설치해 보자


자바는 오라클 홈페이지에서 다운받을 수 있으며 귀찮으니 아래 링크를 통해 다운로드


자바 다운로드 링크 : https://www.oracle.com/technetwork/java/javase/downloads/index.html


아래의 그림 화살표대로 따라 가면 자바를 다운로드 받을 수 있다.

 






자바 버전 구분


그림 왼쪽에 목록을 보면 Java SE / EE / ME 가 있는데 개인용 (개발 포함)으로 사용하려면 SE를 사용하면 된다.


SE 는 Standard Edition 으로 데스크톱 및 서버 등에서 일반적으로 사용 되는 버전이다. (안드로이드 개발할 때에도 SE 를 사용하면 됨)


EE는 EnterPrise Edition  으로 주로 서버측 개발을 위한 버전으로 SE에 다가 서버측 개발에 필요한 API 등이 추가된 버전이다.


ME는 Micro Edition 으로 상대적으로 가벼운 자바가 필요한 임베디드를 위한 버전이다.


















화살표대로 Accept License Agreement (라이선스 동의) 를 선택하고  macOS 용 파일을 받으면 된다.
















설치 파일을 다운로드 받고 실행시켜서 Install Succeeded 가 나올 때 까지 진행하면 된다. 


중간에 별다른 옵션 등이 없기 때문에 그냥 진행하면 된다. 쉽다 :)












마지막으로 터미널창에서 java -version 을 입력하고 그림과 같이 버전 정보가 나오면 설치 완료!













반응형
반응형

android.view.InflateException: Binary XML file line #46: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)'


와 같은 에러가 발생하면 대부분 xml 파일에서 오타가 문제입니다.


원인 : xml 파일에서 <View> ~ </View> 를 <view> ~ <view> 소문자로 적어서 발생 (휴먼에러다...)



해결법 : 에러가 발생한 XML 파일에서 <view> 를 <View> 로 변경해줌 


반응형

+ Recent posts