2021년 8월 29일 일요일

scrcpy (안드로이드 단말을 PC에 연결해서 화면 보기, 스크린 미러링)

 

https://github.com/Genymobile/scrcpy


이 어플리케이션은 USB ( 혹은 TCP/IP ) 로 연결된 Android 디바이스를 화면에 보여주고 관리하는 것을 제공합니다.


실행파일은 git hub에 컴파일된 링크가 있습니다.

Get the app

Summary

  • Linux: apt install scrcpy
  • Windows: download
  • macOS: brew install scrcpy

Build from sources: BUILD (simplified process)


windows용을 받으면

adb와 dll 몇개와 배치파일로 구성되어져 있습니다.

scrcpy-console.bat 파일을 실행키면 동작이 됩니다. 단말은 adb가 가능한 상태가 되어있어야 합니다.


구성은 scrcpy-server 와 scrcpy.exe 두개가 주된 기능을 가지게 됩니다.



소스 분석

빌드하는쪽을 따라가면 소스가 어떤형태로 되어있는지 분석이 가능합니다.

scrcpy-server

https://github.com/Genymobile/scrcpy/blob/master/release.mk

SERVER_BUILD_DIR := build-server

서버 소스는 여기에 https://github.com/Genymobile/scrcpy/tree/master/server

https://github.com/Genymobile/scrcpy/blob/master/server/src/main/java/com/genymobile/scrcpy/Server.java

    public static void main(String... args) throws Exception {

        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {

            @Override

            public void uncaughtException(Thread t, Throwable e) {

                Ln.e("Exception on thread " + t, e);

                suggestFix(e);

            }

        });

        Options options = createOptions(args);

        Ln.initLogLevel(options.getLogLevel());

        scrcpy(options);

    }



scrcpy.exe

https://github.com/Genymobile/scrcpy/tree/master/app

main.c->scrcpy.c

adb로 jar파일을 push한뒤 실행시킴

https://github.com/Genymobile/scrcpy/blob/master/app/src/server.c

if (!push_server(params->serial)) {

#define DEVICE_SERVER_PATH "/data/local/tmp/scrcpy-server.jar"

server->process = execute_server(server, params);

const char *const cmd[] = {
"shell",
"CLASSPATH=" DEVICE_SERVER_PATH,
"app_process",

return adb_execute(server->serial, cmd, ARRAY_LEN(cmd));





댓글 없음:

댓글 쓰기