본문 바로가기
웹앱(하이브리드앱)

안드로이드 개발/스테이징/실서버 빌드환경 구성, Firebase 연동 포함

by xavi2019 2020. 10. 29.

앱 이름을 '월간코딩' 이라고 하겠습니다.

 

서버 종류별 빌드 환경 구성

ㅇ 수정할 파일: build.graddle(Module:app)

flavorDimensions "version"
productFlavors {
    live {
        dimension "version"
        manifestPlaceholders = [
                appLabel: "live"
                , appName: "월간코딩"
        ]
        applicationIdSuffix ""
        buildConfigField "String", "HOSTNAME", "\"https://tera.co.kr\""
    }
    dev {
        dimension "version"
        manifestPlaceholders = [
                appLabel: "dev"
                , appName: "(D)월간코딩"
        ]
        applicationIdSuffix ".dev"
        buildConfigField "String", "HOSTNAME", "\"https://dev.tera.co.kr\""
    }
    stage {
        dimension "version"
        manifestPlaceholders = [
                appLabel: "stage"
                , appName: "(S)월간코딩"
        ]
        applicationIdSuffix ".stage"
        buildConfigField "String", "HOSTNAME", "\"https://stage.tera.co.kr\""
    }

}

ㅇ 폴더 생성

    

- suffix와 동일한 폴더 생성

/app/src/dev, app/src/stage

- Firebase 설정의 경우 /app/src/main의 google-services.json 을 위 폴더에 각각 복사

- google-services.json의 내용에 들어가서 .dev, .stage 번들Id 추가

 

 

 

ㅇ 수정할 파일: AndroidManifest.xml

위 1번 파일에서 정의한 appName을 앱 이름으로 한다.

<application
	다른 부분 
	android:label="${appName}"
	다른 부분 
>

 

서버 주소를 읽어온다.

ㅇ 수정할 파일: MainActivity.java

// ===================================================
// 브라우저 셋업 ========================================
// ===================================================
Constants.server_url = BuildConfig.HOSTNAME;
Log.d(TAG, "초기 서버 주소: " + Constants.server_url);
setupBrowser(server_url);

 

 

스테이지/개발 표시

 

- TextView 위젯 생성

ㅇ수정할 파일 : activity_main.xml

<TextView
    android:id="@+id/tv_service_mode"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#7EFFF200"
    android:padding="8dp"
    android:text="Service_Mode"
    android:textAlignment="center"
    android:textColor="#000000"
    android:visibility="invisible"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

ㅇ 수정할 파일: MainActivity.java

// 변수 선언
private TextView tvServiceMode;

// 위젯 할당
tvServiceMode = (TextView) findViewById(R.id.tv_service_mode);


//
// 스테이지 개발 표시 OnCreate
//
setModeButton();




//
// 스테이지 개발 표시 함수 선언
//
private void setModeButton() {
    if ( server_url.contains("stage") || server_url.contains("dev") ) {

        String buttonText = "";

        if (server_url.contains("stage")) {
            buttonText = " STAGE ";
        } else if (server_url.contains("dev")) {
            buttonText = " DEV ";
        }
        tvServiceMode.setText(buttonText);
        tvServiceMode.setVisibility(View.VISIBLE);
    }
}

 

 

 

 

(부록) apk 파일 이름 변경

파일: build.graddle(Module:app)

defaultConfig {
	// 기타내용들
	setProperty("archivesBaseName", "월간코딩-v" + versionName)
}

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
        }
    }

 

댓글