티스토리 뷰
롤리팝으로 변화를 하면서, 여러가지가 변경이 되었다.
빌드가 안되는 문제가 발생할수 있으므로, 눈여겨 볼지어다.
1. Ahead-Of-Time(AOT) 컴파일 이슈
ART는 더욱 엄밀하게 bytecode의 무결성을 검증한다고 한다. 보안 등 여러가지 이유로 외부 도구들을 사용하여 앱을 빌드하는 경우 새로운 문제가 발생할 수 있다고 함.
만약 ART 호환성 이슈가 발생할 경우에, 최신 버전의 도구를 사용하여서 문제가 해결 될 수 있다고 함.
2. GC(Garbage Collection) 관련
ART에서는 GC성능이 더욱 향상되어서, 명시적으로 System.gc()를 호출할 필요가 없다고 한다.
System.getProperty("java.vm.version")이 2.0.0이상인경우에는 ART가 적용된 경우이므로, 호출하지 않도록 코드를 짜는것이 맞다고함.
3. JNI 관련
JNI코드상에서 문제가 발생할 수 있는 부분들은 안드로이드 개발자 도구에 포함된 ChechJNI 툴을 이용하여 확인할 수 있다고 함. 명령어는 다음과 같음
adb shell setprop debug.checkjni 1
앱이 실행되고, 만약 위험성이 있는 JNI코드가 실행되었을 경우에는 경고 메세지가 출력되게 됨.
4. Object 모델 변경
Object class의 필드 값들이 private 속성으로 변경됨. 이에 따라서, Object 클래스의 Field를 Reflection 패키지를 통해 접근하고 있는 경우 문제가 발생할 수 있음. 대표적으로 객체를 직렬화하기 위하여, 특정 객체의 부모 클래스로 거슬러 올라가며 데이터를 확인 하는 경우, 다음과 같이 Class.getSuperClass() 메소드가 java.Object.class를 반환하는 경우 탐색을 멈춰야 한다고 함. 이전과 같이 null 체크만 하였을 경우에는 오류가 발생할수 있다고 함.
Class.getSuperclass() == java.lang.Object.class
5. 중복된 Custom Permission 이슈
5.0에서는 특정 커스텀 퍼미션은 오직 하나의 앱 혹은 해당 앱과 동일한 사인키를 이용하여 사인된 앱에서만 선언할 수 있도록 변경되었음.
왜냐면 기존의 방식에서 다른 어플이 설치가 되면서, 해당 퍼미션의 레벨을 낮게 만들어 실제 사용하고 있는 앱의 데이터에 너무 쉽게 접근을 할수 있는것이다.
만약 android:protectionLevel = signature로 정의된 부분을 해커가 android:protectionLevel = normal로 변경하게 된다면, 다음일은 상상에 맡기겠다.
그래서 이렇게 중복되게 사용되는 퍼미션은 이제는 더 이상 사용하지 않도록 하며, 해당 부분은 시스템의 기본퍼미션을 사용하는것이 좋으며, 정말로 커스텀 퍼미션을 사용하고 싶다면, 한번더 생각하여 보고 사용하는것이 좋겠다.
6. 서비스 바인드는 명시적인 인텐트를 사용
기존에는 서비스 바인드가 암시적으로 호출이 되었다.
Intent intent = new Intent(BIND__);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
이렇게 호출이 가능하였다.
그러나 이러한 부분들이 보안상의 문제로 사라지게 되었으며, 명시적으로 호출을 하게 되었다.
위의 코드는 다음과 같이 수정이 되도록 한다.
Intent intent = new Intent(this, LocalService.class);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
더욱 특별한 내용이 있으면 추가하겠음.
'Mobile > Android' 카테고리의 다른 글
[Android]Handler Lint Error (2) | 2015.01.21 |
---|---|
[Android]Android Studio의 기본 파일 구조 (0) | 2015.01.06 |
[Android]웹뷰에서 메소드 호출이 안될때 (0) | 2015.01.05 |
[Android]ViewPager의 원형 (0) | 2014.12.29 |
[Android]Library Project 사용시 소스 바로가기 안될 경우 (0) | 2014.12.11 |
- Total
- Today
- Yesterday
- Codable
- github
- golang
- war
- Python
- enum
- git
- php
- tomcat
- Xcode
- Windows
- nodejs
- intellij
- ios
- centos8
- Spring
- docker
- Java
- MySQL
- SWIFT
- cocoapods
- Linux
- CentOS
- rxswift
- ubuntu
- Gradle
- android
- windows10
- go
- Kotlin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |