Android

[구글정책변경] 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 관련 변경된 권한을 확인 후 업데이트를 진행해야한다. 아래 랭크를 참고 필수!!

개인정보 보호 관련 주요 변경사항

Android 11의 권한 업데이트

■ Android 11의 위치 업데이트

Android 11의 저장소 업데이트

Android 11의 포그라운드 서비스

Android 11의 패키지 공개 상태

Android 11의 MAC 주소 업데이트

 

 

 

[관련자료]
Google Play의 타겟 API 수준 요구사항 충족하기

 

 

Leave a Reply

error: Content is protected !!