返回> 网站首页 

windows下scrcpy的server编译

yoours2025-07-22 18:57:11 阅读 129

简介一边听听音乐,一边写写文章。

一、linux下编译使用

build_without_gradle.sh


二、windows下编译

@echo off


:: Configuration

set ANDROID_HOME=D:\Java\Android\android-sdk-windows

set SCRCPY_DEBUG=false

set SCRCPY_VERSION_NAME=3.3.1


:: Default values if environment variables not set

if "%ANDROID_PLATFORM%"=="" set ANDROID_PLATFORM=35

if "%ANDROID_BUILD_TOOLS%"=="" set ANDROID_BUILD_TOOLS=35.0.0

if "%BUILD_DIR%"=="" set BUILD_DIR=build_manual


set PLATFORM_TOOLS=%ANDROID_HOME%\platforms\android-%ANDROID_PLATFORM%

set BUILD_TOOLS_DIR=%ANDROID_HOME%\build-tools\%ANDROID_BUILD_TOOLS%


:: Resolve absolute path for BUILD_DIR

for %%I in ("%BUILD_DIR%") do set BUILD_DIR=%%~fI

set CLASSES_DIR=%BUILD_DIR%\classes

set GEN_DIR=%BUILD_DIR%\gen


:: Get server directory (where this script is located)

set SERVER_DIR=%~dp0

set SERVER_BINARY=scrcpy-server

set ANDROID_JAR=%PLATFORM_TOOLS%\android.jar

set ANDROID_AIDL=%PLATFORM_TOOLS%\framework.aidl

set LAMBDA_JAR=%BUILD_TOOLS_DIR%\core-lambda-stubs.jar


echo Platform: android-%ANDROID_PLATFORM%

echo Build-tools: %ANDROID_BUILD_TOOLS%

echo Build dir: %BUILD_DIR%


:: Clean previous build

if exist "%CLASSES_DIR%" rmdir /s /q "%CLASSES_DIR%"

if exist "%GEN_DIR%" rmdir /s /q "%GEN_DIR%"

if exist "%BUILD_DIR%\%SERVER_BINARY%" del "%BUILD_DIR%\%SERVER_BINARY%"

if exist classes.dex del classes.dex


mkdir "%CLASSES_DIR%"

mkdir "%GEN_DIR%\com\genymobile\scrcpy"


:: Generate BuildConfig.java

echo package com.genymobile.scrcpy;> "%GEN_DIR%\com\genymobile\scrcpy\BuildConfig.java"

echo.>> "%GEN_DIR%\com\genymobile\scrcpy\BuildConfig.java"

echo public final class BuildConfig {>> "%GEN_DIR%\com\genymobile\scrcpy\BuildConfig.java"

echo   public static final boolean DEBUG = %SCRCPY_DEBUG%;>> "%GEN_DIR%\com\genymobile\scrcpy\BuildConfig.java"

echo   public static final String VERSION_NAME = "%SCRCPY_VERSION_NAME%";>> "%GEN_DIR%\com\genymobile\scrcpy\BuildConfig.java"

echo }>> "%GEN_DIR%\com\genymobile\scrcpy\BuildConfig.java"


echo Generating java from aidl...

::cd "%SERVER_DIR%src\main\aidl"


:: 修正AIDL编译命令,添加正确的导入路径

set AIDL_IMPORT_PATHS=-I %SERVER_DIR%src\main\aidl

"%BUILD_TOOLS_DIR%\aidl" %AIDL_IMPORT_PATHS% -o"%GEN_DIR%" %SERVER_DIR%src\main\aidl\android\content\IOnPrimaryClipChangedListener.aidl

"%BUILD_TOOLS_DIR%\aidl" %AIDL_IMPORT_PATHS% -o"%GEN_DIR%" -p"%ANDROID_AIDL%" %SERVER_DIR%src\main\aidl\android\view\IDisplayWindowListener.aidl


:: Fake sources to expose hidden Android types to the project

set FAKE_SRC=%SERVER_DIR%src\android\content\*.java


echo %FAKE_SRC%


:: Main source files

set SRC=E:\test\scrcpy-master\server\src\main\java\com\genymobile\scrcpy\*.java ^

    E:\test\scrcpy-master\server\src\main\java\com\genymobile\scrcpy\audio\*.java ^

    E:\test\scrcpy-master\server\src\main\java\com\genymobile\scrcpy\control\*.java ^

    E:\test\scrcpy-master\server\src\main\java\com\genymobile\scrcpy\device\*.java ^

    E:\test\scrcpy-master\server\src\main\java\com\genymobile\scrcpy\opengl\*.java ^

    E:\test\scrcpy-master\server\src\main\java\com\genymobile\scrcpy\util\*.java ^

    E:\test\scrcpy-master\server\src\main\java\com\genymobile\scrcpy\video\*.java ^

    E:\test\scrcpy-master\server\src\main\java\com\genymobile\scrcpy\wrappers\*.java ^

E:\test\scrcpy-master\server\src\main\java\android\content\*.java


echo Compiling java sources...

cd "%SERVER_DIR%\src\main\java"


"%JAVA_HOME%\bin\javac" -encoding UTF-8 -bootclasspath %ANDROID_JAR% ^

    -cp "%LAMBDA_JAR%;%GEN_DIR%" ^

    -d %CLASSES_DIR% ^

    -source 1.8 -target 1.8 ^

    %FAKE_SRC% ^

    %SRC%


echo Dexing...

cd "%CLASSES_DIR%"


if %ANDROID_PLATFORM% LSS 31 (

    :: use dx

    "%BUILD_TOOLS_DIR%\dx" --dex --output "%BUILD_DIR%\classes.dex" ^

        android\view\*.class ^

        android\content\*.class ^

        com\genymobile\scrcpy\*.class ^

        com\genymobile\scrcpy\audio\*.class ^

        com\genymobile\scrcpy\control\*.class ^

        com\genymobile\scrcpy\device\*.class ^

        com\genymobile\scrcpy\opengl\*.class ^

        com\genymobile\scrcpy\util\*.class ^

        com\genymobile\scrcpy\video\*.class ^

        com\genymobile\scrcpy\wrappers\*.class


    echo Archiving...

    cd "%BUILD_DIR%"

    "%JAVA_HOME%\bin\jar" cvf "%SERVER_BINARY%" classes.dex

    del classes.dex

) else (

    :: use d8

    "%BUILD_TOOLS_DIR%\d8" --classpath "%ANDROID_JAR%" ^

        --output "%BUILD_DIR%\classes.zip" ^

        android\view\*.class ^

        android\content\*.class ^

        com\genymobile\scrcpy\*.class ^

        com\genymobile\scrcpy\audio\*.class ^

        com\genymobile\scrcpy\control\*.class ^

        com\genymobile\scrcpy\device\*.class ^

        com\genymobile\scrcpy\opengl\*.class ^

        com\genymobile\scrcpy\util\*.class ^

        com\genymobile\scrcpy\video\*.class ^

        com\genymobile\scrcpy\wrappers\*.class


    cd "%BUILD_DIR%"

    ren classes.zip "%SERVER_BINARY%"

)


rmdir /s /q "%GEN_DIR%"

rmdir /s /q "%CLASSES_DIR%"


echo Server generated in %BUILD_DIR%\%SERVER_BINARY%


endlocal


微信小程序扫码登陆

文章评论

129人参与,0条评论