mirror of
https://github.com/RGBCube/serenity
synced 2025-07-28 05:37:44 +00:00
Ladybird: Add new template Kotlin Android application without Qt
This template app from Android Studio should hopefully be more fun to work on than the Qt wrapped application we were using before. :^) It currently builds the native code using gradle rules, and has a stub WebViewImplementationNative class that will wrap a c++ class of the same name that inhertis from WebView::ViewImplementation. Spawning helper processes and creating proper views in Kotlin is next on the list.
This commit is contained in:
parent
6e8f1549a3
commit
7bc009d80f
50 changed files with 943 additions and 370 deletions
78
Ladybird/Android/build.gradle.kts
Normal file
78
Ladybird/Android/build.gradle.kts
Normal file
|
@ -0,0 +1,78 @@
|
|||
import com.android.build.gradle.internal.tasks.factory.dependsOn
|
||||
|
||||
plugins {
|
||||
id("com.android.application")
|
||||
id("org.jetbrains.kotlin.android")
|
||||
}
|
||||
|
||||
// FIXME: Move this somewhere nicer, with better behavior (like controlling host compiler)
|
||||
task<Exec>("buildLagomTools") {
|
||||
commandLine = listOf("sh", "-c", "cmake -S ../../Meta/Lagom -B $buildDir/lagom-tools " +
|
||||
" -Dpackage=LagomTools -DCMAKE_INSTALL_PREFIX=$buildDir/lagom-tools-install -GNinja" +
|
||||
" -DSERENITY_CACHE_DIR=$buildDir/caches;" +
|
||||
" ninja -C $buildDir/lagom-tools install")
|
||||
}
|
||||
tasks.named("preBuild").dependsOn("buildLagomTools")
|
||||
|
||||
android {
|
||||
namespace = "org.serenityos.ladybird"
|
||||
compileSdk = 33
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "org.serenityos.ladybird"
|
||||
minSdk = 30
|
||||
targetSdk = 33
|
||||
versionCode = 1
|
||||
versionName = "1.0"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
cppFlags += "-std=c++20"
|
||||
arguments += listOf(
|
||||
"-DLagomTools_DIR=$buildDir/lagom-tools-install/share/LagomTools",
|
||||
"-DSERENITY_CACHE_DIR=$buildDir/caches"
|
||||
)
|
||||
}
|
||||
}
|
||||
ndk {
|
||||
// Specifies the ABI configurations of your native
|
||||
// libraries Gradle should build and package with your app.
|
||||
abiFilters += listOf("x86_64", "arm64-v8a")
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
path = file("../CMakeLists.txt")
|
||||
version = "3.27.4"
|
||||
}
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
viewBinding = true
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("androidx.core:core-ktx:1.10.1")
|
||||
implementation("androidx.appcompat:appcompat:1.6.1")
|
||||
implementation("com.google.android.material:material:1.9.0")
|
||||
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
|
||||
testImplementation("junit:junit:4.13.2")
|
||||
androidTestImplementation("androidx.test.ext:junit:1.1.5")
|
||||
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue