build.gradle 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. // Gradle build config for Godot Engine's Android port.
  2. apply from: 'config.gradle'
  3. buildscript {
  4. apply from: 'config.gradle'
  5. repositories {
  6. google()
  7. mavenCentral()
  8. }
  9. dependencies {
  10. classpath libraries.androidGradlePlugin
  11. classpath libraries.kotlinGradlePlugin
  12. }
  13. }
  14. apply plugin: 'com.android.application'
  15. allprojects {
  16. repositories {
  17. google()
  18. mavenCentral()
  19. // Godot user plugins custom maven repos
  20. String[] mavenRepos = getGodotPluginsMavenRepos()
  21. if (mavenRepos != null && mavenRepos.size() > 0) {
  22. for (String repoUrl : mavenRepos) {
  23. maven {
  24. url repoUrl
  25. }
  26. }
  27. }
  28. }
  29. }
  30. dependencies {
  31. implementation libraries.kotlinStdLib
  32. implementation libraries.androidxFragment
  33. if (rootProject.findProject(":lib")) {
  34. implementation project(":lib")
  35. } else if (rootProject.findProject(":godot:lib")) {
  36. implementation project(":godot:lib")
  37. } else {
  38. // Custom build mode. In this scenario this project is the only one around and the Godot
  39. // library is available through the pre-generated godot-lib.*.aar android archive files.
  40. debugImplementation fileTree(dir: 'libs/debug', include: ['*.jar', '*.aar'])
  41. releaseImplementation fileTree(dir: 'libs/release', include: ['*.jar', '*.aar'])
  42. }
  43. // Godot user plugins remote dependencies
  44. String[] remoteDeps = getGodotPluginsRemoteBinaries()
  45. if (remoteDeps != null && remoteDeps.size() > 0) {
  46. for (String dep : remoteDeps) {
  47. implementation dep
  48. }
  49. }
  50. // Godot user plugins local dependencies
  51. String[] pluginsBinaries = getGodotPluginsLocalBinaries()
  52. if (pluginsBinaries != null && pluginsBinaries.size() > 0) {
  53. implementation files(pluginsBinaries)
  54. }
  55. }
  56. android {
  57. compileSdkVersion versions.compileSdk
  58. buildToolsVersion versions.buildTools
  59. compileOptions {
  60. sourceCompatibility versions.javaVersion
  61. targetCompatibility versions.javaVersion
  62. }
  63. assetPacks = [":assetPacks:installTime"]
  64. defaultConfig {
  65. // The default ignore pattern for the 'assets' directory includes hidden files and directories which are used by Godot projects.
  66. aaptOptions {
  67. ignoreAssetsPattern "!.svn:!.git:!.gitignore:!.ds_store:!*.scc:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"
  68. }
  69. ndk {
  70. String[] export_abi_list = getExportEnabledABIs()
  71. abiFilters export_abi_list
  72. }
  73. manifestPlaceholders = [godotEditorVersion: getGodotEditorVersion()]
  74. // Feel free to modify the application id to your own.
  75. applicationId getExportPackageName()
  76. versionCode getExportVersionCode()
  77. versionName getExportVersionName()
  78. minSdkVersion versions.minSdk
  79. targetSdkVersion versions.targetSdk
  80. }
  81. lintOptions {
  82. abortOnError false
  83. disable 'MissingTranslation', 'UnusedResources'
  84. }
  85. ndkVersion versions.ndkVersion
  86. packagingOptions {
  87. exclude 'META-INF/LICENSE'
  88. exclude 'META-INF/NOTICE'
  89. // 'doNotStrip' is enabled for development within Android Studio
  90. if (shouldNotStrip()) {
  91. doNotStrip '**/*.so'
  92. }
  93. }
  94. signingConfigs {
  95. debug {
  96. if (hasCustomDebugKeystore()) {
  97. storeFile new File(getDebugKeystoreFile())
  98. storePassword getDebugKeystorePassword()
  99. keyAlias getDebugKeyAlias()
  100. keyPassword getDebugKeystorePassword()
  101. }
  102. }
  103. release {
  104. File keystoreFile = new File(getReleaseKeystoreFile())
  105. if (keystoreFile.isFile()) {
  106. storeFile keystoreFile
  107. storePassword getReleaseKeystorePassword()
  108. keyAlias getReleaseKeyAlias()
  109. keyPassword getReleaseKeystorePassword()
  110. }
  111. }
  112. }
  113. buildTypes {
  114. debug {
  115. // Signing and zip-aligning are skipped for prebuilt builds, but
  116. // performed for custom builds.
  117. zipAlignEnabled shouldZipAlign()
  118. if (shouldSign()) {
  119. signingConfig signingConfigs.debug
  120. } else {
  121. signingConfig null
  122. }
  123. }
  124. release {
  125. // Signing and zip-aligning are skipped for prebuilt builds, but
  126. // performed for custom builds.
  127. zipAlignEnabled shouldZipAlign()
  128. if (shouldSign()) {
  129. signingConfig signingConfigs.release
  130. } else {
  131. signingConfig null
  132. }
  133. }
  134. }
  135. sourceSets {
  136. main {
  137. manifest.srcFile 'AndroidManifest.xml'
  138. java.srcDirs = ['src']
  139. res.srcDirs = ['res']
  140. aidl.srcDirs = ['aidl']
  141. assets.srcDirs = ['assets']
  142. }
  143. debug.jniLibs.srcDirs = ['libs/debug', 'libs/debug/vulkan_validation_layers']
  144. release.jniLibs.srcDirs = ['libs/release']
  145. }
  146. applicationVariants.all { variant ->
  147. variant.outputs.all { output ->
  148. output.outputFileName = "android_${variant.name}.apk"
  149. }
  150. }
  151. }
  152. task copyAndRenameDebugApk(type: Copy) {
  153. from "$buildDir/outputs/apk/debug/android_debug.apk"
  154. into getExportPath()
  155. rename "android_debug.apk", getExportFilename()
  156. }
  157. task copyAndRenameReleaseApk(type: Copy) {
  158. from "$buildDir/outputs/apk/release/android_release.apk"
  159. into getExportPath()
  160. rename "android_release.apk", getExportFilename()
  161. }
  162. task copyAndRenameDebugAab(type: Copy) {
  163. from "$buildDir/outputs/bundle/debug/build-debug.aab"
  164. into getExportPath()
  165. rename "build-debug.aab", getExportFilename()
  166. }
  167. task copyAndRenameReleaseAab(type: Copy) {
  168. from "$buildDir/outputs/bundle/release/build-release.aab"
  169. into getExportPath()
  170. rename "build-release.aab", getExportFilename()
  171. }