사용자 도구

사이트 도구


android_studio

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
android_studio [2019/08/24 08:09] – [java.lang.VerifyError: Bad return type] lindolandroid_studio [2022/10/09 12:54] (현재) lindol
줄 12: 줄 12:
  
 위 자료를 보고 java 6를 설치하고, oracle 홈페이지에서 java 8(JDK 8)을 설치했다. (2016년 4월 16) 위 자료를 보고 java 6를 설치하고, oracle 홈페이지에서 java 8(JDK 8)을 설치했다. (2016년 4월 16)
 +
 +==== 단축키 ====
 +
 +줄 처음으로 이동: Command + <-
 +
 +줄 끝으로 이동: Command + ->
 +
 +단어 단위로 앞으로 이동: Option(Alt) + <-
 +
 +단어 단위로 뒤로 이동: Option(Alt) + ->
 +
 +show method signature: Command + P
  
 ===== Troubleshooting ===== ===== Troubleshooting =====
줄 213: 줄 225:
 JaCoCo 선택후 실행시 대상 코드가 실행되었으나 커버리지에는 측정되지 않는 부분이 나왔다. JaCoCo 선택후 실행시 대상 코드가 실행되었으나 커버리지에는 측정되지 않는 부분이 나왔다.
 예를 들면 Robolectric 나, Powermock으로 테스트 한 모듈같은 경우가 측정이 안되었다. (0%로 나오고 실행안된 부분으로 나옴) 예를 들면 Robolectric 나, Powermock으로 테스트 한 모듈같은 경우가 측정이 안되었다. (0%로 나오고 실행안된 부분으로 나옴)
 +
 +JaCoCo에서 PowerMock으로 테스트되는 Code의 Code Coverage 확인 방법이 현재까지는 없다고 한다.
 +<code>
 +We are going to replace Javassist with ByteBuddy (#727) and it should help to resolve this old issue. But right now there is NO WAY TO USE PowerMock with JaCoCo On-the-fly instrumentation. And no workaround to get code coverage in IDE.
 +</code>
 +https://github.com/powermock/powermock/wiki/Code-coverage-with-JaCoCo
 +
 +Robolectric으로 테스트 되는 Code의 code coverage 는 IntelliJ 를 써야 할 듯..
 +https://stackoverflow.com/questions/35735085/jacoco-doesnt-work-with-robolectric-tests
 +
 +"-noverify" 옵션
 +
 +Jvm에서 class를 로딩할 때 bytecode 의 신뢰성을 검증하지 않도록 한다.
 +Code Coverage를 측정할 때 class byte code를 변형하게 되면 이 byte code verification에 걸리게 되서 문제가 되는 것 같다.
 +개발 중에만 이 옵션을 사용하고 **절대 production 환경에서는 사용하면 안되는 옵션**으로 보인다.
 +
 +관련 링크
 +
 +  * https://blogs.oracle.com/buck/never-disable-bytecode-verification-in-a-production-system
 +  * https://github.com/spring-projects/spring-loaded#readme
 +  * https://stackoverflow.com/questions/300639/use-of-noverify-when-launching-java-apps
 +  * https://stackoverflow.com/questions/45936475/why-noverify-added-at-the-end-of-jvm-arguments
 +
 +==== major version 53 is newer than 52 ====
 +
 +<code Bash>
 +> Task :app:compileDebugJavaWithJavac
 +warning: /Users/lindol/.gradle/caches/transforms-2/files-2.1/0147da73be67184dae3524a6fab40462/jetified-basic.jar(kr/lindol/test/Calc.class): major version 53 is newer than 52, the highest major version supported by this compiler.
 +  It is recommended that the compiler be upgraded.
 +1 warning
 +/Users/lindol/.gradle/caches/transforms-2/files-2.1/0147da73be67184dae3524a6fab40462/jetified-basic.jar(kr/lindol/test/Calc.class): major version 53 is newer than 52, the highest major version supported by this compiler.
 +
 +</code>
 +
 +원인: 프로젝트에서 사용하는 class (여기서는 basic.jar 에 포함된 Calc 클래스) 가 현재 컴파일러 (jdk8) 보다 상위의 컴파일러(jdk9)에서 컴파일 됨.
 +
 +해결방법: jdk8로 .jar library 소스 재빌드??
 +
 +-Xlint:deprecation
 +
 +<code bash>
 +> Task :app:compileDebugJavaWithJavac
 +Note: /Users/lindol/Job/AndroidStudioProjects/My-Cashbook/MyCashbook/app/src/main/java/kr/lindol/mycashbook/list/CashLogListFragment.java uses or overrides a deprecated API.
 +Note: Recompile with -Xlint:deprecation for details.
 +</code>
 +
 +소스 구현에 deprecated API 를 사용한 부분이 있다.
 +자세한 내용을 확인 하려면 -Xlint:deprecation을 추가해서 빌드하라는 의미
 +
 +안드로이드 스튜디오에서는 아래처럼 app/build.gradle 에 추가하면 자세한 내용을 확인 할 수 있다.
 +
 +<code>
 +    allprojects {
 +        
 +        ...
 +        
 +        gradle.projectsEvaluated {
 +            tasks.withType(JavaCompile) {
 +                options.compilerArgs << "-Xlint:deprecation"
 +            }
 +        }
 +    }
 +</code>
 +
 +출처: https://stackoverflow.com/questions/49711773/how-to-recompile-with-xlintdeprecation
 +
 +
android_studio.1566601785.txt.gz · 마지막으로 수정됨: 2019/08/24 08:09 저자 lindol