build.gradle 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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:!.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. // 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. // Should be uncommented for development purpose within Android Studio
  90. // doNotStrip '**/*.so'
  91. }
  92. signingConfigs {
  93. release {
  94. File keystoreFile = new File(getReleaseKeystoreFile())
  95. if (keystoreFile.isFile()) {
  96. storeFile keystoreFile
  97. storePassword getReleaseKeystorePassword()
  98. keyAlias getReleaseKeyAlias()
  99. keyPassword getReleaseKeystorePassword()
  100. }
  101. }
  102. }
  103. buildTypes {
  104. debug {
  105. // Signing and zip-aligning are skipped for prebuilt builds, but
  106. // performed for custom builds.
  107. zipAlignEnabled shouldZipAlign()
  108. if (shouldSign()) {
  109. signingConfig signingConfigs.debug
  110. } else {
  111. signingConfig null
  112. }
  113. }
  114. release {
  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.release
  120. } else {
  121. signingConfig null
  122. }
  123. }
  124. }
  125. sourceSets {
  126. main {
  127. manifest.srcFile 'AndroidManifest.xml'
  128. java.srcDirs = ['src']
  129. res.srcDirs = ['res']
  130. aidl.srcDirs = ['aidl']
  131. assets.srcDirs = ['assets']
  132. }
  133. debug.jniLibs.srcDirs = ['libs/debug']
  134. release.jniLibs.srcDirs = ['libs/release']
  135. }
  136. applicationVariants.all { variant ->
  137. variant.outputs.all { output ->
  138. output.outputFileName = "android_${variant.name}.apk"
  139. }
  140. }
  141. }
  142. task copyAndRenameDebugApk(type: Copy) {
  143. from "$buildDir/outputs/apk/debug/android_debug.apk"
  144. into getExportPath()
  145. rename "android_debug.apk", getExportFilename()
  146. }
  147. task copyAndRenameReleaseApk(type: Copy) {
  148. from "$buildDir/outputs/apk/release/android_release.apk"
  149. into getExportPath()
  150. rename "android_release.apk", getExportFilename()
  151. }
  152. task copyAndRenameDebugAab(type: Copy) {
  153. from "$buildDir/outputs/bundle/debug/build-debug.aab"
  154. into getExportPath()
  155. rename "build-debug.aab", getExportFilename()
  156. }
  157. task copyAndRenameReleaseAab(type: Copy) {
  158. from "$buildDir/outputs/bundle/release/build-release.aab"
  159. into getExportPath()
  160. rename "build-release.aab", getExportFilename()
  161. }