1 plugins {
2 id 'com.android.application'
3 }
4
5 def keystorePropertiesFile = rootProject.file('local.properties')
6 def keystoreProperties = new Properties()
7 if (keystorePropertiesFile.exists()) {
8 keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
9 }
10
11 android {
12 compileSdk 34
13 namespace "com.jcrguidepro.app"
14
15 defaultConfig {
16 applicationId "com.jcrguidepro.app"
17 minSdk 21
18 targetSdk 34
19 versionCode 1
20 versionName "1.0.0"
21 }
22
23 signingConfigs {
24 release {
25 if (keystoreProperties.containsKey('release.keystore')) {
26 storeFile file(keystoreProperties['release.keystore'])
27 storePassword keystoreProperties['release.keystore.password']
28 keyAlias keystoreProperties['release.key.alias']
29 keyPassword keystoreProperties['release.key.password']
30 }
31 }
32 }
33
34 buildTypes {
35 debug {
36 applicationIdSuffix ".debug"
37 debuggable true
38 }
39 release {
40 minifyEnabled true
41 shrinkResources true
42 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
43 if (keystoreProperties.containsKey('release.keystore')) {
44 signingConfig signingConfigs.release
45 }
46 }
47 }
48
49 compileOptions {
50 sourceCompatibility JavaVersion.VERSION_11
51 targetCompatibility JavaVersion.VERSION_11
52 }
53
54 lint {
55 disable "BidiSpoofing"
56 }
57 }
58
59 // Automatically copy web assets into the Android project and fix paths
60 tasks.register('copyWebAssets', Copy) {
61 from "../../dist/public"
62 into "src/main/assets/www"
63 duplicatesStrategy = DuplicatesStrategy.INCLUDE
64
65 // Fix absolute paths in index.html to be relative and remove Replit banner
66 filter { line ->
67 line.replaceAll('src="/assets/', 'src="./assets/')
68 .replaceAll('href="/assets/', 'href="./assets/')
69 .replaceAll('src="/manifest.json"', 'src="./manifest.json"')
70 .replaceAll('href="/manifest.json"', 'href="./manifest.json"')
71 .replaceAll('href="/icon-', 'href="./icon-')
72 .replaceAll('src="/icon-', 'src="./icon-')
73 .replaceAll('<script type="text/javascript" src="https://replit.com/public/js/replit-dev-banner.js"></script>', '')
74 }
75 }
76
77 // Make sure assets are copied before building the APK
78 preBuild.dependsOn copyWebAssets
79
80 dependencies {
81 implementation 'androidx.appcompat:appcompat:1.6.1'
82 implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
83 implementation 'androidx.webkit:webkit:1.11.0'
84 }