본문 바로가기

웹 & 앱 꿀 TIP

[android] 애뮬레이터와 단말의 에러가 차이나는 이유 (야매)

728x90
반응형

경험을 토대로 작성합니다.

 

애뮬레이터의 경우 서버와 통신을 할 때 오류코드가 500번이 노출되고 단말에서는 timeout으로 fali이 떴었는데,

 

timeout을 설정을 120초로 하여도 되질 않았다.

예시)

public void addCustomer(String token, String my_photo_title){
    // timeout setting 해주기
    OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
            .connectTimeout(30, TimeUnit.SECONDS)
            .readTimeout(30, TimeUnit.SECONDS)
            .writeTimeout(30, TimeUnit.SECONDS)
            .build();

    Retrofit retrofit = new Retrofit.Builder().baseUrl("http://43.200.13.213:8000/like/")
            .client(okHttpClient)
            .addConverterFactory(GsonConverterFactory.create()).build();

 

애뮬레이터와 단말의 차이가 없는 줄 알았는데 아니더라.

 

1. 시간 차이

시간을 파일명으로 통신하는 로직이라 ,local Koare 셋팅을 하고 시도하여도 다른 시간 값때문에 500번이 노출되었던 것이다.

 

애뮬레이터와 실제 단말에서는 시간이 다를 수 있기에 그 점을 참고 하길 바란다. (애뮬레이터의 경우 9시간을 추가해야함)

예시)

Date date = new Date();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HHmm");
            Log.i("time check", "===> "+dateFormat);

//            String today = null;
//
//            Date date = new Date();
//
//            System.out.println(date);
//
//            // 포맷변경 ( 년월일 시분초)
//            SimpleDateFormat sdformat = new SimpleDateFormat("yyyy_MM_dd_HHmm");
//
//            // Java 시간 더하기
//
//            Calendar cal = Calendar.getInstance();
//
//            cal.setTime(date);
//
//            // 1시간 전
//            cal.add(Calendar.HOUR, -1);
//
//            today = sdformat.format(cal.getTime());
//            System.out.println("1시간 전 : " + today);
//
//            cal.setTime(date);
//
//            // 하루 전
//            cal.add(Calendar.HOUR, +9);
//
//            today = sdformat.format(cal.getTime());

            final File file = new File(Environment.getExternalStorageDirectory() + "/DCIM", ""+commonData.getInstance().GetLastLoginID()+"_" + dateFormat.format(date) + ".jpg");

2. 단말 문제

 

같은 갤럭시 8이였는데 다른 로그가 찍히더라 이 점은 다음 에러와 연관이 있다.

 

3. wifi 및 데이터 인터넷 통신 문제

 

갤럭시 폰의 차이점은 wifi였다. 신호가 약한 와이파이를 쓰고 있어서 였다.

 

이를 미루어보아 timeout이 뜨는 것도 wifi문제라고 할 수 있겠다.

 

이상입니다. 모르는 것 댓글로 아무거나 물어보세요 같이 궁금해 해드릴게요

728x90
반응형