chore: 플랫폼 설정 및 테스트 업데이트

- Android 광고 권한 추가
- macOS 플러그인 등록
- 테스트 mock 업데이트
This commit is contained in:
JiWoong Sul
2026-01-16 20:11:00 +09:00
parent 748160d543
commit 9f077d74a1
5 changed files with 33 additions and 4 deletions

View File

@@ -1,4 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- IAP 결제 권한 -->
<uses-permission android:name="com.android.vending.BILLING" />
<application <application
android:label="asciineverdie" android:label="asciineverdie"
android:name="${applicationName}" android:name="${applicationName}"
@@ -29,6 +32,10 @@
<category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter> </intent-filter>
</activity> </activity>
<!-- AdMob App ID -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-6691216385521068~8216990571"/>
<!-- Don't delete the meta-data below. <!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data <meta-data

View File

@@ -6,13 +6,17 @@ import FlutterMacOS
import Foundation import Foundation
import audio_session import audio_session
import in_app_purchase_storekit
import just_audio import just_audio
import path_provider_foundation import path_provider_foundation
import shared_preferences_foundation import shared_preferences_foundation
import webview_flutter_wkwebview
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin"))
InAppPurchasePlugin.register(with: registry.registrar(forPlugin: "InAppPurchasePlugin"))
JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
WebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "WebViewFlutterPlugin"))
} }

View File

@@ -2,6 +2,9 @@ PODS:
- audio_session (0.0.1): - audio_session (0.0.1):
- FlutterMacOS - FlutterMacOS
- FlutterMacOS (1.0.0) - FlutterMacOS (1.0.0)
- in_app_purchase_storekit (0.0.1):
- Flutter
- FlutterMacOS
- just_audio (0.0.1): - just_audio (0.0.1):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
@@ -11,32 +14,43 @@ PODS:
- shared_preferences_foundation (0.0.1): - shared_preferences_foundation (0.0.1):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- webview_flutter_wkwebview (0.0.1):
- Flutter
- FlutterMacOS
DEPENDENCIES: DEPENDENCIES:
- audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`) - audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`)
- FlutterMacOS (from `Flutter/ephemeral`) - FlutterMacOS (from `Flutter/ephemeral`)
- in_app_purchase_storekit (from `Flutter/ephemeral/.symlinks/plugins/in_app_purchase_storekit/darwin`)
- just_audio (from `Flutter/ephemeral/.symlinks/plugins/just_audio/darwin`) - just_audio (from `Flutter/ephemeral/.symlinks/plugins/just_audio/darwin`)
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
- shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`)
- webview_flutter_wkwebview (from `Flutter/ephemeral/.symlinks/plugins/webview_flutter_wkwebview/darwin`)
EXTERNAL SOURCES: EXTERNAL SOURCES:
audio_session: audio_session:
:path: Flutter/ephemeral/.symlinks/plugins/audio_session/macos :path: Flutter/ephemeral/.symlinks/plugins/audio_session/macos
FlutterMacOS: FlutterMacOS:
:path: Flutter/ephemeral :path: Flutter/ephemeral
in_app_purchase_storekit:
:path: Flutter/ephemeral/.symlinks/plugins/in_app_purchase_storekit/darwin
just_audio: just_audio:
:path: Flutter/ephemeral/.symlinks/plugins/just_audio/darwin :path: Flutter/ephemeral/.symlinks/plugins/just_audio/darwin
path_provider_foundation: path_provider_foundation:
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin
shared_preferences_foundation: shared_preferences_foundation:
:path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin
webview_flutter_wkwebview:
:path: Flutter/ephemeral/.symlinks/plugins/webview_flutter_wkwebview/darwin
SPEC CHECKSUMS: SPEC CHECKSUMS:
audio_session: 728ae3823d914f809c485d390274861a24b0904e audio_session: 728ae3823d914f809c485d390274861a24b0904e
FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1 FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1
in_app_purchase_storekit: 2342c0a5da86593124d08dd13d920f39a52b273a
just_audio: a42c63806f16995daf5b219ae1d679deb76e6a79 just_audio: a42c63806f16995daf5b219ae1d679deb76e6a79
path_provider_foundation: 0b743cbb62d8e47eab856f09262bb8c1ddcfe6ba path_provider_foundation: 0b743cbb62d8e47eab856f09262bb8c1ddcfe6ba
shared_preferences_foundation: 5086985c1d43c5ba4d5e69a4e8083a389e2909e6 shared_preferences_foundation: 5086985c1d43c5ba4d5e69a4e8083a389e2909e6
webview_flutter_wkwebview: 29eb20d43355b48fe7d07113835b9128f84e3af4
PODFILE CHECKSUM: 54d867c82ac51cbd61b565781b9fada492027009 PODFILE CHECKSUM: 54d867c82ac51cbd61b565781b9fada492027009

View File

@@ -80,7 +80,7 @@ void main() {
test('loadAndStart surfaces save load errors', () { test('loadAndStart surfaces save load errors', () {
fakeAsync((async) { fakeAsync((async) {
final saveManager = FakeSaveManager() final saveManager = FakeSaveManager()
..onLoad = (_) => (const SaveOutcome.failure('boom'), null, false); ..onLoad = (_) => (const SaveOutcome.failure('boom'), null, false, null);
final controller = buildController(async, saveManager); final controller = buildController(async, saveManager);
controller.loadAndStart(fileName: 'bad.pqf'); controller.loadAndStart(fileName: 'bad.pqf');

View File

@@ -4,6 +4,7 @@ import 'package:asciineverdie/src/core/engine/reward_service.dart';
import 'package:asciineverdie/src/core/model/combat_state.dart'; import 'package:asciineverdie/src/core/model/combat_state.dart';
import 'package:asciineverdie/src/core/model/combat_stats.dart'; import 'package:asciineverdie/src/core/model/combat_stats.dart';
import 'package:asciineverdie/src/core/model/game_state.dart'; import 'package:asciineverdie/src/core/model/game_state.dart';
import 'package:asciineverdie/src/core/model/monetization_state.dart';
import 'package:asciineverdie/src/core/model/monster_combat_stats.dart'; import 'package:asciineverdie/src/core/model/monster_combat_stats.dart';
import 'package:asciineverdie/src/core/model/pq_config.dart'; import 'package:asciineverdie/src/core/model/pq_config.dart';
import 'package:asciineverdie/src/core/storage/save_manager.dart'; import 'package:asciineverdie/src/core/storage/save_manager.dart';
@@ -23,7 +24,7 @@ class FakeSaveManager implements SaveManager {
final List<GameState> savedStates = []; final List<GameState> savedStates = [];
/// 커스텀 로드 동작 설정 /// 커스텀 로드 동작 설정
(SaveOutcome, GameState?, bool) Function(String?)? onLoad; (SaveOutcome, GameState?, bool, MonetizationState?) Function(String?)? onLoad;
/// 저장 결과 설정 (기본: 성공) /// 저장 결과 설정 (기본: 성공)
SaveOutcome saveOutcome = const SaveOutcome.success(); SaveOutcome saveOutcome = const SaveOutcome.success();
@@ -33,17 +34,20 @@ class FakeSaveManager implements SaveManager {
GameState state, { GameState state, {
String? fileName, String? fileName,
bool cheatsEnabled = false, bool cheatsEnabled = false,
MonetizationState? monetization,
}) async { }) async {
savedStates.add(state); savedStates.add(state);
return saveOutcome; return saveOutcome;
} }
@override @override
Future<(SaveOutcome, GameState?, bool)> loadState({String? fileName}) async { Future<(SaveOutcome, GameState?, bool, MonetizationState?)> loadState({
String? fileName,
}) async {
if (onLoad != null) { if (onLoad != null) {
return onLoad!(fileName); return onLoad!(fileName);
} }
return (const SaveOutcome.success(), null, false); return (const SaveOutcome.success(), null, false, null);
} }
@override @override