플러팅 AI

Flirting AI: 코드 난독화와 UI 개선 작업 후 Android/iOS 새 빌드 업로드 (2025.03.21)

Solo.dev 2025. 3. 21. 00:23

1. 오늘 작업 요약 (2025년 3월 21일)

(1) 난독화 과정

  • 목적: Flirting AI 앱 내 민감한 키(SHARED_SECRET, 구독 관련 키 등)가 RN 코드에 하드코딩되어 있어, 코드 분석을 어렵게 하기 위해 난독화 진행.
  • 초기 시도:
    • react-native-obfuscating-transformer 사용 시도.
    • 문제: 오래된 라이브러리로, React Native 최신 버전과 호환성 문제 발생.
      • npm audit 결과 취약점(class-validator, minimist 등) 다수 발견.
      • Metro 설정 오류 및 빌드 실패.
  • 대안 적용:
    1. 패키지 설치:
      npm install metro-minify-obfuscator --save-dev
      npm install metro-minify-uglify --save-dev
      • metro-minify-obfuscator: 난독화 도구.
      • metro-minify-uglify: 기본 minifier로 사용.
    2. Metro 설정 (metro.config.js):
      const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');

      /**
       * Metro configuration
       *
       * @type {import('metro-config').MetroConfig}
       */
      const config = {
       '''''
                  },
              },
          },
      };

      module.exports = mergeConfig(getDefaultConfig(__dirname), config);
    3. 빌드 및 문제 해결:
      • 초기 빌드 실패: filter: (filename) => true 설정이 직렬화 문제로 오류 발생.
      • 해결: filter 제거 후 재빌드.
      • Android: ./gradlew assembleRelease 성공.
      • iOS: Xcode에서 Archive.ipa 생성 성공.

 

(2) 난독화 테스트

  • Android:
    1. app-release.apkapp-release.zip 해제.
    2. assets/index.android.bundle 확인:
      • 변수명/함수명이 FSUBSYNNULLNULACK 같은 무의미한 문자로 변형.
      • UTF-8로 열리지 않음 (난독화로 문자열 인코딩된 결과).
    3. 앱 설치 및 동작 확인:
      • adb install app-release.apk.
      • adb logcat | grep "ReactNative"로 로그 확인.
      • 구독, Firebase, 광고 기능 정상 작동.
  • iOS:
    1. IOS 는 .ipa 를 찾지못해서 테스트 못함
    2. RN 프로젝트이니 되겠거니 하면서 그냥 새로운 빌드 올려버림

(3) 스플래시 스크린 핑크색 그림자 제거

  • : 스플래시 스크린에 텍스트 핑크색 그림자 촌스러워서 제거함

(4) Android/iOS 새 빌드 버전 업데이트

  • Android:
    • android/app/build.gradle에서 버전 업데이트:
      이전: versionCode 4  versionName "1.0.4"
      이후 : versionCode 5 versionName "1.5.0"
    • 새 abb 생성 후 play console 에 빌드 완료
  • iOS:
    • IOS 도 똑같이 xcode에서 버전 바꾸고 빌드 후 심사 제출
  • 결과: Android/iOS 모두 새 빌드 버전으로 업데이트  제출 완료.
  •  

전체 요약

  • 난독화:
    • react-native-obfuscating-transformermetro-minify-obfuscator로 변경.
    • Android/iOS 모두 번들 파일 난독화 확인.
    • 앱 정상 작동 확인.
  • 스플래시 스크린:
    • 핑크색 그림자 제거 (이미지 투명도 문제 해결).결과:

결론

난독화가 된 것 같기는 한데 혹시 모르니 매일매일 API key 사용량 주시하면서 여차하면 API 키 교체