diff --git a/build.gradle b/build.gradle index e2a35417..a81018f4 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '2.0.21' + ext.kotlin_version = '2.1.21' repositories { google() diff --git a/justfile b/justfile new file mode 100644 index 00000000..05eb9f81 --- /dev/null +++ b/justfile @@ -0,0 +1,5 @@ +set windows-shell := ["powershell.exe", "-NoLogo", "-Command"] + +push-server: + ./gradlew assembleRelease + adb push ./server/build/outputs/apk/release/server-release-unsigned.apk /data/local/tmp/souls \ No newline at end of file diff --git a/server/build.gradle b/server/build.gradle index e9790b06..ae049555 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -6,7 +6,7 @@ android { compileSdk 35 defaultConfig { applicationId "com.genymobile.scrcpy" - minSdkVersion 21 + minSdkVersion 26 targetSdkVersion 35 versionCode 30301 versionName "3.3.1" @@ -22,11 +22,26 @@ android { buildConfig true aidl true } + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = "17" + } + packaging { + resources { + excludes += ['META-INF/INDEX.LIST', 'META-INF/io.netty.versions.properties'] + } + } } dependencies { - //noinspection GradleDependency - implementation "org.jetbrains.kotlin:kotlin-stdlib:2.0.21" + //noinspection GradleDependencyleVersion + implementation "org.jetbrains.kotlin:kotlin-stdlib:2.1.21" + implementation("io.ktor:ktor-server-netty:3.2.0") + testImplementation 'junit:junit:4.13.2' } diff --git a/server/src/main/java/com/genymobile/scrcpy/Server.kt b/server/src/main/java/com/genymobile/scrcpy/Server.kt index 6e3e957c..b6f48d25 100644 --- a/server/src/main/java/com/genymobile/scrcpy/Server.kt +++ b/server/src/main/java/com/genymobile/scrcpy/Server.kt @@ -24,6 +24,12 @@ import com.genymobile.scrcpy.video.ScreenCapture import com.genymobile.scrcpy.video.SurfaceCapture import com.genymobile.scrcpy.video.SurfaceEncoder import com.genymobile.scrcpy.video.VideoSource +import io.ktor.http.ContentType +import io.ktor.server.engine.embeddedServer +import io.ktor.server.netty.Netty +import io.ktor.server.response.respondText +import io.ktor.server.routing.get +import io.ktor.server.routing.routing import java.io.File import java.io.IOException @@ -39,6 +45,19 @@ object Server { SERVER_PATH = classPaths[0] } + /** + * 开启http server + */ + private fun startHttpServer() { + embeddedServer(Netty, 8080) { + routing { + get("/") { + call.respondText("Hello, world!", ContentType.Text.Html) + } + } + }.start(wait = true) + } + @Throws(IOException::class, ConfigurationException::class) private fun scrcpy(options: Options) { if (Build.VERSION.SDK_INT < AndroidVersions.API_31_ANDROID_12 && options.getVideoSource() == VideoSource.CAMERA) { @@ -247,7 +266,8 @@ object Server { } try { - scrcpy(options) + startHttpServer() +// scrcpy(options) } catch (e: ConfigurationException) { // Do not print stack trace, a user-friendly error-message has already been logged }