Update version to 1.1.8 and fix version code to 9 in Android build files

This commit is contained in:
hansoo
2025-04-05 20:52:14 +09:00
parent e5caa27e91
commit 4f1705c3b7
14 changed files with 1008 additions and 277 deletions

View File

@@ -0,0 +1,242 @@
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 20cd809..fe19eb4 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -1,5 +1,19 @@
apply plugin: 'com.android.application'
+// 버전 정보를 properties 파일에서 동적으로 로드
+def versionPropsFile = rootProject.file('version.properties')
+def versionProps = new Properties()
+if (versionPropsFile.exists()) {
+ versionPropsFile.withInputStream { stream -> versionProps.load(stream) }
+}
+
+def versionName = versionProps['versionName'] ?: "1.1.1.2"
+def versionCode = (versionProps['versionCode'] ?: "6").toInteger()
+def buildNumber = (versionProps['buildNumber'] ?: "6").toInteger()
+
+// 버전 정보 로깅
+println "버전 정보 로드: versionName=${versionName}, versionCode=${versionCode}, buildNumber=${buildNumber}"
+
// 버전 정보를 직접 설정
android {
namespace "com.lovable.zellyfinance"
@@ -8,10 +22,10 @@ android {
applicationId "com.lovable.zellyfinance"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 6
- versionName "1.1.1.2"
+ versionCode versionCode
+ versionName "${versionName}"
// 빌드 번호 추가 - BuildConfig 필드로 정의
- buildConfigField "int", "BUILD_NUMBER", "6"
+ buildConfigField "int", "BUILD_NUMBER", "${buildNumber}"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
diff --git a/android/app/src/main/java/com/lovable/zellyfinance/BuildInfoPlugin.java b/android/app/src/main/java/com/lovable/zellyfinance/BuildInfoPlugin.java
index 3520f5d..0957128 100644
--- a/android/app/src/main/java/com/lovable/zellyfinance/BuildInfoPlugin.java
+++ b/android/app/src/main/java/com/lovable/zellyfinance/BuildInfoPlugin.java
@@ -1,4 +1,3 @@
-
package com.lovable.zellyfinance;
import android.os.Build;
@@ -27,16 +26,27 @@ public class BuildInfoPlugin extends Plugin {
JSObject ret = new JSObject();
- // 빌드 정보 수집
+ // BuildConfig에서 동적으로 버전 정보 가져오기
String versionName = BuildConfig.VERSION_NAME;
int versionCode = BuildConfig.VERSION_CODE;
- int buildNumber = BuildConfig.BUILD_NUMBER;
- String packageName = getContext().getPackageName();
+ int buildNumber;
+
+ // 빌드 넘버는 커스텀 필드이므로 try-catch로 확인
+ try {
+ buildNumber = BuildConfig.BUILD_NUMBER;
+ Log.d(TAG, "BuildConfig.BUILD_NUMBER: " + buildNumber);
+ } catch (Exception e) {
+ Log.e(TAG, "BUILD_NUMBER 필드 접근 오류, 기본값 사용", e);
+ buildNumber = versionCode; // 빌드 넘버가 없으면 버전 코드와 동일하게 설정
+ }
// 디버깅을 위한 로그 출력
+ Log.d(TAG, "BuildConfig 클래스: " + BuildConfig.class.getName());
Log.d(TAG, "버전명: " + versionName);
Log.d(TAG, "버전 코드: " + versionCode);
Log.d(TAG, "빌드 번호: " + buildNumber);
+
+ String packageName = getContext().getPackageName();
Log.d(TAG, "패키지명: " + packageName);
// 결과 객체에 값 설정
@@ -49,19 +59,17 @@ public class BuildInfoPlugin extends Plugin {
ret.put("platform", "android");
// 현재 날짜를 디버깅 정보로 추가
- ret.put("buildDate", new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date()));
+ ret.put("timestamp", System.currentTimeMillis());
- Log.d(TAG, "빌드 정보 요청 성공 처리: " + ret.toString());
+ // 성공 응답
call.resolve(ret);
} catch (Exception e) {
- Log.e(TAG, "빌드 정보 가져오기 실패", e);
- JSObject errorResult = new JSObject();
- errorResult.put("versionName", "1.0.0");
- errorResult.put("versionCode", 1);
- errorResult.put("buildNumber", 1);
- errorResult.put("error", e.getMessage());
- errorResult.put("platform", "android-error");
- call.resolve(errorResult); // 에러가 발생해도 앱이 중단되지 않도록 resolve 호출
+ // 오류 로깅 강화
+ Log.e(TAG, "빌드 정보 가져오기 오류", e);
+ JSObject errorObj = new JSObject();
+ errorObj.put("message", e.getMessage());
+ errorObj.put("stack", Log.getStackTraceString(e));
+ call.reject("빌드 정보 가져오기 실패", errorObj);
}
}
}
diff --git a/src/utils/platform.ts b/src/utils/platform.ts
index c9a89de..1a5af86 100644
--- a/src/utils/platform.ts
+++ b/src/utils/platform.ts
@@ -1,4 +1,3 @@
-
/**
* 플랫폼 관련 유틸리티 함수들
*/
@@ -30,6 +29,15 @@ export const isNativePlatform = (): boolean => {
* 앱 버전 정보 가져오기
*/
export const getAppVersionInfo = async () => {
+ // 기본값 설정 - 플러그인 실패 시 사용
+ const defaultVersionInfo = {
+ versionName: '1.0.0',
+ versionCode: 1,
+ buildNumber: 1,
+ platform: Capacitor.getPlatform(),
+ defaultValues: true
+ };
+
try {
// 디버깅을 위한 플랫폼 체크 로그
console.log('현재 플랫폼:', Capacitor.getPlatform());
@@ -39,65 +47,63 @@ export const getAppVersionInfo = async () => {
if (Capacitor.isPluginAvailable('BuildInfo')) {
try {
// 플러그인 호출 시도
- // @ts-ignore - 플러그인이 런타임에 등록되므로 타입 체크를 무시
+ // @ts-expect-error - 플러그인이 런타임에 등록되므로 타입 체크를 무시
const buildInfo = await Capacitor.Plugins.BuildInfo.getBuildInfo();
- console.log('네이티브에서 받은 빌드 정보:', buildInfo);
+ console.log('네이티브에서 받은 빌드 정보(raw):', JSON.stringify(buildInfo));
- // 받은 정보가 유효한지 확인
- if (buildInfo && typeof buildInfo === 'object') {
- // iOS에서는 buildNumber가 문자열로 올 수 있으므로 숫자로 변환
- let buildNumberValue = buildInfo.buildNumber;
- if (typeof buildNumberValue === 'string') {
- buildNumberValue = parseInt(buildNumberValue, 10);
- }
-
- return {
- versionName: buildInfo.versionName || '1.0.1',
- buildNumber: !isNaN(buildNumberValue) ? buildNumberValue : 2,
- versionCode: buildInfo.versionCode,
- platform: Capacitor.getPlatform(),
+ // 수신한 데이터가 null 또는 undefined인 경우 체크
+ if (!buildInfo) {
+ console.warn('네이티브 빌드 정보가 없음');
+ throw new Error('빌드 정보를 받지 못했습니다');
+ }
+
+ // 받은 정보가 유효한지 확인 및 타입 변환
+ if (typeof buildInfo === 'object') {
+ // 타입 변환 및 기본값 설정 - 명시적으로 문자열/숫자 타입 변환
+ const result = {
+ versionName: typeof buildInfo.versionName === 'string' ? buildInfo.versionName :
+ (buildInfo.versionName ? String(buildInfo.versionName) : defaultVersionInfo.versionName),
+ versionCode: typeof buildInfo.versionCode === 'number' ? buildInfo.versionCode :
+ (buildInfo.versionCode ? Number(buildInfo.versionCode) : defaultVersionInfo.versionCode),
+ buildNumber: typeof buildInfo.buildNumber === 'number' ? buildInfo.buildNumber :
+ (buildInfo.buildNumber ? Number(buildInfo.buildNumber) : defaultVersionInfo.buildNumber),
+ platform: typeof buildInfo.platform === 'string' ? buildInfo.platform :
+ (buildInfo.platform ? String(buildInfo.platform) : defaultVersionInfo.platform),
+ timestamp: buildInfo.timestamp || Date.now(),
pluginResponse: JSON.stringify(buildInfo)
};
+
+ // 값이 기본값인지 확인 (BuildConfig에서 기본값을 반환하는 경우)
+ if (result.versionName === '1.0' && result.versionCode === 1 && isAndroidPlatform()) {
+ console.warn('플러그인이 기본값을 반환함, 빌드 설정을 확인해야 함');
+ }
+
+ console.log('변환된 빌드 정보:', result);
+ return result;
}
+ throw new Error('유효하지 않은 빌드 정보 응답');
} catch (pluginError) {
console.error('BuildInfo 플러그인 호출 오류:', pluginError);
+ // 오류 발생시 기본값 사용
+ return {
+ ...defaultVersionInfo,
+ error: true,
+ errorMessage: String(pluginError)
+ };
}
+ } else {
+ console.warn('BuildInfo 플러그인을 사용할 수 없음');
+ // 플러그인이 없는 경우 기본값 반환
+ return defaultVersionInfo;
}
-
- // 안드로이드인 경우 기본값을 하드코딩된 값으로 설정
- if (isAndroidPlatform()) {
- // 안드로이드 앱 빌드 정보를 하드코딩된 값으로 제공
- // 실제 앱에서는 빌드 과정에서 이 값들이 업데이트되어야 함
- return {
- versionName: '1.0.1',
- buildNumber: 3, // 업데이트된 빌드 번호
- versionCode: 1,
- platform: 'android'
- };
- }
-
- // iOS인 경우 기본값
- if (isIOSPlatform()) {
- return {
- versionName: '1.0.1',
- buildNumber: 3, // 업데이트된 빌드 번호
- platform: 'ios'
- };
- }
-
- // 플러그인이 없는 경우 기본값 반환
- return {
- versionName: '1.0.1',
- buildNumber: 3, // 업데이트된 빌드 번호
- platform: Capacitor.getPlatform()
- };
} catch (error) {
- console.error('앱 버전 정보를 가져오는 중 오류 발생:', error);
+ console.error('앱 버전 정보 가져오기 오류:', error);
+ // 오류 발생 시에도 앱 실행은 계속되도록 기본값 반환
return {
- versionName: '1.0.1',
- buildNumber: 3, // 업데이트된 빌드 번호
- error: true
+ ...defaultVersionInfo,
+ error: true,
+ errorMessage: String(error)
};
}
};