프로젝트를 생성하고 splash를 만드는데 필요한 것들을 자동으로 만들어주는 react-native-make 모듈을 설치합니다.

react-native-make 모듈을 통해 이미지를 추가하고 react-native-splash-screen 모듈을 설치하여 splash를 컨트롤 합니다.

 

 

1. npm i -D @bam.tech/react-native-make

 

2. splash에 쓰일 이미지를 프로젝트 내에 경로에 저장

 

3. 명령어 입력 - react-native set-splash --path ./Assets/images/splash.png --resize cover --background "#FFFFFF"

 

4. npm i react-native-splash-screen --save

 

5. pod install

 

6. ios -> AppDelegate.m 에서 소스코드 추가 

#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

 

 

7. android -> MainActivity.java 에서 소스코드 추가

import android.os.Bundle; // here
import com.facebook.react.ReactActivity;
// react-native-splash-screen >= 0.3.1
import org.devio.rn.splashscreen.SplashScreen; // here
// react-native-splash-screen < 0.3.1
import com.cboy.rn.splashscreen.SplashScreen; // here

public class MainActivity extends ReactActivity {
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        SplashScreen.show(this);  // here
        super.onCreate(savedInstanceState);
    }
    // ...other code
}

 

 

8. app.js에서 componentDidMount 안에 SplashScreen.hide(); 추가

import React from 'react';
import { Text } from 'react-native';
import SplashScreen from 'react-native-splash-screen'

export default class App extends React.Component {
  componentDidMount() {
    SplashScreen.hide();
  }

  render() {
    return (
      <Text>hello world</Text>
    )
  }
}

 

반응형

expo에서는 폰트를 추가하기가 쉽지만 expo를 쓰지 않는다면 안드로이드, iOS 따로 설정해줘야합니다.

 

먼저 iOS의 경우부터 보겠습니다.

프로젝트 폴더 안에서 /ios/projectName.xcodeproj 파일을 실행시켜서 xCode를 킵니다. 미리 Fonts라는 폴더를 생성하고 그 안에 추가할 폰트를 넣어놓습니다.

프로젝트에서 오른쪽 버튼으로 Add Files to "project name".. 를 클릭하고 만들어놓은 폴더를 추가해주고 Add를 눌러줍니다.

프로젝트를 누르고 Info 탭으로 가서 Fonts provided by application를 추가해주고 Item에 폰트명을 적어줍니다.

여기까지가 iOS에 폰트 추가하는 방법입니다.

 

안드로이드에서 폰트 추가하는 방법을 보겠습니다.

안드로이드는 iOS처럼 복잡하지 않고 프로젝트에 폰트를 추가하는 것으로 끝이납니다.

먼저 프로젝트에서 /android/app/src/main/assets/fonts에서 폴더를 생성하고 폰트를 추가해주는 것으로 끝이납니다.

 

폰트 추가하는 것은 끝이 났고 어느 곳이든 스타일 태그에 폰트 확장자를 제외하고 사용하면 됩니다.

저 같은 경우에는 Font.js라는 파일을 만들어서 조금 더 줄여서 폰트를 사용합니다.

 

이런식으로 폰트를 사용합니다.

 

iOS에서 xCode를 사용해서 폰트 추가하는 방법만 불편하고 나머지 사용방법은 편한거 같아서 expo와 큰 차이는 없는거 같습니다.

 

반응형

깨진 QR코드

 

 

 

 

 

 

 

 

QR코드 발급하는 모듈로 react-native-qrcode-svg를 선택하여 프로젝트를 진행하는 과정에서 랜덤하게 QR코드 이미지가 깨지면서 보이는 현상이 발견되었다.

주로 안드로이드에서 발생하였고 iOS에서도 매우 드물게 발생하였다. 또 열심히 구글링 하는 도중 모듈에 문제가 있는 것을 발견하였고 해결책을 찾았다.

 

먼저 아래 경로로 이동한다.

/node_modules/react-native-qrcode-svg/src/index.js

 

index.js 파일에서 141번째 줄에 있는 소스코드에 strokeLinecap={'square'} 코드로 변경해준다.

<Path
  d={path}
  strokeLinecap={'square'}
  stroke={enableLinearGradient ? 'url(#grad)' : color}
  strokeWidth={cellSize}
/>

 

다음은 ./src/tranformMatrixIntoPath.js 파일로 이동하여 2번째 줄과 9번째 줄의 소스코드를 변경한다.

2번째 줄
const cellSize = size / matrix.length - 0.1   
9번째 줄
path += `M${cellSize * j + 6} ${cellSize / 2 + cellSize * i}`

 

변경한 후에 테스트 해본 결과 완벽하게 작동되지는 않았지만 QR코드 인식에는 문제가 없는 것으로 확인됐다.

 

 

https://github.com/awesomejerry/react-native-qrcode-svg/issues/108

 

반응형

* IOS에서는 가상 기기를 시뮬레이터(simulator)라고 하고 Android에서는 가상기기를 에뮬레이터(emulator)라고 합니다.

 

Expo를 버리고 React Native만으로 처음하는 프로젝트에서부터 IOS 시뮬레이터에서는 정상작동하던 프로젝트가 Android에서는 오류를 내면서 정상작동하지 않는 상황이 발생했습니다. 에뮬레이터가 정상적으로 실행되지만 에뮬레이터 안에 앱이 설치가 되지 않으면서 에러가 발생했는데요. 안드로이드 환경설정이 잘못된 것으로 판단되서 계속 세팅을 확인하면서 시간을 낭비하게 됐습니다.

error Failed to install the app. Make sure you have the Android development 
environment set up: https://reactnative.dev/docs/environment-setup. 
Run CLI with --verbose flag for more details.
Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081

 

계속 되는 구글링 결과 gradle이 문제라는 것을 확인했습니다.

 

React Native 프로젝트 안에 /android/gradle/wrapper/gradle-wrapper.properties 파일로 이동하여 distributionUrl로 시작하는 라인에서 gradle 버전을 변경해주고 재시작하면 오류 없이 정상작동하는 것을 확인할 수 있습니다.

 

아래와 같은 버전을

distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip

다음과 같이 변경합니다.

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip

 

출처 : https://stackoverflow.com/questions/60844245/how-solve-could-not-initialize-class-org-codehaus-groovy-reflection-reflectionc/61913747#61913747

반응형

+ Recent posts