language:unity:빌드_스크립트 [KIEUNs WIKI]

사용자 도구

사이트 도구


사이드바

language:unity:빌드_스크립트

공통

그냥 복붙용 코드 보는게 나을듯.

빌드용 커맨드

AOS

빌드용 커맨드

맥용 터미널에서 호출하는 예시. 아래는 보기 좋게 줄 구분이 되어 있지만 실제 쓸때는 한줄이어야 함.

-quit -batchmode 
-projectPath $WORKSPACE/my_project
-executeMethod BuildProc.aos_release 
-logFile $WORKSPACE/../_build_/$JOB_BASE_NAME-build-log-$BUILD_NUMBER.txt 
-CustomArgs:buildPath=$WORKSPACE/../_build_/my_project-$BUILD_NUMBER.apk
  • quit: 빌드 끝내면 프로세스 종료하도록
  • batchmode: 에디터를 띄우지 않도록
  • projectPath: 프로젝트의 폴더. 'Assets' 폴더가 있는 경로 입력
  • executeMethod: 빌드 스크립트. 만들어서 쓰는게 편함.
  • logFile: 로그 파일을 위치 지정. 정확히 파일명을 지정해서 거기에 적히도록.
  • CustomArgs: 추가 파라미터. 더 많은 옵션을 받기 위해서 사용한다.

젠킨스옵션

  • $WORKSPACE : 현재 JOB의 작업 폴더
  • $JOB_BASE_NAME : 현재의 젠킨스 잡 이름
  • $BUILD_NUMBER : 현재 빌드 번호

스크립트

#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine;
using UnityEditor.Build.Reporting;
 
// MonoBehaviour 은 없어도 되는듯?
public class BuildProc : MonoBehaviour
{
    // 메뉴에 추가해서 테스트 해볼 수 있게
    [MenuItem("BUILD/AOS - Release")]
    public static void aos_release()
    {
        // CommandLineReader 별도 클래스를 써서, 추가 파라미터를 받아온다.
 
        // 'buildPath'라는 추가 값을 받아서 사용
        string _build_path = CommandLineReader.GetCustomArgument("buildPath");
        Debug.Log("[BLD] all cmdline: " + CommandLineReader.GetCommandLine() + " \n");
        Debug.Log("[BLD] build path: cmdline: " + _build_path + " \n");
 
        // 프로젝트 세팅 외에 이렇게 씬을 직접 넣어야 하는지는 미지수. 테스트 필요.
        BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
        buildPlayerOptions.scenes = new[] { "Assets/Scenes/AppMain.unity" };
 
        // 최종 파일을 어디에 저장할 것인가?
        if(_build_path == "") { buildPlayerOptions.locationPathName = "build_aos/make_again.apk"; }
        else { buildPlayerOptions.locationPathName = _build_path; }
 
        Debug.Log("[BLD] build path: final: " + _build_path + " \n");
 
        // 안드로이드용 설정
        buildPlayerOptions.target = BuildTarget.Android;
        buildPlayerOptions.options = BuildOptions.None;
 
        //
        // 안드로이드 빌드할때 필요한 인증키와 암호. 코드 안에서 설정 가능하다. 좋군.
        //
        PlayerSettings.Android.keyaliasName = "my_project";
        PlayerSettings.Android.keyaliasPass = "xxxxxx";
        PlayerSettings.Android.keystoreName = "my_project-key.keystore";
        PlayerSettings.Android.keystorePass = "xxxxxx";
 
        // 빌드 고고
        BuildReport _report = BuildPipeline.BuildPlayer(buildPlayerOptions);
        BuildSummary summary = _report.summary;
 
        if(summary.result == BuildResult.Succeeded) {
            Debug.Log("Build succeeded: " + summary.totalSize.ToString() + " bytes\n");
        }
        else if(summary.result == BuildResult.Failed) {
            Debug.Log("Build failed\n");
        }
    }
 
    //
    // 나머지 부분은 ios라서 아래쪽에
    //
}

iOS

ios용 빌드는, Xcode용 프로젝트를 export 하는 것으로 작업이 끝난다.

Xcode 빌드는 직접하거나, 외부툴로 빌드가 수행 되도록 설정해야 한다. Jenkins의 xcode 플러그인으로 자동 빌드 가능.

빌드용 커맨드

맥용 터미널에서 호출하는 예시. 아래는 보기 좋게 줄 구분이 되어 있지만 실제 쓸때는 한줄이어야 함.

-batchmode -quit 
-executeMethod BuildProc.ios_release 
-projectPath $WORKSPACE/my_project
-logFile $WORKSPACE/../_xcode_/$JOB_BASE_NAME-build_log-$BUILD_NUMBER.txt 
-CustomArgs:buildPath=$WORKSPACE/../_xcode_/$JOB_BASE_NAME-$BUILD_NUMBER

빌드 파라미터 설명은 위와(빌드용_커맨드1) 같음.

스크립트

{
    [MenuItem("BUILD/iOS - Release")]
    public static void ios_release()
    {
        if(Application.platform != RuntimePlatform.OSXEditor) { Debug.Log("! Run on OSX\n"); return; }
 
        string _build_path = CommandLineReader.GetCustomArgument("buildPath");
        Debug.Log("[BLD] all cmdline: " + CommandLineReader.GetCommandLine() + " \n");
        Debug.Log("[BLD] build path: cmdline: " + _build_path + " \n");
 
        // 씬을 추가해야 하는가? 는 나중에 테스트 해보기로.
        BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
        buildPlayerOptions.scenes = new[] { "Assets/Scenes/AppMain.unity" };
 
        if(_build_path == "") { buildPlayerOptions.locationPathName = "./../_build_"; }
        else { buildPlayerOptions.locationPathName = _build_path; }
 
        Debug.Log("[BLD] build path: final: " + _build_path + " \n");
 
        // 개발 플랫폼 설정
        buildPlayerOptions.target = BuildTarget.iOS;
        buildPlayerOptions.options = BuildOptions.None;
 
        // 추가 옵션 없이 바로 빌드 고
        BuildReport _report = BuildPipeline.BuildPlayer(buildPlayerOptions);
        BuildSummary summary = _report.summary;
 
        if(summary.result == BuildResult.Succeeded) {
            Debug.Log("Build succeeded: " + summary.totalSize.ToString() + " bytes\n");
        }
        else if(summary.result == BuildResult.Failed) {
            Debug.Log("Build failed\n");
        }
    }
}

그외 : CommandLineReader

  • CommandLineReader 클래스는 귀찮으니 여기에도 복사해둠.

CommandLineReader.cs (클릭하면 열림)

language/unity/빌드_스크립트.txt · 마지막으로 수정됨: 2020/01/10 16:42 저자 kieuns