Skip to main content

우분투 18.04 react-native run-android 실행 시 javax.net.ssl.SSLException 에러


Image result for react native


리엑트 네이티브를 시작했다. (참고)

기본 튜토리얼에서 create-react-native-app를 사용하는 예제는 쉽게 실행됐는데

바로 요놈!

react-native-cli를 써서 

react-native init [프로젝트 이름] 로 실행하는 예제는 뭐가 문제인지

실행한번 하는데 엄청나게 애를 먹였다.

우선 리액트 공식 홈페이지에서 하라는데로 다 했다는 전제하에 참고하시면 된다.

나름 다 잘 따라했다고 생각했는데 문제는 자바(jdk)였다.

JAVA_HOME 환경변수 설정이 안되어 있었다.

일단 초기에 echo $JAVA_HOME 이라고 쳤는데 아무 것도 안뜨면

환경변수 설정이 아예 안돼있는 것이다.



순서 대로 체크리스트를 만들어보자면,

1. jdk버전을 확인하자

Java Development Kit

React Native requires a recent version of the Java SE Development Kit (JDK). Download and install JDK 8 or newer if needed.
cd /usr/lib/jvm/ 를 하면 현재 설치된 jdk들을 확인 할 수 있다.

jdk8 이상의 버전이 없다면 아래 명령어로 다운 받자
sudo add-apt-repository ppa:webupd8team/java 
sudo apt-get update 
sudo apt-get install oracle-java8-installer
2. JAVA_HOME 환경 변수를 등록하기 위해
cd ~ 를 하여 홈으로 이동하고
숨김 파일인 .bashrc를 수정하자.
튜토리얼에는 $HOME/.bash_profile이라고 되어 있지만
18.04에서는 저 파일이 없어서 알아보니 bashrc를 수정하면 된다.

나는 vim을 쓰므로
vim .bashrc 라고 입력했다. nano나 다른 편집기를 사용해도 좋다.
그리고 아래 명령어를 .bashrc 맨 밑에다 적어준다.
물론 공식 홈페이지에서 말한

export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
얘네도 필수적으로 들어가야 한다.

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk"
export PATH=$JAVA_HOME/bin:$PATH
아래 명령어를 치면 수정된 .bashrc 파일이 업데이트 된다.

source $HOME/.bash_profile
그리고 바로


sudo rm /etc/ssl/certs/java/cacerts
sudo update-ca-certificates -f
얘를 써줘야한다

certificate라는 거 보니 뭔가 권한 관련된 것 같은데

그렇게 안되던게 저거 치고 딱 react-native run-android하니까 된다!

예이!

근데 이거 해결하니까 또

> Building 59% > :app:mergeDebugResources

이렇게 뜨면서 59%에서 멈춰버려서

sudo apt-get install lib32z1
sudo apt-get install zlib1g:i386

이 명령어로 해결한건 안 비밀...

이건 깃헙 이슈에 있는 것 보니 특정 라이브러에 관한 리엑트 네이티브 에러인 것 같다.

참고




참고적으로 다른 사람들은 이걸로 해결 했다는 경우도 많아서 적어둔다.
react-native init을 통해 만든 프로젝트 폴더 내의 gradlew 파일의 실행권한을 바꿔주는 건데
해당 폴더로 가서

chmod 755 android/gradlew
이렇게 해주면 된다.



Comments

Popular posts from this blog

[공유] Bat 파일 명령어 모음

도스창 : 윈도우화면>시작버튼>명령어입력 부분에서 cmd.exe를 실행  --> 까만색의 화면이 뜬다. 나는 이 화면을 편의상 도스창이라고 부르겠다.  이 도스창과 과거 DOS OS와는 상관이 없다. 단지 모양이 비슷할 뿐이다. Batch file과 Shell Script는 같은 용어이다. 단, Batch file : Microsoft에서 부르는 용어. Shell Script : Linux에서 부르는 용어. 아래의 모든 설명은 MS를 기준으로 설명한다. 배치파일은 텍스트 파일로써, Shell 프로그램에서 실행되는 명령어들과 조건문들의 내용을 담고 있다. 쉘프로그램이 배치파일을 실행시키면, 한줄 한줄씩 배치파일의 내용이 실행이된다. 배치파일의 종류는 확장자가 .bat 파일    :  cmd.exe 또는 command.com으로 실행시킬 수 있다.                           확장자가 .vbs 파일   :  cscript.exe 또는 wscript.exe로 실행시킬 수 있다.                           확장자가 .js  파일     :  cscript.exe 또는 wscript.exe로 실행시킬 수 있다.    ...

[JAVA 파일 입출력] 파일 절대 경로 가져오기

오랜만에 자바에서 간단한 파일 입출력을 해보았는데 절대 경로를 불러오는 방법이 생각보다 직관적이지 않았다. 그래서 기억해두기 위해 자료를 남긴다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 public   static   void  main( String [] args) {      String  path  =  클래스이름. class .getResource( "" ).getPath();  // 현재 클래스의 절대 경로      try  {         FileReader fr  =   new  FileReader(path  +   "myXML.xml" );               BufferedReader br  =   new  BufferedReader(fr);                System . out . println ( "파일 불러오기 성공!" );  }      catch  (FileNotFoundException e) { ...

Solution: react-native-maps showsUserLocation 동작 안함 해결 방법

react-navive-maps를 이용해서 지도를 구현하고 있는데 내 위치로 가기 버튼이 보이질 않았다. First of all, a reminder: for the button to be visible, some criteria are needed (OK in the OP): showsUserLocation  must be set  true  because the default is  false showsMyLocationButton  must stay  true , as is the default The issue is in a race condition between two asynchronous events: onMapReady and onLayout (noted Ready and Layout, for short, below). The decision to draw the button or not is done at the time of the Layout, and the setting of UserLocation can't be done before the Ready of the map (a handle to it is needed). Unfortunately, usually, at launch, the Layout arrives  before  the Ready. 위 글을 참조해보면 showUserLocation과 showsMyLocationButton이 모두 true로 설정되어 있어야 하고,  문제는 onMapReady과 onLayout의 동기화 문제라고한다. 버튼을 그릴지 말지가 Layout이 다 마무리 되는 시점에 결정되고  유저의 위치는 맵이 다 준비 되어야만 작동을 하는데 일반적으로 맵이 다 준비되기 전에 Layout이 먼저 그려져 버려서 버튼이 안보이는 거라고 한다. 밑에 댓글들을 쭉...