Skip to content

Instantly share code, notes, and snippets.

View olshevski's full-sized avatar
🪄
shellcasting

Vitali Olshevski olshevski

🪄
shellcasting
View GitHub Profile
/**
* Signs release build with the specified signature parameters. When parameters are omitted the
* release APK file will be left unsigned.
*
* By default, keystore.properties file in the project's or root project's folder will be used as a
* source of required signing data:
*
* storeFile=/Users/me/keyvault/release.keystore
* storePassword=pass123
* keyAlias=sampleAlias
/*
* Initializes versionName and versionCode from version.properties file.
*
* Just create version.properties file in the project's or root project's folder with the next
* properties:
*
* major=1
* minor=2
* patch=3
*
final String TWINE_INPUT_FILE = "${projectDir}/translations/twine.txt"
final String TWINE_OUTPUT_DIR = "${projectDir}/build/generated/twine"
android.applicationVariants.all { variant ->
variant.registerGeneratedResFolders(files(TWINE_OUTPUT_DIR))
}
task generateLocalizations {
description "Generates localizations from twine.txt file."
inputs.file(TWINE_INPUT_FILE)
@olshevski
olshevski / CMakeLists.txt
Created December 21, 2020 13:59
add OpenCV to a project using CMake
cmake_minimum_required(VERSION 3.6)
# opencv
set(OpenCV_DIR ${CMAKE_CURRENT_SOURCE_DIR}/opencv-4.5.0/sdk/native/jni)
find_package(OpenCV REQUIRED core imgproc) # specify desired OpenCV modules here
# mylibname
add_library(mylibname SHARED nativeutils.cpp)
target_include_directories(mylibname PRIVATE
${OpenCV_INCLUDE_DIRS})
@olshevski
olshevski / settings.gradle.kts
Created November 5, 2021 09:24
Example of resolutionStrategy in pluginManagement block
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
resolutionStrategy {
eachPlugin {
when {
requested.id.namespace == "com.android" -> {
@olshevski
olshevski / reimagined_demo_1.kt
Last active February 4, 2022 10:03
For "Compose Navigation Reimagined" blogpost on Medium
sealed class Screen : Parcelable {
@Parcelize
object First : Screen()
@Parcelize
data class Second(val id: Int) : Screen()
@Parcelize
data class Third(val text: String) : Screen()
@olshevski
olshevski / reimagined_demo_2.kt
Created February 4, 2022 10:04
For "Compose Navigation Reimagined" blogpost on Medium
@Composable
fun NavHostScreen() {
val navController = rememberNavController<Screen>(
startDestination = Screen.First,
)
NavBackHandler(navController)
NavHost(controller = navController) { screen ->
when (screen) {