| 현상

Manifest merger failed: Attribute application@allowBackup value=(false) from [:unityLibrary:sdk] AndroidManifest.xml:line
  is also present at [plugin:version] AndroidManifest.xml:line value=(true).
  Suggestion: add 'tools:replace="android:allowBackup"' to <application element at AndroidManifest.xml:line to override.

Third Party 플러그인들을 프로젝트에 통합하는 과정에서

AndroidManifest.xml 병합이 실패하는 현상이 발생하곤 한다.

원인은 AndroidManifest.xml에서 병합규칙 마커없이 동일한 속성에 대해 각각 다른 값을 설정하고 있기 때문이다.
(위 상황에선 android:allowBackup 속성이 문제가 되었다)

보통의 경우엔 우선순위나 값의 유무에 따라서 휴리스틱하게 처리되지만, 같은 속성에 대해서 다른 값을 지정하면 병합 과정에서 충돌 오류가 발생한다.


​| 해결방법

// launcher/src/main/AndroidManifest.xml
<?xml ...
...
  <application tools:replace="android:allowBackup" android:allowBackup="false" />
...

위의 에러로그에의 제안처럼 AndroidManifest.xml에 tools:replace=”android:allowBackup” 병합규칙을 추가하면 문제가 해결된다.

 

| 참고

 

다중 manifest 파일 병합  |  Android 개발자  |  Android Developers

manifest 병합 및 manifest 병합 도구에 관해 자세히 알아보세요.

developer.android.com

 

 

자동 백업으로 사용자 데이터 백업  |  Android 개발자  |  Android Developers

앱의 자동 백업은 Android 6.0(API 수준 23) 이상에서 타겟팅하거나 실행되는 앱의 사용자 데이터를 자동으로 백업합니다. Android는 앱 데이터를 사용자의 Google Drive에 업로드하여 보존하며, 이곳의 앱

developer.android.google.cn

 

반응형

| 개요

써드파티 플러그인을 적용하거나 OS 버전 업과 같은 이유로 SDK Build Tools의 버전을 올려야하는 경우가 있다.

이때 Gradle의 최소 요구 버전이 달라지는 경우가 있는데, 아래와 같은 에러가 발생한다.

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/<usr>/.jenkins/workspace/<job>/<GradleProject>/launcher/build.gradle' line: <line>

* What went wrong:
A problem occurred evaluating project ':launcher'.
> Failed to apply plugin [id 'com.android.internal.version-check']
   > Minimum supported Gradle version is 5.6.4. Current version is 5.1.1. If using the gradle wrapper, try editing the distributionUrl in /Users/<usr>/.gradle/daemon/5.1.1/gradle/wrapper/gradle-wrapper.properties to gradle-5.6.4-all.zip
 
 

필자는 그래들 플러그인(classpath: com.android.tools.build:gradle:3.6.4)을 3.6.4버전을 쓰게 되면서 최소 요구 Gradle 버전은 5.6.4이었다.

dependencies {
  classpath 'com.android.tools.build:gradle:<version>'
}
 

Project 하위에 build.gradle 파일을 열어보면 위와 같은 내용을 확인할 수 있다.

 

Android Gradle 플러그인 출시 노트  |  Android 개발자  |  Android Developers

Android 스튜디오 빌드 시스템은 Gradle을 기반으로 하며 Android Gradle 플러그인에는 Android 앱을 빌드하는 데 사용하는 몇 가지 추가 기능이 있습니다.

developer.android.com

 

※위 링크에서 그래들 플러그인에 대응되는 그래들 버전을 확인할 수 있다.

 

| 플러그인별 Gradle 버전

플러그인 필요한 최소 Gradle 버전
8.1 8.0
8.0 8.0
7.4 7.5
7.3 7.4
7.2 7.3.3
7.1 7.2
7.0 7.0
4.2.0+ 6.7.1

 

| 그래들 버전 설정방법

그래들의 버전 설정은 Android 스튜디오의 File > Project Structure > Project 메뉴에서 또는 gradle/wrapper/gradle-wrapper.properties 파일의 Gradle 배포 참조를 편집하여 Gradle 버전을 지정할 수 있습니다.

해당 메뉴에서 그래들 버전 설정

혹은 gradle/wrapper/gradle-wrapper.properties 파일을 아래와 같이 수정

 

distributionBase=GRADLE_USER_HOME
...
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
...
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
 

| 젠킨스에서

 
  • Jenkins > Manage Jenkins > Global Tool Configuration > Gradle > Gradle Installations
  • 해당 버전의 그래들을 추가
  • 각 프로젝트에서 변경된 그래들을 사용하도록 수정
반응형

+ Recent posts