로컬에서 개발 마친 후 배포용으로 할 일
1. 패키지 네임 수정
편법 같지만 편한 방법
app.json, package.json에 이름 수정
// app.json
{
"name": "stockapp",
"displayName": "stockapp"
}
//package.json
{
"name": "stockapp",
"version": "0.0.1",
ios, android 폴더 삭제
www.npmjs.com/package/react-native-eject
react-native-eject 설치 후 react-native eject 실행
ios와 android 폴더가 변경한 이름으로 새로 생성된다.
www.npmjs.com/package/react-native-rename
npx react-native-rename <newName> -b <bundleIdentifier>
으로 bundleIdentifier 그 안드로이드 패키지 주소 설정하면 된다.
이름이 바꿔야지 명령어가 실행이 돼서
npx react-native-rename "임시" -b com.asf.stockapp
npx react-native-rename "stockapp" -b com.asf.stockapp
그냥 이렇게 두 번 실행했다.
굳이 eject를 쓰는 이유는 react-native-rename으로 이름을 바꿀 때 종속성 문제가 발생한 적이 있어서 eject로 변경할 이름에 맞게 ios, android 모든 파일을 생성해두고 react-native-rename은 안드로이드에 bundlerIdentifier만 수정하려고 씀
ios는 bundlerIdentifier를 xcode 가서 다시 설정해야 하는데 이건 쉽다. 그냥 프로젝트 폴더 누르고 바로 수정 가능함.
2. 리액트 파이어베이스 연결
React Native Firebase | React Native Firebase
Welcome to React Native Firebase! To get started, you must first setup a Firebase project and install the "app" module.
rnfirebase.io
로그인 - Google 계정
하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인
accounts.google.com
콘솔에서 생성하고 시키는대로 ios / android 폴더에 추가시키면 된다.
rn firebase의 get started 문서에 파베 모듈버전이 최신게 아니라서 콘솔 도움말 보고 만드는게 나음.
rnfirebase.io/enabling-multidex
Enabling Multidex | React Native Firebase
Learn how to enable multidex on your Android application.
rnfirebase.io
안드로이드에 멀티덱스 설정도 해줘야한다. 안그러면 에러남
3. 애드몹
{
"react-native": {
"admob_android_app_id": "ca-app-pub-xxxxxxxx~xxxxxxxx",
"admob_ios_app_id": "ca-app-pub-xxxxxxxx~xxxxxxxx"
}
}
프로젝트 루트에 firebase.json 파일 만들고 앱id 입력
배너는 그냥 컴포넌트 만들어서 쓰고
import React, {useEffect, useState} from 'react';
import {Platform} from 'react-native';
import {
InterstitialAd,
AdEventType,
TestIds,
} from '@react-native-firebase/admob';
import {androidFullAdId, iosFullAdId} from '../lib/key';
const adUnitId = __DEV__
? TestIds.INTERSTITIAL
: Platform.OS === 'ios'
? iosFullAdId
: androidFullAdId;
const interstitial = InterstitialAd.createForAdRequest(adUnitId, {
requestNonPersonalizedAdsOnly: true,
});
const UseInterstitialAd = () => {
const [loaded, setLoaded] = useState(false);
useEffect(() => {
const eventListener = interstitial.onAdEvent((type) => {
if (type === AdEventType.LOADED) {
console.log('ad loaded')
setLoaded(true);
}
// if (type === AdEventType.CLOSED) {
// console.log("ad closed");
// setLoaded(false);
// //reload ad
// interstitial.load();
// }
});
// Start loading the interstitial straight away
interstitial.load();
// Unsubscribe from events on unmount
return () => {
eventListener();
};
}, []);
const showAd = () => {
if(loaded){
interstitial.show()
setLoaded(false)
}
}
return [showAd];
}
export default UseInterstitialAd
전면광고는 무조건 로드되어야 출력가능해서 훅으로 쓰면 된다.
난 앱 실행 한번당 전면광고 한번만 출력하려고 재로드 기능 주석시켜놨는데 type === CLOSED 코드 주석풀면 재사용 가능하다.
4. 아이콘
velog.io/@dody_/React-Native-%EC%95%B1-%EC%95%84%EC%9D%B4%EC%BD%98-%EB%B0%94%EA%BE%B8%EA%B8%B0
[RN] 앱 아이콘 바꾸기
안녕하세용 도디예용 오늘은 react native 프로젝트의 앱 아이콘을 바꿔봅시당 아이콘 사이즈 받아오기 일단 로고를 몇개 추출해놨습니당 둘중에 뭘 해볼까 이 로고는 1024x1024 사이즈인데, Android에
velog.io
블로그대로 따라하면된다. 아이콘은 플래티콘에서 찾자
아이폰 아이콘은 알파적용 일일이 없애야한다.
미리 미리보기 -> 내보내기 -> 알파 선택 삭제 해서 알파없는 아이콘으로 만들어둬야함
5. 스플래시
일단 xcode들어가서 ios 프로젝트 파일에 SplashScreen,storyboard 파일을 생성함
Abiro PhoneGap Image Generator
Easily generate image assets for PhoneGap/Cordova projects This app... service... thing will generate a file structure that is in compliance with Cordova and new(er) recommendations for PGB (using merges instead of .pgbomit etc described at App Project Str
pgicons.abiro.com
여기서 아이콘 넣고 스플래쉬 png파일을 만든다

이런식으로 나오면 이 파일을 react-native-make 로 설정시킴
github.com/bamlab/react-native-make
bamlab/react-native-make
A collection of everyday React Native CLI tools. Contribute to bamlab/react-native-make development by creating an account on GitHub.
github.com
react-native set-splash --path ./src/img/splash.png --resize center --background "#FFFFFF"
이렇게 커맨드치면 설정됨
github.com/crazycodeboy/react-native-splash-screen
crazycodeboy/react-native-splash-screen
A splash screen for react-native, hide when application loaded ,it works on iOS and Android. - crazycodeboy/react-native-splash-screen
github.com
만든 스플래쉬를 이걸로 적용해야 한다.
npm i react-native-splash-screen --save
설치하고 react-native link react-native-splash-screen 링크하면 안드로이드는 자동으로 설정이 됨.
#import "AppDelegate.h"
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import "RNSplashScreen.h" // here
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// ...other code
[RNSplashScreen show]; // here
// or
//[RNSplashScreen showSplash:@"LaunchScreen" inRootView:rootView];
return YES;
}
@end
ios 는 AppDelegate.m 파일가서 위에 RNSplashScreen 헤더랑 [스플래쉬 show] 코드만 추가한다.
show코드는반드시 리턴 바로앞에다 해야함.
import SplashScreen from 'react-native-splash-screen'
export default class WelcomePage extends Component {
componentDidMount() {
// do stuff while splash screen is shown
// After having done stuff (such as async tasks) hide the splash screen
SplashScreen.hide();
}
}
자바스크립트로가서 SplashScreen 추가하고 앱 마운트될때 hide 시켜주면된다. 훅스에 useEffect 빈배열 넣고 하면 됨.
6. 앱 이름 변경
아이콘 아래에 표시될 이름 변경 하기
React Native 앱 이름 다국어 설정하기
모바일 기기의 언어 설정에 따라 앱 아이콘 아래에 표시되는 앱 이름도 다국어로 설정할 수 있는데 안드로이드와 ios에서 이를 설정하는 방법을 알아보자.
maruzzing.github.io
7. 스크린샷 제작
AppMockUp Studio (Beta)
AppMockUp Studio (Beta) is a design tool for creating screenshots for the App Store and Play Store.
beta.app-mockup.com
8. 그래픽 디자인 만들기
'프로그래밍' 카테고리의 다른 글
안드로이드 에러 unexpected element <queries> found in <manifest> (0) | 2020.12.25 |
---|---|
useRef 사용용도 (0) | 2020.12.22 |
리액트 커스텀 훅 (0) | 2020.12.14 |
리액트 memo로 리렌더링 관리하기 (0) | 2020.12.13 |
리액트 에러 경계 (0) | 2020.12.08 |