You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							182 lines
						
					
					
						
							7.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							182 lines
						
					
					
						
							7.9 KiB
						
					
					
				| apply plugin: "com.android.application" | |
| apply plugin: "org.jetbrains.kotlin.android" | |
| apply plugin: "com.facebook.react" | |
| 
 | |
| def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() | |
| 
 | |
| /** | |
|  * This is the configuration block to customize your React Native Android app. | |
|  * By default you don't need to apply any configuration, just uncomment the lines you need. | |
|  */ | |
| react { | |
|     entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim()) | |
|     reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() | |
|     hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc" | |
|     codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() | |
| 
 | |
|     enableBundleCompression = (findProperty('android.enableBundleCompression') ?: false).toBoolean() | |
|     // Use Expo CLI to bundle the app, this ensures the Metro config | |
|     // works correctly with Expo projects. | |
|     cliFile = new File(["node", "--print", "require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })"].execute(null, rootDir).text.trim()) | |
|     bundleCommand = "export:embed" | |
| 
 | |
|     /* Folders */ | |
|      //   The root of your project, i.e. where "package.json" lives. Default is '../..' | |
|     // root = file("../../") | |
|     //   The folder where the react-native NPM package is. Default is ../../node_modules/react-native | |
|     // reactNativeDir = file("../../node_modules/react-native") | |
|     //   The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen | |
|     // codegenDir = file("../../node_modules/@react-native/codegen") | |
|  | |
|     /* Variants */ | |
|     //   The list of variants to that are debuggable. For those we're going to | |
|     //   skip the bundling of the JS bundle and the assets. By default is just 'debug'. | |
|     //   If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. | |
|     // debuggableVariants = ["liteDebug", "prodDebug"] | |
|  | |
|     /* Bundling */ | |
|     //   A list containing the node command and its flags. Default is just 'node'. | |
|     // nodeExecutableAndArgs = ["node"] | |
|  | |
|     // | |
|     //   The path to the CLI configuration file. Default is empty. | |
|     // bundleConfig = file(../rn-cli.config.js) | |
|     // | |
|     //   The name of the generated asset file containing your JS bundle | |
|     // bundleAssetName = "MyApplication.android.bundle" | |
|     // | |
|     //   The entry file for bundle generation. Default is 'index.android.js' or 'index.js' | |
|     // entryFile = file("../js/MyApplication.android.js") | |
|     // | |
|     //   A list of extra flags to pass to the 'bundle' commands. | |
|     //   See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle | |
|     // extraPackagerArgs = [] | |
|  | |
|     /* Hermes Commands */ | |
|     //   The hermes compiler command to run. By default it is 'hermesc' | |
|     // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" | |
|     // | |
|     //   The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" | |
|     // hermesFlags = ["-O", "-output-source-map"] | |
|  | |
|     /* Autolinking */ | |
|     autolinkLibrariesWithApp() | |
| } | |
| 
 | |
| /** | |
|  * Set this to true in release builds to optimize the app using [R8](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization). | |
|  */ | |
| def enableMinifyInReleaseBuilds = (findProperty('android.enableMinifyInReleaseBuilds') ?: false).toBoolean() | |
| 
 | |
| /** | |
|  * The preferred build flavor of JavaScriptCore (JSC) | |
|  * | |
|  * For example, to use the international variant, you can use: | |
|  * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` | |
|  * | |
|  * The international variant includes ICU i18n library and necessary data | |
|  * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that | |
|  * give correct results when using with locales other than en-US. Note that | |
|  * this variant is about 6MiB larger per architecture than default. | |
|  */ | |
| def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+' | |
| 
 | |
| android { | |
|     ndkVersion rootProject.ext.ndkVersion | |
| 
 | |
|     buildToolsVersion rootProject.ext.buildToolsVersion | |
|     compileSdk rootProject.ext.compileSdkVersion | |
| 
 | |
|     namespace 'com.dslak.vdsquiz' | |
|     defaultConfig { | |
|         applicationId 'com.dslak.vdsquiz' | |
|         minSdkVersion rootProject.ext.minSdkVersion | |
|         targetSdkVersion rootProject.ext.targetSdkVersion | |
|         versionCode 35 | |
|         versionName "3.9.0" | |
| 
 | |
|         buildConfigField "String", "REACT_NATIVE_RELEASE_LEVEL", "\"${findProperty('reactNativeReleaseLevel') ?: 'stable'}\"" | |
|     } | |
|     signingConfigs { | |
|         debug { | |
|             storeFile file('debug.keystore') | |
|             storePassword 'android' | |
|             keyAlias 'androiddebugkey' | |
|             keyPassword 'android' | |
|         } | |
|     } | |
|     buildTypes { | |
|         debug { | |
|             signingConfig signingConfigs.debug | |
|         } | |
|         release { | |
|             // Caution! In production, you need to generate your own keystore file. | |
|             // see https://reactnative.dev/docs/signed-apk-android. | |
|             signingConfig signingConfigs.debug | |
|             def enableShrinkResources = findProperty('android.enableShrinkResourcesInReleaseBuilds') ?: 'false' | |
|             shrinkResources enableShrinkResources.toBoolean() | |
|             minifyEnabled enableMinifyInReleaseBuilds | |
|             proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" | |
|             def enablePngCrunchInRelease = findProperty('android.enablePngCrunchInReleaseBuilds') ?: 'true' | |
|             crunchPngs enablePngCrunchInRelease.toBoolean() | |
|         } | |
|     } | |
|     packagingOptions { | |
|         jniLibs { | |
|             def enableLegacyPackaging = findProperty('expo.useLegacyPackaging') ?: 'false' | |
|             useLegacyPackaging enableLegacyPackaging.toBoolean() | |
|         } | |
|     } | |
|     androidResources { | |
|         ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~' | |
|     } | |
| } | |
| 
 | |
| // Apply static values from `gradle.properties` to the `android.packagingOptions` | |
| // Accepts values in comma delimited lists, example: | |
| // android.packagingOptions.pickFirsts=/LICENSE,**/picasa.ini | |
| ["pickFirsts", "excludes", "merges", "doNotStrip"].each { prop -> | |
|     // Split option: 'foo,bar' -> ['foo', 'bar'] | |
|     def options = (findProperty("android.packagingOptions.$prop") ?: "").split(","); | |
|     // Trim all elements in place. | |
|     for (i in 0..<options.size()) options[i] = options[i].trim(); | |
|     // `[] - ""` is essentially `[""].filter(Boolean)` removing all empty strings. | |
|     options -= "" | |
| 
 | |
|     if (options.length > 0) { | |
|         println "android.packagingOptions.$prop += $options ($options.length)" | |
|         // Ex: android.packagingOptions.pickFirsts += '**/SCCS/**' | |
|         options.each { | |
|             android.packagingOptions[prop] += it | |
|         } | |
|     } | |
| } | |
| 
 | |
| dependencies { | |
|     // The version of react-native is set by the React Native Gradle Plugin | |
|     implementation("com.facebook.react:react-android") | |
| 
 | |
|     def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true"; | |
|     def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true"; | |
|     def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true"; | |
| 
 | |
|     if (isGifEnabled) { | |
|         // For animated gif support | |
|         implementation("com.facebook.fresco:animated-gif:${expoLibs.versions.fresco.get()}") | |
|     } | |
| 
 | |
|     if (isWebpEnabled) { | |
|         // For webp support | |
|         implementation("com.facebook.fresco:webpsupport:${expoLibs.versions.fresco.get()}") | |
|         if (isWebpAnimatedEnabled) { | |
|             // Animated webp support | |
|             implementation("com.facebook.fresco:animated-webp:${expoLibs.versions.fresco.get()}") | |
|         } | |
|     } | |
| 
 | |
|     if (hermesEnabled.toBoolean()) { | |
|         implementation("com.facebook.react:hermes-android") | |
|     } else { | |
|         implementation jscFlavor | |
|     } | |
| }
 |