- 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
import android.content.Context; | |
import android.content.res.Resources; | |
import android.graphics.Bitmap; | |
import android.graphics.BitmapFactory; | |
import android.graphics.Canvas; | |
import android.graphics.Point; | |
import android.view.GestureDetector; | |
import android.view.GestureDetector.SimpleOnGestureListener; | |
import android.view.MotionEvent; |
<?xml version="1.0" encoding="utf-8"?> | |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
package="de.mobilej.overlay" | |
android:versionCode="1" | |
android:versionName="1.0" > | |
<uses-sdk android:minSdkVersion="14" /> | |
<application android:label="SystemOverlay" > | |
<activity |
import org.junit.rules.TestRule; | |
import org.junit.runner.Description; | |
import org.junit.runners.model.Statement; | |
/** Got flaky tests? Shampoo them away. */ | |
public final class ShampooRule implements TestRule { | |
private final int iterations; | |
public ShampooRule(int iterations) { | |
if (iterations < 1) throw new IllegalArgumentException("iterations < 1: " + iterations); |
class ReverseProxyDispatcher extends Dispatcher { | |
private final OkHttpClient client; | |
private final HttpUrl serverUrl; | |
public ReverseProxyDispatcher(HttpUrl url) { | |
serverUrl = url; | |
client = new OkHttpClient.Builder().build(); | |
} | |
@Override |
interface ReverseProxyValidator { | |
void validate(RecordedRequest request, Response response); | |
} | |
class ReverseProxyDispatcher extends Dispatcher { | |
private final OkHttpClient client; | |
private final HttpUrl serverUrl; | |
private final ReverseProxyValidator validator; | |
public ReverseProxyDispatcher(HttpUrl url, ReverseProxyValidator validator) { |
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 |
//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") |
/* | |
* 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. | |
* |
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(" ") | |
} | |
} | |
} |