build.gradle 5.6 KB

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