[구글정책변경] targetSdkVersion을 29로 설정해야한다.
Google Play 및 Android 관련 기한 안내
GCMNetworkManager:
• 2020년 4월: FirebaseJobDispatcher 라이브러리가 보관처리되며 지원이 중단될 예정입니다.
• 2020년 11월: GCMNetworkManager 라이브러리에 더 이상 새로운 기능이 업데이트되지 않고 지원이 중단될 예정입니다.
TargetSDK:
• 2020년 8월 3일: 새로운 앱은 Android 10(API 수준 29) 이상을 타겟팅해야 합니다.
• 2020년 11월 2일: 모든 앱 업데이트는 Android 10(API 수준 29) 이상을 타겟팅해야 합니다.
10으로 타켓팅 안내메일이 온것을 보니 Android 11이 조만간 나올 모양이다.
targetSdkVersion 28로 정책변경이 얼마 안된 것 같은데 벌써 새로운 정책변경 정보가 메일을 타고 도달하였다.
올해 11월 부터는 targetSdkVersion를 29( 안드로이드 10 ) 으로 타켓팅해야만 구글마켓에 업데이트가 가능하다.
■build.gradle(:app) 파일을 열고 변경
targetSdkVersion 29 , compileSdkVersion 29 , buildToolsVersion “29.0.2” 로 변경한다.
apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.crashlytics'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.test"
minSdkVersion 21
targetSdkVersion 29
versionCode 15
versionName "5.1.5"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
jumboMode true
javaMaxHeapSize "4g"
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
implementation 'androidx.browser:browser:1.0.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'com.google.firebase:firebase-messaging:20.2.0'
implementation 'com.google.firebase:firebase-core:17.4.3'
implementation 'com.google.firebase:firebase-ads:19.1.0'
implementation 'com.google.firebase:firebase-crash:16.2.1'
implementation 'com.google.firebase:firebase-crashlytics:17.0.1'
implementation 'com.google.firebase:firebase-analytics:17.4.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
apply plugin: 'com.google.gms.google-services'
targetSdkVersion를 29로 설정하게됨으로 써 가장 크게 달라지는 부분은 저장소 읽기/쓰기 부분이다.
29(Android 10)로 타켓팅하게되면, 사용자 저장소권한을 부여하였더라도 외부 파일에 대한 접근이 불가능해진다.
가령, 내 폰에 mp3 노래들이 있다면, 그 노래에 대한 접근이 불가능해지는 것이다.
만약 이런 파일들에 접근하려면, 그 파일을 앱이 설치된 폴더로 복사해와야한다.
혹은 매니패스트 파일(AndroidManifest.xml)에 requestLegacyExternalStorage 속성 값을 true로 설정해야한다.
# AndroidManifest.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android“
xmlns:tools=”http://schemas.android.com/tools“
package=”app.notification”>
<application
android:name=”.CustomApplication”
android:requestLegacyExternalStorage=”true”
android:allowBackup=”false”
android:fullBackupContent=”false”
android:hardwareAccelerated=”false”
android:icon=”@mipmap/ic_launcher”
android:label=”@string/app_name”
android:largeHeap=”true”
android:roundIcon=”@mipmap/ic_launcher_round”
android:supportsRtl=”true”
android:theme=”@style/AppTheme”
tools:replace=”android:allowBackup”>
………………생략………….
</application>
안드로이드 11 관련 변경된 권한을 확인 후 업데이트를 진행해야한다. 아래 랭크를 참고 필수!!
[관련자료]
Google Play의 타겟 API 수준 요구사항 충족하기