날씨는 다소 풀린듯 하지만...
미세미세합니다..
머스크 챙기세욧~~
', > 일상들' 카테고리의 다른 글
[산책] 관악구 국사봉 산책 (0) | 2019.02.09 |
---|---|
[사울날씨] 이 시각 강남입니다 (0) | 2018.11.07 |
[날씨] 이 시각 강남입니다 (0) | 2018.10.10 |
[서울근교] 광명 동굴 다녀왔어요. (0) | 2018.08.20 |
[서울구경] 롯데타워 다녀왔어요. (0) | 2018.08.16 |
[산책] 관악구 국사봉 산책 (0) | 2019.02.09 |
---|---|
[사울날씨] 이 시각 강남입니다 (0) | 2018.11.07 |
[날씨] 이 시각 강남입니다 (0) | 2018.10.10 |
[서울근교] 광명 동굴 다녀왔어요. (0) | 2018.08.20 |
[서울구경] 롯데타워 다녀왔어요. (0) | 2018.08.16 |
[산책] 관악구 국사봉 산책 (0) | 2019.02.09 |
---|---|
[서울말씨] 이 시각 강남입니다 (0) | 2018.11.26 |
[날씨] 이 시각 강남입니다 (0) | 2018.10.10 |
[서울근교] 광명 동굴 다녀왔어요. (0) | 2018.08.20 |
[서울구경] 롯데타워 다녀왔어요. (0) | 2018.08.16 |
[맛집][강남][참치] 인성참치 - 삼성동(코엑스 부근) (0) | 2018.12.14 |
---|---|
[맛집][강남][스테이크] 아웃백 코엑스점 (0) | 2018.12.14 |
[맛집][강남][소고기] 모범갈빗살 (0) | 2018.10.11 |
[맛집][강남][소고기] 논현역 대도식당 (0) | 2018.10.10 |
[강남맛집] 신논현역 주변 토끼정 (0) | 2018.08.14 |
[맛집][강남][스테이크] 아웃백 코엑스점 (0) | 2018.12.14 |
---|---|
[맛집][강남][삼겹살] 하몽하몽이베리코 강남역점 (0) | 2018.10.15 |
[맛집][강남][소고기] 논현역 대도식당 (0) | 2018.10.10 |
[강남맛집] 신논현역 주변 토끼정 (0) | 2018.08.14 |
크리스피 크림 도넛 이벤트 (0) | 2018.07.17 |
[맛집][강남][삼겹살] 하몽하몽이베리코 강남역점 (0) | 2018.10.15 |
---|---|
[맛집][강남][소고기] 모범갈빗살 (0) | 2018.10.11 |
[강남맛집] 신논현역 주변 토끼정 (0) | 2018.08.14 |
크리스피 크림 도넛 이벤트 (0) | 2018.07.17 |
[강남][함바그] 후쿠오카 함바그 (0) | 2018.03.18 |
[서울말씨] 이 시각 강남입니다 (0) | 2018.11.26 |
---|---|
[사울날씨] 이 시각 강남입니다 (0) | 2018.11.07 |
[서울근교] 광명 동굴 다녀왔어요. (0) | 2018.08.20 |
[서울구경] 롯데타워 다녀왔어요. (0) | 2018.08.16 |
[캠핑] 가평 늘푸른쉼터 캠핑장 2018.08.02 ~ 2018.08.05 (0) | 2018.08.06 |
다음 맵 SDK를 사용하면서 공식 가이드대로 진행시 일부 안되는 부분들이 있음.
카카오 개발자 사이트 가입
카카오 개발자 사이트에서 앱 생성
Android 플랫폼 추가 : 앱 선택 - 설정
- 일반
- 플랫폼 추가
- Android
선택 후 추가
키 해시 등록 : Android
플랫폼 선택 후 키 해시
등록
라이브러리 파일 추가 Android Daum Map 라이브러리 구성 가이드에는 위와 같이 libs 파일에 추가하라고 하지만 이대로 할 경우 오류 발생함. libDaumMapAndroid.jar
는 위 위치가 맞고 gradle 에 아래와 같이 추가가 필요함.
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation files('libs/libDaumMapAndroid.jar')
}
armeabi
와 armeabi-v7a
는 /src/main 디렉토리 아래 jniLibs
디렉토리 생성 후 복사함.
AndroidManifest.xml 에 Permission
과 APP Key
추가
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
</uses-permission>
<meta-data android:name="com.kakao.sdk.AppKey" android:value="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"/>
코드 작성
MapView mapView = new MapView(this);
ViewGroup mapViewContainer = (ViewGroup) findViewById(R.id.map_view);
mapViewContainer.addView(mapView);
네이버 지도 사용 중 MissingLibraryException 발생 이슈???? (2) | 2023.11.26 |
---|---|
[Android] SonarQube 적용기 (0) | 2020.02.12 |
[Android] 초간단 Retrofit 라이브러리 사용해보기 (0) | 2017.12.18 |
[Android] 초간단 Lottie 라이브러리 사용해보기 (0) | 2017.12.14 |
Android OS 9 Pie 버전부터는 WebView에 일반적인 텍스트로 "http://" URL 접근이 막혔습니다.
(tagetSdkVersion 28 이상일 경우)
증상 : WebView에서 Webpage not available
, net::ERR_CLEARTEXT_NOT_PERMITTED
오류 발생
참고 : https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted
검색해보니 이를 수정하기 위해서는 3가지 방법이 있습니다.
(https://stackoverflow.com/questions/45940861/android-8-cleartext-http-traffic-not-permitted)
res/xml/network_security_config.xml 추가
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">ebookfrenzy.com</domain>
</domain-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">amazon.com</domain>
</domain-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">nytimes.com</domain>
</domain-config>
</network-security-config>
위 파일 추가 후 AndroidManifest.xml 에서 application에 networkSecurityConfig
속성 추가
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
...
<application
...
android:networkSecurityConfig="@xml/network_security_config"
이 방법은 network_security_config.xml 파일에 앱 내 텍스트로 사용할 URL들이 정의되어 있어야 함.
cleartextTrafficPermitted
속성이 true일 경우 동작을 함.
AndroidManifest.xml 에서 application 의 usesClearTextTraffic
속성 수정
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
...
<application
...
android:usesCleartextTraffic="true"
이 방법은 텍스트 URL 을 무조건 허용하게 됨.
Android Manifest.xml에서 manifet의 targetSandboxVersion
속성을 사용 중일 경우 관련 내용 : https://developer.android.com/guide/topics/manifest/manifest-element#targetSandboxVersion
위 관련 내용에 따르면 속성 값이 높을수록 보안 수준이 높아지며, 2일 경우 usesCleartextTraffic
의 기본 값이 false가 됨. 그래서 이 속성의 값을 1로 변경해야함. 다만 Android 8.0 (API 26) 이상을 타겟팅하는 Android Instant Apps의 경우 이 속성을 2로 설정해야 함.
<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
...
[Android][EditText] inputType 에 textVisiblePassword 설정에 따른 제조사별 키보드 차이 (0) | 2019.06.04 |
---|---|
[Android][Fabric] Fabric Gradle Plugin 이슈 (2019.03.18) (0) | 2019.03.19 |
[GooglePlay] 업로드 오류 이슈 (0) | 2019.03.14 |
[Android] 구글플레이 앱 버전 따기 (2019.01.04 버전) (4) | 2018.03.30 |
안드로이드 OS 버전 비교 (0) | 2017.12.11 |
[사울날씨] 이 시각 강남입니다 (0) | 2018.11.07 |
---|---|
[날씨] 이 시각 강남입니다 (0) | 2018.10.10 |
[서울구경] 롯데타워 다녀왔어요. (0) | 2018.08.16 |
[캠핑] 가평 늘푸른쉼터 캠핑장 2018.08.02 ~ 2018.08.05 (0) | 2018.08.06 |
[캠핑] 가평 푸름유원지 캠핑장 2018.07.20~2018.07.22 (0) | 2018.07.30 |
참고 : https://developer.android.com/about/versions/pie/android-9.0-changes-28
Android 9 이상 대상 앱에서 포그라운드 서비스를 사용하는 앱은 FOREGROUND_SERVICE
권한을 요청해야 함.
Android 9 이상에서 권한 요청 없이 포그라운드 서비스 생성 시도시 시스템이 SecurityException
발생함.
Android 9에서는 Build.SERIAL
이 항상 "UNKNOWN"으로 설정됨.
기기 하드웨어 일련번호 액세스시 READ_PHONE_STATE
권한 요청 후 getSerial()
을 호출해야 함.
비공개 DNS API를 준수해야 함.
시스템 확인자가 TLS를 통한 DNS를 수행할 경우 내장 DNS 클라이언트가 동일한 호스트 이름에 대해 암호화된 DNS를 시스템으로 사용하거나 시스템 확인자를 위해 비활성화됨.
Android 9에서는 isCleartextTrafficPermitted()
메서드는 기본적으로 false를 반환함.
특정 도메인을 위해 일반 텍스트 사용할 필요 있을 경우 cleartextTrafficPermitted
앱의 네트워크 보안 구성에서 해당 도메인을 true로 명시적으로 설정해야 함.
앱은 여러 프로세스 사이에서 단일 WebView
데이터 디렉토리를 공유할 수 없음.
이러한 데이터 디렉토리는 쿠키, HTTP 캐시 그리고 웹 검색과 관련된 다른 영구 저장소와 임시 저장소를 저장함.
대부분의 앱은 한 프로세스에서만 WebView
와 CookieManager
같은 android.webkit
패키지의 클래스를 사용함.
앱이 두 개 이상의 프로세스에서 WebView
인스턴스를 사용해야 하는 경우 각 프로세스에서 WebView
의 인스턴스를 사용하기 전에 WebView.setDataDiretorySuffix()
메서드를 사용하여 해당 프로세스에 대한 고유한 데이터 디렉토리 접미사를 지정해야 함.
이 메서드는 각 프로세스의 웹 데이터를 앱의 데이터 디렉토리 내에 있는 자체 디렉토리에 넣음.
Android 9 이상 앱은 어디서든 액세스 가능한 Unix 권한을 사용하는 다른 앱과 데이터를 공유할 수 없음.
다른 앱과 파일을 공유하려면 콘텐츠 프로바이더를 사용해야 함.
시스템은 현재 기본값이 아닌 네트워크 상의 네트워크 트래픽을 측정하고 NetworkStatsManager
클래스에 메서드를 제공하여 해당 트래픽에 대해 쿼리함.
getMultipathPreference()
도 네트워크 트래픽에 기반하여 값을 반환함. Android 9부터 이 메서드는 이동통신 데이터에 대해 true를 반환하지만 하루 일정 수준 이상 트래픽이 누적되면 false를 반환함.
ConnectivityManager.NetworkCallback
클래스는 VPN에 대한 정보를 앱에 전송함.
Android 6.0에서 Apache HTTP 클라이언트에 대한 지원이 제거됨.
Android 9부터는 이 라이브러리가 bootclasspath에서 제거되고 기본적으로 사용할 수 없음.
Android 9이상에서 앱이 Apache HTTP 클라이언트를 계속 사용하려면 AndroidManifes.xml
에 추가해야 함.
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
android:required="false"
특성은 23 이하 최소 SDK가 있는 앱에 필요함. API 레벨이 24보다 낮은 기기에서는 org.apache.http.legacy
라이브러리가 제공되지 않기 때문.
(이 기기에서는 Apache HTTP 클래스가 bootclasspath에서 제공됨)
앱에서 런타임 Apache 라이브러리를 사용하는 대신 APK에 org.apache.http
라이브러리의 자체 버전을 번들링 할 수 있음. 이 경우 런타임에서 제공되는 클래스와의 호환성 문제를 피하기 위해 Jar 유틸리티 등의 라이브러리로 리패키징 해야 함.
너비나 높이가 0인 뷰는 포커스가 불가능함.
터치모드에서는 액티비티가 초기 포커스를 암시적으로 할당하지 않으므로, 원할 경우 명시적으로 요청해야 함.
Android 9 이상에서는 4자리 및 8자리 16진수 CSS 색상을 처리 지원함. (CSS 색상 모듈 레벨 4)
CSS 색상 모듈 레벨 4는 릴리즈 52 이후로 Chrome에서 지원되었지만 현재는 WebView
에서 기능이 비활성화 되어있음.
ex) API 27이하 앱의 경우 #80ff8080 색상이 WebView
에서 불투명 연적색(#ff8080)이지만 API 28 이상으로 타겟을 바꾸면 #80ff8080은 50% 투명한 연녹색(#80ff80)으로 해석됨.
문서의 루트 요소가 스크롤 요소일 경우 적절히 처리함.
이전 버전에서는 스크롤 위치가 본문 요소에만 설정되었으며, 루트 요소는 스크롤 값 0이었음.
document.body.scrollTop
, document.body.scrollLeft
, document.documentElement.scrollTop
또는 document.documentElement.scrollLeft
에 직접 액세스하는 동작이 대상 SDK에 따라 달라짐.
뷰포트 스크롤 값에 액세스하려면 document.scrollingElement
를 사용해야 함.
Android 9 이전에는 정지된 앱의 알림이 취소되었음.
Android 9 부터는 앱이 다시 시작될 때까지 정지된 앱의 알림이 숨겨짐.
일부 플랫폼 변경사항은 앱의 작동방식에 영향을 미칠 수 있어 일부 조정은 필요함.
꼭 새로운 API를 사용하거나 targetSdkVersion을 변경할 필요는 없음.
아래의 주요 변경사항을 검토하고 필요한 수정사항을 테스트.
변경사항 | 요약 |
---|---|
비 SDK 인터페이스에 대한 제한 | 직접 액세스, JNI를 통한 액세스 또는 리플렉션을 통한 액세스 등 특정 비 SDK 인터페이스에 대한 액세스가 차단됨. 제한된 인터페이스에 액세스하려고 시도하면 NoSuchFieldException 및 NoSuchMethodException 과 같은 오류가 발생함. |
Crypto 제공자 제거 | Android 9부터 Crypto JCA 제공자가 제거됨.SecureRandom.getInstance("SHA1PRNG","Crypto") 를 호출하면 NoSuchProviderException 이 발생함. |
엄격해진 UTF-8 디코더 | Android 9에서는 Java 언어의 UTF-8 디코더가 더욱 엄격하며 Unicode 표준을 따름. |
유휴 앱의 경우 카메라, 마이크 및 센서에 대한 액세스 차단 | 앱이 유휴 상태인 경우 카메라, 마이크 또는 SensorManager 센서에 더 이상 액세스할 수 없음. |
targetSdkVersion
을 28로 업데이트하고 Android 9의 새 기능을 추가하여 지원하는 방법.
Android Studio 3.1 이상을 사용시 Android 9 앱 빌드를 위한 SDK 패키지를 받을 수 있고 새 기능은 필요없고 컴파일만 수행하려는 경우 사용 가능함.
Android Studio 3.2에서는 Android 9 기능을 완벽하게 지원함.
targetSdkVersion
이 28로 설정된 경우 앱에 영향을 미치는 아래 내용들을 검토함.
변경사항 | 요약 |
---|---|
포그라운드 서비스 권한 | 포그라운드 서비스를 사용시 FOREGROUND_SERVICE 권한을 요청해야 함. 이 권한 없이 포그라운드 서비스를 시작하면 SecurityException이 발생. |
Bouncy Castle 암호화 지원 중단 | Android 9에서는 Bouncy Castle 제공자가 제공하는 여러 암호화가 지원 중단되고 Conscrypt 제공자가 제공하는 암호화가 대신 사용됨. Bouncy Castle 제공자를 요청하는 getInstance() 호출은 NoSuchAlgorithmException 오류를 생성함.이 오류를 해결하려면 getInstance()에서 제공자를 지정하지 말아야 함.(즉, 기본 구현 요청). |
Build.serial 에 대한 직접 액세스 제거 | Build.serial 식별자가 필요한 앱은 이제 READ_PHONE_STATE 권한을 요청한 다음 Android 9에 추가된 새 Build.getSerial() 메서드를 사용해야 함. |
WebView 데이터 디렉토리의 공유 불가 | 앱이 더 이상 여러 프로세스에서 단일 WebView 데이터 디렉토리를 공유할 수 없음. 앱에 android.webkit 패키지의 WebView, CookieManager 또는 기타 API를 사용하는 프로세스가 2개 이상 있는 경우, 두 번째 프로세스에서 WebView 메서드를 호출하면 앱이 중단됨. |
앱의 데이터 디렉토리에 대한 액세스가 SELinux에 의해 차단됨 | 시스템은 각 앱의 비공개 데이터 디렉토리에 대한 앱별 SELinux 제한과 함께 앱별 SELinux 샌드박스를 적용. 이제 경로를 통해 다른 앱의 데이터 디렉토리에 직접 액세스하는 것은 허용되지 않음. 앱이 FD 전달을 포함한 IPC 메커니즘을 사용하여 데이터를 계속 공유할 수도 있음. |
[Android] App Architecture (0) | 2020.02.17 |
---|---|
[Android] Launch Mode 참고할 링크 (0) | 2019.07.19 |
[Android] OS 9 Pie 동작 변경사항: 모든앱 (개발자용) (0) | 2018.08.17 |
[Android] OS 9 Pie 기능들 (개발자용) (0) | 2018.08.17 |
[Android] OS 9 Pie 기능들 (0) | 2018.08.17 |