- Create a random key.
- Encrypt the random key via an SSH RSA public key
- Send the encrypted file and encrypted key
- Encrypt the key
- Encrypt the file
openssl genrsa -out rsa.private 4096
Kotlin K2 FIR Example. Related Post: https://handstandsam.com/2024/05/30/kotlin-k2-fir-quickstart-guide/ |
ext.reversedMap = [:] as Map<String, String> | |
void buildReversedMap(String versionCatalogName) { | |
def versionCatalog = rootProject.extensions | |
.getByType(VersionCatalogsExtension).named(versionCatalogName) | |
reversedMap = versionCatalog.getDependencyAliases() | |
.collectEntries { alias -> | |
def versionCatalogAlias = "${versionCatalogName}.${alias}" | |
def module = versionCatalog.findDependency(alias).get().get() | |
def fullModuleName = "${module.getModule()}:${module.getVersionConstraint()}" |
import com.google.common.graph.Graphs | |
import com.google.common.graph.MutableValueGraph | |
import com.google.common.graph.ValueGraphBuilder | |
import org.gradle.api.DefaultTask | |
import org.gradle.api.Project | |
import org.gradle.api.artifacts.Configuration | |
import org.gradle.api.artifacts.ProjectDependency | |
import org.gradle.api.tasks.Input | |
import org.gradle.api.tasks.TaskAction | |
import org.gradle.api.tasks.options.Option |
from xml.dom.minidom import parseString | |
# Documentation on Permissions in AndroidManifest.xml | |
# https://developer.android.com/guide/topics/manifest/manifest-intro#perms | |
data = '' # string data from file | |
with open('AndroidManifest.xml', 'r') as f: | |
data = f.read() | |
dom = parseString(data) # parse file contents to xml dom |
import androidx.compose.animation.core.Animatable | |
import androidx.compose.animation.core.LinearEasing | |
import androidx.compose.animation.core.tween | |
import androidx.compose.foundation.Canvas | |
import androidx.compose.foundation.border | |
import androidx.compose.foundation.layout.Box | |
import androidx.compose.foundation.layout.Column | |
import androidx.compose.foundation.layout.fillMaxSize | |
import androidx.compose.foundation.layout.height | |
import androidx.compose.foundation.layout.padding |
android.applicationVariants.all { variant -> | |
task "open${variant.name.capitalize()}" { | |
dependsOn "install${variant.name.capitalize()}" | |
doLast { | |
exec { | |
commandLine "adb shell monkey -p ${variant.applicationId} -c android.intent.category.LAUNCHER 1".split(" ") | |
} | |
} | |
} |
/* | |
* Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. | |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
* | |
* This code is free software; you can redistribute it and/or modify it | |
* under the terms of the GNU General Public License version 2 only, as | |
* published by the Free Software Foundation. Oracle designates this | |
* particular file as subject to the "Classpath" exception as provided | |
* by Oracle in the LICENSE file that accompanied this code. | |
* |
//region XcFramework tasks | |
val xcFrameworkPath = "xcframework/${project.name}.xcframework" | |
tasks.create<Delete>("deleteXcFramework") { delete = setOf(xcFrameworkPath) } | |
val buildXcFramework by tasks.registering { | |
dependsOn("deleteXcFramework") | |
group = "build" | |
val mode = "Release" | |
val frameworks = arrayOf("iosArm64", "iosX64") |
package com.example.myapplication | |
import androidx.compose.animation.AnimatedVisibility | |
import androidx.compose.animation.ExperimentalAnimationApi | |
import androidx.compose.foundation.Box | |
import androidx.compose.foundation.clickable | |
import androidx.compose.foundation.layout.Arrangement | |
import androidx.compose.foundation.layout.Column | |
import androidx.compose.foundation.layout.Row | |
import androidx.compose.foundation.layout.Spacer |