소소한 개발 공부
FileNotFoundException: Temp\gradleOut\launcher\build\outputs\bundle\release\launcher.aab does not exist 본문
FileNotFoundException: Temp\gradleOut\launcher\build\outputs\bundle\release\launcher.aab does not exist
이내내 2022. 3. 12. 21:11유니티 2020.3.11f1 버전을 aab 파일로 빌드하려고 보니 제목과 같은 에러가 발생했다.
gradle 버전이 맞지 않음으로써 생기는 오류인데 아래의 방법을 사용해 해결했다.
우선 최종적으로 사용하는 한 일은
1. 유니티 버전 2020.3.11f1
2. gradle 버전 6.9.2-all
3. gradle Template 4.0.1
4. launcherTemplate.gradle 코드 추가
1. 사용 중인 gradle 버전 변경
유니티 버전마다 호환되는 버전이 다르다고 한다.
https://docs.unity3d.com/Manual/android-gradle-overview.html
유니티를 설치할 때 같이 설치된 gradle 버전은 5.6.4이지만 이대로는 왜인지 에러가 발생했다. gradle 저장소에서 더 상위 버전 zip 파일을 다운받아 Preferences... -> ExternalTools -> gradle 부분의 파일 경로를 바꿔줬다.
6.9.2-all.zip 파일을 다운 받아 압축을 풀고 파일 경로를 지정해줬다.
https://services.gradle.org/distributions/
gradle 파일 다운 및 경로 지정 영상 https://www.youtube.com/watch?v=RNDYJPMEo98
참고 블로그 https://drehzr.tistory.com/1234
2. gradle 템플릿 버전 변경
baseProjectTemplate.gradle, mainTemplate.gradle, launcherTemplate.gradle 파일에
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
위 주석이 있다면 지우고,
파일의 맨 위에 아래 코드를 추가한다. (아마 baseProjectTemplate.gradle에는 dependencies { classpath 'com.android.tools.build:gradle:4.0.1'} 이 있을 것이기 때문에 gradle 버전만 바꿔준다. 나는 4.0.1을 사용한다.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
// Must be Android Gradle Plugin 3.6.0 or later. For a list of
// compatible Gradle versions refer to:
// https://developer.android.com/studio/releases/gradle-plugin
classpath 'com.android.tools.build:gradle:4.0.1'
}
}
allprojects {
repositories {
google()
jcenter()
flatDir {
dirs 'libs'
}
}
}
만약 위의 baseProjectTemplate.gradle, mainTemplate.gradle, launcherTemplate.gradle 파일이 없다면
Project Settings -> Player -> Publishing Settings 의 아래 항목을 체크하면 생성된다.
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=78425
https://answers.unity.com/questions/1781610/filenotfoundexception-tempgradleoutlauncherbuildou.html
3. launcherTemplate.gradle 에 코드 추가
launcherTemplate.gradle 밑 부분에 아래의 코드를 추가했다.
tasks.whenTaskAdded { task ->
if (task.name.startsWith("bundle")) {
def renameTaskName = "rename${task.name.capitalize()}Aab"
def flavor = task.name.substring("bundle".length()).uncapitalize()
tasks.create(renameTaskName, Copy) {
def path = "${buildDir}/outputs/bundle/${flavor}/"
from(path)
include "launcher-release.aab"
destinationDir file("${buildDir}/outputs/bundle/${flavor}/")
rename "launcher-release.aab", "launcher.aab"
}
task.finalizedBy(renameTaskName)
}
}
결과 : aab 파일 빌드에 성공했다...!