[안드로이드] Error:Execution failed for task ':app:transformClassesWithDexForDebug'. 오류 해결 방법



신나게 코딩하고나서 모바일로 테스트 까지 다 해놓고


APK파일로 묶으려는데 저런 에러가 나서 당황스러운 경우가 있었다.



대체 뭐지.. 뭘까..


하고 뒤쪽의 에러를 더 봤더니



com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: 

com.android.dex.DexException: Multiple dex files define Lcom/google/zxing/BarcodeFormat;



이런 내용의 로그가 나타났고


저기서 잘 보아야 할것은


Multiple dex files define 


바로 이부분이었다


음... 뭐 다중 어쩌구 파일을 못찾겠다 뭐 이런건지


일단 잘 모르니까 검색을 해보니


역시나 스택오버플로우 형님들이 좋은 답변들을 알려주었다



안드로이드 build.gradle (app 레벨)에 들어가서


몇줄 추가해 주도록 하자


dependencies {
compile 'com.android.support:multidex:1.0.1'
}


디펜던시에서 저 한줄을 추가 해주고



android {

.......
defaultConfig {

.........
multiDexEnabled true
}

.....
}


저렇게 하나 추가해 주도록 하자



그리고 AdnroidManifest.xml에 가서


<application
.....
android:name="android.support.multidex.MultiDexApplication">

......
</application>


어플리케이션단에 추가를 해준다



그럼 해결이 된다!



[안드로이드] androidBridge they will not be visible in API 17 오류 해결 방법




none of the methods in the added interface(androidBridge) have been annotated with @android.webkit   they will not be visible in API 17 


이 오류의 해결 방법 입니다.



1. 원인


안드로이드 버전 API 17 이상부터 androidBridge 사용시 메소드에 어노테이션을 사용해야 정상 구동 하도록

바뀌어서 생기는 오류


2. 해결 방법


간단하게 androidBridge에서 사용하는 메소드위에 어노테이션을 추가 하면 됩니다.



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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.xxx.xxxx;
 
import android.os.Handler;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import java.text.SimpleDateFormat;
import java.util.Date;
 
/**
 * Created by Administrator on 2017-08-03.
 */
 
public class AndroidBridge {
    private final Handler handler = new Handler();
    private WebView mWebView;
    private DBHelper dbHelper;
    private  boolean newtwork;
 
    // 생성자
    public AndroidBridge(WebView mWebView, DBHelper dbHelper, boolean newtwork) {
        this.mWebView = mWebView;
        this.dbHelper = dbHelper;
        this.newtwork = newtwork;
    }
 
    // 네트워크 상태 확인
    @JavascriptInterface
    public void requestNetwork() { // must be final
        handler.post(new Runnable() {
            public void run() {
                Log.d("HybridApp""네트워크 상태 요청");
                mWebView.loadUrl("javascript:getNetwork("+newtwork+")");
            }
        });
    }
 
 
 
    @JavascriptInterface
    public void setMessage(final String arg) { // must be final
        handler.post(new Runnable() {
            public void run() {
                Log.d("HybridApp""setMessage("+arg+")");
                mWebView.loadUrl("javascript:getAndroidMessage('ANDROID -> JAVASCRIPT CALL!!')");
            }
        });
    }
 
 
}
cs


간단하게 다른거 볼 필요 없이


28번라인에 추가한 어노테이션을 29번같은 메소드 위에 선언하기만 하면 해당 오류가 해결 된다.



react.js 에서 Jquery 사용 하는 방법(unused import $ from jquery )



nodejs사용 babel, webpack 사용하는 사람들에게 적용 가능 한 방법입니다.


다른건 모르겠네요 어차피 여긴 야매 가이드니까 신경 ㄴㄴ



이제 튜토리얼 하고 있는데 세상에 바닐라JS는 나에겐 너무 높은 벽이었고


3년전 처음 배울때나 바닐라 JS 사용했지 실무투입하고 난 이후부턴


제이쿼리만 주구장창 썻는데 getelementById 라니 이건 나에게 너무나 가혹한것 같아


제이쿼리를 어떻게 쓸수 있을까 하고 또 구글링을 시작 했습니다.


역시 인터넷엔 없는게 없었고


1
import $ from "jquery";
cs


이렇게 js에 추가해 주면 사용 할수 있다고 스택오버플로우 형들이 알려주길래


그대로 적용 시켰더니



왜 죽은 동태눈알 색깔을 하고 있는걸까..


unused import $ from jquery 라는 메세지와


메세지창을 확장시키면


checks that javascript or typescript import binding ... 어쩌구 저쩌구


라고 나오면 실행되지 않는다.


아!


npm에서 제이쿼리를 다운받지 않아서 그런건가? 


그렇지 제이쿼리가 없으면 못쓰는거겟지 라는 생각으로


npm install jquery --save


명령어를 입력후 제이쿼리를 설치 했으나


역시 죽은동태눈깔은 돌아오지 않았다.



조금더 구글링을 해보니


1
2
import jQuery from "jquery";
window.$ = window.jQuery = jQuery;
cs


이렇게 하면 된다고 한다


오오 신기하다 된다된다


이제 리액트에서 제이쿼리를 사용할수 있겟구나 하고


테스트해보니 


제이쿼리 정상작동 하는 것을 확인 할 수 있었다.




module not found error cannot resolve 'babel' in 에러와 the node api for babel has been moved to babel-core  해결 방법




드디어 리액트에 입문!


아직 뭐가 뭔지도 잘 모르고


바벨이라는 녀석이 ES6문법으로 바꿔주고 웹팩이라는 녀석이 번들js로 


관리해준다는 대략적인 정보만 알고 난 상태에서


https://velopert.com/814


이분의 강좌를 보면서 공부를 하기로 시작 했는데 시작과 동시에 에러가 날 반겨준다.




1. the node api for babel has been moved to babel-core  해결 방법




<으아악 불길한 붉은 텍스트라니>



the node api for babel has been moved to babel-core


이 에러는 뭐 대충 설치 할때 경로 문제나 디펜던시 설정 문제 인듯 하다


pakage.json 파일의 디펜던시를 아래와 같이 바꿔주면 해결이 된다.


아마 위의 에러가 나는 것은 딘펜던시와 덴펜던시스 둘다 바벨이 들어가 있는 경우이며


글로벌로 babel과 webpack를 설치 한 후


또 종속성으로 --save 명령어로 설치하는 경우에 나타나는 에러 인듯 하다.



1
2
3
4
5
6
7
8
9
10
11
12
 "dependencies": {
    "react": "^15.4.2",
    "react-dom": "^15.4.2"
  },
  "devDependencies": {
    "babel-core": "^6.23.1",
    "babel-loader": "^6.3.2",
    "babel-preset-es2015": "^6.22.0",
    "babel-preset-react": "^6.23.0",
    "webpack": "^2.2.1",
    "webpack-dev-server": "^2.4.1"
  }
cs


디펜던시 목록을 위와같이 수정해주면 사라지며


그래도 계속 나타날 경우엔 어차피 튜토리얼 단계니까 


폴더 지우고 다시 순서대로 받아주면 해결 된다.




2.module not found error cannot resolve 'babel' in 에러 해결 방법





이 에러는 webpack.config.js 파일을 수정해 주어야 한다.


이 파일은 webpack의 설정파일인데


ECMAScript6를 컴파일 해주고 개발서버를 열어주는 webpack의 설정 파일인데


모듈 로더 부분이


1
2
3
4
5
6
7
8
9
10
11
12
13
    module: {
        loaders: [
            {
                test: /\.js$/,
                loader: 'babel',
                exclude: /node_modules/,
                query: {
                    cacheDirectory: true,
                    presets: ['es2015''react']
                }
            }
        ]
    }
cs



이런식으로 loader:'babel'

로 되어있는 경우 발생한다


바벨을 참조하지 못해서 생기는 오류인듯 한


loader:'babel' -> loader:'babel-loader' 이렇게 바꿔주면 간단히 해결이 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
   module: {
        loaders: [
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: /node_modules/,
                query: {
                    cacheDirectory: true,
                    presets: ['es2015''react']
                }
            }
        ]
    }
cs



이제 npm start 명령어를 실행하면 complied successfully 라는 반가운 문구를 볼 수가 있게 된다.



tomcat server 같은 도메인(IP)에서 Port번호가 다르지만 세션을 공유하는 문제 해결 방법(로그인 튕김등)


진행중인 프로젝트가


각각의 모듈역할을 하는 war파일 3개를 하나의 was(톰캣)에 넣고 돌리는데


이런 프로젝트를 2개를 한 서버(서버컴퓨터)에 넣고 돌리니


하나를 로그인 하면


다른 하나의 로그인이 해제된다거나 하는 세션관련 문제가 생겼다.



일단 문제의 원인은 통신되는 데이터의 암호화를 위해 암호화에 필요한 키값을 세션에 넣고 로그인페이지로 날려주는데


항상 접속할때마다 키를 재사용하지 않기 위해 기존키값을 제거하고 새로운 키값을 만들어 낸다


물론 다른 세션도 삭제하고



그래서 8080포트를 쓰는 프로젝트 로그인 창을 띄우고


8082 포트르 ㄹ쓰는 프로젝트 로그인 창을 띄운 다움 8080포트를 쓰는 프로젝트 로그인을 하면


암호화키값이 맞지 않아 에러가 나고



각각 따로 로그인을 한 후 먼저 로그인한 프로젝트에서 메뉴이동을 하면 권한,사용자 세션이 날아가서


메뉴이동시 로그인만료가 되어 튕겨나가게 되는 것 이다.



또 열심히 구글링을 해서 방법을 찾았는데


내가 삽질한 시간보다 훨씬 간단한 해결방법이 있었다.


서버는 세션ID를 찾을때 특정 ID로 찾는데 이게 두 포트에서 사용되는 세션ID가 동일해서 생기는 문제였다



해결방법은 톰캣 context.xml 파일의


context 부분에 sessionCookieName="first_JSESSIONID"  이것과 같이 각각 프로젝트에 서로 다른 세션쿠키명을 적용시켜 주면 해결이 된다..



1
<Context crossContext="true" sessionCookieName="PROJECT1_JSESSIONID">
cs


이렇게 설정을 해주면 된다..


crossContext는 한 was에 war 3개가 서로 세션을 공유하기 위해 사용한 옵션이고


서로 다른 was에서 세션을 간섭하지 않게 하기 위해 세션쿠키네임 이라는 옵션을 추가해 주었다.


당연히 또다른 프로젝트에선 쿠키네임을 다른 것으로 설정해 주어야 한다.



포켓몬GO GPS 에러 해결 방법


gps failed to detect location

gps signal not found


등의 오류 메세지가 나타나면서 게임 실행이 제대로 되지 않는 경우가 있다.



해결방법은 모의 GPS 설정을 해제 하면 된다.


핸드폰 기종마다 다르지만


방법은




1. 설정 -> 시스템 -> 개발자 옵션으로 들어간다.




2. 개발자 옵션의 모의위치 앱을 해제 하거나

모의 GPS 개발자 모드 해제를 한다.
.


또다른 방법 입니다.  GPS정보를 를 데이터와 와이파이 둘다 사용하게 하면 된다고 합니다.

1. 설정 -> 연결 -> 위치 로 들어갑니다.


2. 모드 선택을 합니다.

3. 높은정확도에 체크하거나 와이파이, 데이터 둘다 사용으로 설정을 바꾸면 해결 완료


 


정상적으로 접속이 된다.



아마도 속초에서만 되던 시절에 GPS우회하는 방법을 사용하기 위해 GPS 설정을 바꿔놨던 사람들에게


나타나는 문제인것 같다.


그럼 다들 즐거운 포켓몬 생활!


2017/01/24 - [Yame Game Life/Poketmon Go] - [포켓몬고] GPS 오류 에러 해결 방법 gps signal not found , gps failed to detect location

2017/01/24 - [Yame Game Life/Poketmon Go] - [포켓몬고] 개체값 바로 알수 있는 방법 , 어플 포닥

2017/01/24 - [Yame Game Life/Poketmon Go] - [포켓몬 고] 설치 오류 400 해결 방법

2016/08/01 - [Yame Game Life/Poketmon Go] - [여행] 포켓몬 GO! 속초마을 하드코어 24시간 여행기 -2부 :부화,진화-

2016/08/01 - [Yame Game Life/Poketmon Go] - [여행,게임] 포켓몬 GO! 속초마을 하드코어 24시간 여행기 -1부 :소소한 팁-


리니지2 레볼루션 녹스 튕김현상 해결 방법



모바일게임이라는 말이 과연 의미가 있을까 싶을정도로 녹스, 미뉴 등 VM을 이용하여 PC로 즐기는 사람들이


참 많아졌다. 물론 PC의 편리성보다 다중아이디 동시접속 부케키우기가 목적인 사람들이 더 많겠지만 말이다.



리니지2 레볼루션의 녹스 실행방법은 딱히 언급하지 않겠다. 여러군데 방법들도 많이 퍼져있고 


대신 게임 실행도중 튕기는 방법에 대한 해결책에 대해서 이야기 해 보려고 한다.



1. 고급설정


녹스의 우측 상단 톱니바퀴 모양 아이콘을 클릭해


설정창을 열고


고급설정에서 성능설정을 사용자지정 으로 놓는다


그리고 CPU 개수는 1 메모리는 2048로 지정


그래픽모드는 호환모드로 놓으면


팅김이 줄어들게 된다.


컴퓨터 사양이 좋지 않을 경우 메모리는 2048에서 1024로 지정해 놓으면 된다.



CPU개수를 2개 이상으로 해놓으면 튕김이 더 자주일어나는 것 같다.




2. 게임 설정


게임내 옵션에서 속도는 최고  품질은 낮음으로 하고


사운드 채널품질 낮음  이팩트보이기 모두끔


최대인원표시 0%로 해놓으면 팅김이나 렉이 줄어든다


최대인원 표시가 0%라고 해도 주변 사람들은 어지간히 보일만큼 보인다.




3. 최신버전 유지


녹스는 최신버전으로 유지하고 가끔씩 새로 패치된 것이 있나 확인하러 간다


패치를 자주 해주는 편이기 떄문에 팅김이 심할땐 패치사항이 있나 확인해보도록 하자







2016/12/23 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 크리스마스 이벤트

2016/12/23 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 탄력의 효과는 무엇인가 [답변]

2016/12/22 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 시체렉 해결 방법

2016/12/22 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 혈맹 만들기, 포상, 혈원초대

2016/12/22 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 합성, 승급, 강화, 집혼석, 승급석, 주문서 관련한 정보

2016/12/20 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 집혼석 싸게 제거,추출 하기 개꿀팁

2016/12/20 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 아데나 모으기, 노가다 방법

2016/12/18 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 글자 이벤트 획득경로 및 보상 정보

2016/12/16 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 무한뽑기 버그 발생

2016/12/16 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 피의증거 노가다

2016/12/16 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 31렙 전직퀘스트 공략

2016/12/16 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 초반 퀘스트 보스몹 잡기 팁

2016/12/16 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 레벨업 공략, 레벨업 막힐때 팁

2016/12/15 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 비정상적인 동작으로 인하여 팝업 튕김현상

2016/12/15 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 무과금러 공략&소소한 팁

2016/12/15 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] security detection 해결방법




2016/12/16 - [Yame Daily Life] - [리니지2 레볼루션] 레벨업 공략, 레벨업 막힐때 팁

2016/12/15 - [Yame Daily Life] - [리니지2 레볼루션] 무과금러 공략&소소한 팁

2016/12/15 - [Yame Daily Life] - [리니지2 레볼루션] security detection 해결방법







이게 서버가 불안정한건지... 모바일 디바이스 메모리문제나 이런걸 


괜한 팝업을 띄워서 땜빵질하는건지 잘 모르겠으나



비정상적인 동작으로 인하여 접속이 종료 되었습니다. 라는 메세지가 나오면서


무지막지하게 튕긴다..


하다보면 엄청 자주 튕기는 시간대가 있는듯 한데 그 시간대에 오만의탑은 피하도록 하자



튕김으로 인한 접속종료가 되면 오만의탑 도전횟수가 차감되어 버린다.


진짜 겜하기 더럽게 힘들다


참고로 내 폰은 루팅도 안했고


핵이나 매크로를 쓴적도 없는 폰이고  기종은 삼성 갤럭시 노트4이다.


주변사람이나 회사사람들의 이야기를 들어보니


이게 나만 그런게 아니라 다른기종의 사람들도 많이 겪고있는 현상인듯 하다.




일반적인 서버와의 연결이 끊어졌다는 메세지는 동시에 다른사람들도 같이 튕기는걸 봐선 서버문제인듯 싶고


비정상적인 동작 이라는 메세지와 함께 튕기는건 각각의 모바일 기기마다 다르게 뜨는 것 같다.


진짜.. 오만의탑 오르다가 2번팅겨서 횟수 2번 차감된게 너무 화가 난다... ㅠ_ㅠ




게임 개발자들이 참 힘들게 고생하면서 야근하면서 갈려나가면서 만들었을게 뻔히 보이기에 개발자들을 욕할수도 없고


이건 걍 PM 기획자 탓이다!!!! 안정화좀 시켜놓고 내놓던가!


레드나이츠와 같은 타사게임때문에 일정을 빠듯하게 잡은게 아닐가 싶다.



일단 아직까지 비정상적인 동작이라는 메세지와 함께 튕겨져 나가는 현상은 해결방법을 찾을 수 없었다.


다만 핸드폰의 발열이 심해졌을때 튕김현상이 더 자주 나타나는것 같다.


아무래도 사양문제도 있고 발열이 심해지면 모바일기기는 성능저하가 일어나기도 하니까.



지금날씨가 추워서 밖에선 몰라도 실내에선 핸드폰 발열에 유의해주자



핸드폰 케이스가 있다면 케이스를 벗겨내고 바닥에 뒷면을 전부 붙이는게 아니라 살짝 떠서 환풍이 될 수 있도록


기대어 놓거나 하는 것이 임시방편인 것 같다.




제 포스팅이 도움이 되었나요? 

그렇다면 공감하기 한번 눌러주세요 블로거에게 큰 힘이 됩니다


+ Recent posts