티스토리 뷰

Application

아임백(IM-100) 키보드 (VEGAIME.apk)

Mir(whdghks913) 2016.08.04 23:15


안녕하세요.


베가 시크릿 업 키보드부터 베가 아이언2 키보드 포스팅에 이어 아임백 키보드도 설치해보았습니다.

개인적인 평은 베가 아이언2 키보드때 너무 큰 충격(?)을 받아서인지 큰 감흥은 없더라고요.


기능면에서나 디자인면에서나 큰 발전은 없다는 느낌이 들었습니다.

그러므로 만약 이 앱이 작동하지 않으신다면 아래 링크로 들어가셔서 베가 아이언2 키보드 등을 설치해주세요.


[Application] - 20140522 - 베가 아이언2 (Vega Iron2) 키보드 (VEGAIME.apk)

[Application] - [APK] 베가 아이언2 (Vega Iron2) 키보드 (VEGAIME.apk)

[Application] - [KitKat] Vega Secret UP (베가 시크릿 업) 키보드 킷캣 업데이트

[Application] - [APP] Vega Secret UP (베가 시크릿 업) 키보드



참고로 제가 가진 안드로이드 기기중 가장 최신 OS버전이 갤넥의 CM12.1, Android 5.1.1입니다.

키보드 설정 화면의 디자인은 기기마다 다를 수 있습니다.



그러고보니 팬택의 키보드로 포스팅하는건 2년만이네요. ㅋㅋ




키보드 설정 메인화면입니다.

런처에 키보드 설정으로 바로 진입 가능한 바로가기를 생성해두었습니다.



베가 아이언2 키보드의 종류와 차이 없습니다.



이 부분도 베가 아이언2 키보드와 마찬가지로 같은 키보드 테마를 가지고 있으며

달라진 점이 있다면 키보드 내부적으로 코드의 변화가 조금 생겨 com.pantech.res.apk를 참고합니다.

따라서 이 com.pantech.res.apk를 설치하지 않을 경우 패키지를 찾을 수 없다며 강제종료가 발생합니다.



키 동작도 별다른게 없습니다.


위 스샷의 키보드 소리와 진동은 전 기기의 키보드와 마찬가지로 동작하지 않습니다.

그 이유는 팬택이 위 스샷의 설정 + SKYSettings에서 값을 불러오게 코드를 만들었기 때문에

이를 해결하지 않으면 영영 불가능합니다.


개인적으로 진동이 매우 필요해서 한시간 정도를 투자했는데도 별다른 진척이 없네요...



마찬가지 기호 팝업입니다.



키보드 높이 스샷입니다.



바로 위 스샷은 작동을 테스트한 갤넥의 기기 정보입니다.





참고로 베가 아임백 키보드는 인생을 루팅한 고1님께서 먼저 설치에 성공하셨습니다

(관련 게시글 : http://cafe.naver.com/develoid/646537)



키보드 높이가 설정되지 않는 이유를 알아보기 위해 smali를 java로 변환해서 확인하였습니다.



드래그한 부분이 키보드 설정을 비활성화 하는 코드입니다.

저는 바로 위 if문과 setEnabled()를 제거해서 언제나 키보드 설정이 활성화 되도록 수정했습니다.


따라서 상황에 따라 키보드 높이 설정 진입시 강제종료가 될 수 있으며, 시간도 보낼겸 만들어 본거라 앞으로 완벽한 해결 계획은 없습니다.




최소 안드로이드 동작 API를 21(Android 5.0이상)로 만들었습니다.

따라서 롤리팝 이상 기기에서 설치는 가능합니다.



그러나 이 앱이 API 23(마시멜로)을 타겟으로 만들었기 때문에

마시멜로 이하 기기에서 발생하는 오류는 해결하기 힘듭니다.



아래는 제 뷰3(킷켓)에서 발생한 오류의 로그입니다.


java.lang.NoSuchMethodError: java.lang.System.arraycopy



네... 해결방법이 안보여서 최소 API를 더 내리진 못했습니다.


따라서 마시멜로 이하에서 작동을 보증할 수 없습니다.





저에겐 최신의 안드로이드를 탑재한 기기가 없습니다.... 갤넥 CM12에서만 작동을 확인했기 때문에

그래서 이 키보드는 베가 아이언2떄처럼 작동을 확신할 수 없네요..

베가 아임백 키보드와 베가 아이언2 키보드는 1%의 차이가 존재하고 대부분 같으므로

이 앱이 문제가 발생하신다면 베가 아이언2 키보드를 사용해 보시는 것도 추천드립니다!




위에서 설명한 대로 com.pantech.res.apk를 설치하지 않으시면 패키지를 찾을 수 없는 오류가 발생하여 강제종료가 발생합니다.



기본 apk는 kimcloud.kr에서 받아서 수정했습니다.

http://www.kimcloud.kr/pantech/IM-100S/ 의 IM-100S_DEODEXED.zip




긴 글 읽어주셔서 감사합니다.


저작자 표시 비영리 변경 금지
신고
댓글
  • 이전 댓글 더보기
  • 김태윤 혹시 s6 키보드나 s7 키보드도 포팅해주실 수 있나요? 2016.08.27 22:18 신고
  • ㅂ붛ㅎ ㅜ ㅜ 한손모드가 잇ㅅ으면 좋겟어오.. 2016.09.17 13:07 신고
  • 한손모드 미르님이 만드신 베가 아이언 2 키보드 쓰는데 이건 한손모드가 있내요 ㅎㅎ 2016.09.28 16:03 신고
  • 김정민 너무나도 아이언2 키보드를 좋아하고 님덕분에 잘 썼어요. 근데 기계를 안드로이드 6.0 마시멜로로 업했더니 강제어류가 생겨서 못쓰고 있네요. 6.0에서도 쓸 수 있게 부탁드려요. 2016.10.01 20:40 신고
  • 베가키보드 정말감사합니당 폰바꾸면서키보드가익숙치안아고생햇는데 덕분에 편해졌어요 2016.10.02 02:39 신고
  • 강백호 베가아이언2 쓰다가 노트7으로 갈아탄 유저인데 기본 내장되어있는 베가키보드가 적응안되어 여기저기서 다운받고 지우고 했는데 드디어 쓰던걸 쓰게되서 너무 감사드립니다 2016.10.11 08:26 신고
  • 와 감사해요. 베가키보드 제일좋아하는데 다시 쓸수있게되서 좋네요 2016.10.30 23:32 신고
  • 갤럭시 알파 롤리팝 5.0.2 에서 잘됩니다. ^^
    아이언2에 있던 편집모드가 없어진건 아쉽네요. 영역지정기능 짱잘써먹었는데... 팬택아 진짜 ㅠ
    2016.10.31 00:09 신고
  • No.2_Sabo 정말 감사합니다
    베가아이언2 키보드도 노트4에서 잘 사용하였고
    마쉬멜로우로 넘어오면서 더 이상 사용하지 못해 저와 와이프 둘 모두 매우 아쉬웠는데 다시 사용할 수 있어서 너무 좋습니다
    정말정말 감사합니다
    와이프한테 다시 사용할 수 있다고 하니 너무 좋아하네요^^
    2016.11.06 19:39 신고
  • SDA커커컴보 벡아언 RR누가롬 쓰는중인데 벡아언2키보드는 자꾸 강종되더니 이 키보드는 잘 되네요!
    이키보드만 쓰다가 다른거 쓸려하니 너무 안익숙했는데 ㅜㅠㅠ 감사합니다!!
    2016.12.06 13:15 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 사용해주셔서 감사합니다~ 2017.01.20 18:38 신고
  • 잠귀신004 베가아이언2에서 G5로 갈아타면서 키보드때문에 너무 불편했는데... 너무너무 감사합니다 잘 작동하네요
    잘 쓰겠습니다 ^_^
    2017.01.20 20:04 신고
  • 우연히 정말 감사합니다. 홍미4에 적용하니 잘 작동하네요. 다른거 쓸려니 너무 불편했는데 감사합니다~~ 2017.01.26 11:29 신고
  • 감사 미맥스도 잘 동작합니다. 원래 베가폰을 써서 이키보드가 편해요. 감사합니다. 잘쓰겠습니다. 2017.02.02 07:44 신고
  • ㅇㅇ 한자변환이 잘 안되네요..
    몇달 전까지는 잘 됬었는데 최근 한자변환을 하면 한자들이 안뜨곤 하네요 음....
    2017.03.24 23:42 신고
  • 두손싫어한손좋아ㅋ 사용중인 폰이 커서 한손조작 모드 없는게 아쉽네요.
    아이언2 키보드는 안드로이드 7에서 실행 안되고 아임백 키보드는 한손조작 모드가 빠졌고ㅜㅜ
    2017.04.04 12:59 신고
  • 성단 안녕하세요. 미르님 성단입니다.

    이런 앱 포팅같은 경우 어떻게 하시는지 궁금합니다. 저도 가지고 싶은 타사 키보드를 가지고 오고싶습니다.

    답변 기다리겠습니다.
    2017.08.24 09:34 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 가져오고 싶은 앱이 있는 기기를 A, 완성된 앱이 설치될 기기를 B라고 했을때, A와 B의 안드로이드 버전은 같거나 A<B이어야 성공확률이 높습니다. (build target api가 낮은 앱, 즉 낮은 버전용 앱도 최신 안드로이드에서 문제없이 잘 동작하는 경우가 많기 때문에 그렇습니다. 반대의 경우는 곤란한 경우가 생길 수 있습니다. 안드로이드가 버전업되면서 새로운 API의 추가가 발생하는데 이 추가된 API를 사용하는 앱을 낮은 버전에서 사용하려면.. 백포팅은 답이 없습니다.)
    예를 들어, Nougat에서 작동이 보장되는 앱을 Kitkat등 낮은 안드로이드 버전에 돌아가게 하는 것은 성공적인 동작을 보장하기 어렵습니다. 그러나 이 것은 상대적이며, 저는 A와 B 안드로이드 버전 차이의 절댓값이 1-2정도면 상위 안드로이드의 하위 버전 앱 호환성을 믿고 시도해볼만한 가치가 있다고 생각합니다. 그러나 킷켓 <--> 롤리팝처럼 Runtime등의 변화가 큰 두 버전의 경우 실패확률도 크므로 제가 말씀드린 것은 절대적인 부등호가 아님을 알려드립니다.
    만약 B기기가 롤리팝 이상이라면(또는 킷켓에서 ART사용중이시라면) smali 수정시 무조건 smali 문법을 정확히 지켜야 합니다. 달빅은 대충대충 지우고 첨가하고 해도 잘 돌아갔는데 ART로 바꿨더니 똑바로 문법 안지키면 강제종료 뜨면서 안되더라고요.

    의존 라이브러리 등으로 인해 A 기기의 System 파일이 필요한 경우가 많습니다. 그래서 저는 작업을 하기 전에 최소한 deodex된 포팅대상 앱과 framework폴더속 모든 jar을 준비해두고 시작합니다.

    앱을 이식하는 과정은 try - catch과정이라고 설명드릴 수 있습니다. 오류를 logcat으로 보고, 수정하는 작업입니다.
    먼저, 앱을 그냥 설치해봅니다. 이때 설치가 된다면(실행 여부는 상관없이) 괜찮지만, 설치를 방지하는 대표적인 경우가 있습니다. logcat으로도 이유를 확인할 수 있고, adb로 설치하신다면 설치가 안 되는 이유를 바로 확인할 수 있는데, 대표적으로는 최소 API 미달, 의존 라이브러리, 또는 패키지 충돌입니다.
    API로 인해 설치가 안 되는 경우에는 위에서 설명 드린 사례에 해당하며, apktool으로 어플을 디컴파일 하신다음 apktool.yml의 minSdkVersion을 수정하시면 됩니다. 예전에는 이 minSdk가 AndroidManifest.xml에 있었는데 apktool이 버전업되고 그러면서 어느순간 위치가 변경되었습니다.
    의존 라이브러리가 없어서 실패하는 경우에는 한 제조사의 기본앱으로 작업할 때 주로 발생하며, AndroidManifest.xml파일을 열어보면 <uses-library>항목이 있으며, 주로 A기기의 system/framework/폴더속 jar파일으로 존재합니다. jar파일을 추출하여 smali에 넣어주시고 uses-library는 지워주세요.
    이렇게 작업을 해주시면, apk 설치가 가능해져서 일단 첫 번째 단계인 try를 할 수 있게 됩니다. 만약, 설치가 안된다면, 설치 실패 이유가 logcat에 기록되므로 logcat을 참고하여 수정해야 합니다.
    패키지 충돌(또는 사인키 충돌)로 인한 실패는 대부분 A기기의 기본 앱을 수정하고 다시 A와 같은 제조사 스마트폰에 설치할때 발생합니다. 저는 제조사 상관없이 사용이 가능한 앱을 만들고 싶었으므로 일부러 B기기를 A와 다른 제조사 스마트폰으로 선택했습니다. 레퍼런스가 B기기로 무난했었습니다.

    A기기의 앱을 B기기에 설치하는데 성공했으면 일단 실행해봅니다.
    만약 앱을 시작하자마자 바로 강제종료가 발생한다면.. 무한 삽질 과정을 해야 합니다. 복잡하니 강제종료가 바로 일어나지 않는 경우부터 살펴보겠습니다.
    정상적으로 실행이 된다면 A기기에서 정상 작동하는 앱이 B기기에서도 모든 기능을 사용할 수 있는지 점검해야합니다. 이 단계를 가로막는 대표적인 장애물은 기기명 검사입니다. 일부 기본앱의 경우 System에서 기기정보를 받아와서 체크하는 과정이 포함되어 있을 수 있습니다. 이 경우에는 검사를 우회해야하는데, 이는 제 블로그에 자세하게 포스팅했으므로 이 댓글에서는 생략합니다. (http://itmir.tistory.com/408 참고, 이 링크에서 설명한 방법 외에도 매우 다양한 방법이 있습니다. 예를 들어 메소드를 갈아버린다던지.....)
    두 번째 장애물은 특정 기능을 사용할 때 강제종료입니다. 이 케이스의 경우 베가 아이언2 키보드를 포팅할 때 마주한 문제였습니다. 제조사에서 앱을 만들 때 독자 API를 만들어 사용한 경우에 자주 발생하며, 해결하는 방법은 두 가지 정도 있습니다. 첫 번째는 위에서 의존라이브러리 해결을 위해 framework/.jar을 가져온 것처럼 필요한 API를 가져와서 메소드 또는 클래스를 찾지 못하겠다는 logcat의 오류를 잡아주면 됩니다. 하지만, 저는 이 방법으로 오류를 해결하려 했지만, A의 앱에서 사용된 라이브러리만 추출하는 것도 까다로울 뿐만 아니라(A앱에서 aa.class를 요구한다면 aa.class 뿐만아니라 aa.class가 필요로하는 다른 class도 찾아야하기 때문) 너무 시간이 오래걸려서 이 방법을 포기하였습니다. 두 번째 방법이 여기서 나왔습니다. 베가아이언2 키보드를 타 제조사 기기에서 사용하기 위해서, 필요한 팬택만의 라이브러리를 가져오는 대신 그 기능을 분석한다음, 직접 코드를 만들어서 오류가 발생하는 기능을 대체하는 방법이 두 번째 방법입니다. 예를 들어, http://itmir.tistory.com/499 링크를 참고하시면 제조사 팬택에서 만든 키보드앱에는 커스텀 Seekbar가 적용되어 있는데, 이 Seekbar는 다른 제조사에는 없는 java코드가 사용되었으므로 타 제조사에서 앱을 실행하면 강제종료됩니다. 따라서 먼저 강제종료가 발생하는 코드가 어떤 역할을 하는지 분석한 다음 제가 직접 액티비티를 만들어 기존 코드를 대체할 수 있도록 만들었습니다. java코드와 smali코드는 익숙해지면 속도와 가독성의 차이일 뿐 차이가 별로 없지만 smali 코드를 직접 타이핑하는 것은 아무리 익숙해져도 무리가 있으므로 직접 빈 앱프로젝트를 하나 만든다음 필요한 java코드가 존재하는 앱을 apk로 빌드하고, 다시 apk를 smali로 분해하는 과정이 필요합니다. 또한, 사실상 두 개의 앱을 하나로 합치는 과정이므로 이 과정에서 주의해야할 단계가 있습니다. 너무 길어지므로 resource id(public.xml) 중복 방지라고 말씀드리고 생략하겠습니다.
    이 외에도 A앱이 A기기의 다른 기본앱의 정보를 가져오는 경우(그리고 그 정보가 설정이라면..)도 생각해주셔야 하는데, 이게 대표적인게 제가 배포한 키보드의 진동/소리 설정입니다. 팬택은 키보드 설정을 SKYSettings였나.. 여기서 가져오는데요. 이 설정을 따로 빼서 설정 메뉴를 하나 만들려고 했지만, 너무 탈진해서 시도할 수 없었습니다...

    마지막으로 앱이 실행도 안되고 강제종료될 때는 위의 사례처럼 구체적인 해결방법은 없습니다. 대신, logcat이라는 도구가 있으므로 이 도구를 사용하여 어떤 오류가 발생하였는지 파악한다음 수정해주셔야 합니다.
    smali를 읽어보면 흐름이 보이는 경우가 있지만, 매우 운이 좋은 경우이고, 대부분 앱을 분석할때 dex를 java로 일부나마 복구해서 분석합니다. dex2jar과 jd-gui라는 툴을 사용해보세요.

    지금은 이 과정을 모두 수작업으로 해야하지만, 제가 올해 1월달에 이런 apk를 분석하는 과정들을 간편화 할 수 있도록 apk manager를 개조하고 있었습니다. 그러나 공부에 치이는 바람에 절반도 완성하지 못하고 용량만 잡아먹고 있는데요, 11월 이후에 정리할까 생각중입니다.

    글로 작성해도 상당히 긴 내용을 짧은 댓글로 쓰려고하니 중요하지 않은 부분이나 이해하지 어려운 부분은 생략하여 잘 이해하실 수 있으실지 모르겠네요..

    이 내용을 숙지하시려면 제가 예전에 올린 라이센스 관련 글도 정독해보시는 것을 추천드립니다.

    혹시 더 궁금하신거 있으시면 댓글로 남겨주세요.
    2017.08.26 19:17 신고
  • 아임백 구매완료 정말 글 잘봤습니다 혹시 아임백 스톤 메니저도 저런식으로 설치하면될까요? 아임백보다 사실스톤이 더탐나서 다져왔는데 스톤매니저가 타기기에없다보니 많이 아쉽네요 다들 루팅해서 인증을 꺼버리는방식으로 하다보니 매인폰에서하기엔 조금 위험한것같아서요 2017.08.31 21:37 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 제가 스톤매니저 앱을 살펴본게 아니라서 장담을 드리진 못할 것 같습니다.
    다만, 전문 지식이 없으시다면 스톤매니저 apk를 구하셔서 설치해보시고 작동을 확인해보시는 선까지 가능하실 것 같습니다.
    스톤 매니저 앱의 apk파일은 카페같은 곳을 검색해보시면 나오지 않을까 생각하네요..

    스톤매니저 앱이 아임백에서만 작동되도록 막혀있을경우, 요구하는 필수 파일들이 누락되어 있을경우 등 오류의 원인은 많지만, 이 오류들을 직접 해결하기에는 제가 윗 댓글에 작성한 것만큼의 작업이 필요하므로 불가능하거나, 상당히 힘든 과정이 이루어져야 합니다.
    2017.08.31 22:04 신고
  • 아임백 구매완료 혹시 스톤이 필요하시면 빌려드릴수 있는데 조금더 기초과정들이 정리되어있는 책들이 있을까요? 코딩이라고는 학교과정에서한게 전부라 안드로이드는 처음이다보니 배울게 좀 많은것같아서요 2017.08.31 22:08 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 아임백이 아닌 다른 기기에서 스톤매니저 앱이 동작하는지 여부를 먼저 파악하셔야 합니다.
    동작한다면 다행이지만, 설치가 아에 안되거나, 설치 후 강제종료가 발생해서 앱 작동이 안될때는 앱을 크랙해서 타 기기에서도 정상 작동하도록 수정하는 작업이 필요합니다. (이 작업이 제가 윗분 답글에 쓴 내용입니다.)
    윗분께도 간단하게 크랙 방법을 언급해드렸지만, 이 과정이 생각보다 안드로이드 앱의 심화된 이해를 필요로합니다. 앱을 크랙하는 방법을 다룬 책이 있는지는 모르겠지만, 제가 블로그에 글을 많이 올릴 당시만 해도 공개된 자료가 얼마 없어서 직접 시행착오를 격고 그 내용을 정리해서 글을 작성한게 있습니다.
    http://itmir.tistory.com/408

    스톤 매니저 앱을 살펴드리고 싶지만, 제가 올해 수험생이라 댓글 쓸 여유말곤 숨 돌릴 시간이 없어서 직접적인 도움을 드리기 힘드네요...
    윗 링크 말고도 제 블로그에 대략 두세개의 앱 크랙을 다룬 포스팅이 있습니다. 일단 작동이 되는지 확인해보시고, 안되신다면 방법을 찾아가셔야 할 것 같습니다.
    2017.08.31 22:22 신고
  • 아임백 구매완료 아 수험생 저도 취준생이라 사실 이런거 하면 혼나는데 말이죠 ㅋㅋ 일단 다른분들 후기를 보니 안드로이드 6.01 이하버전에서는 설치가 안되는 걸로 알고 있습니다. 그리고 소스를 띁어본게 아니라서 확인은 안되지만 다른분들이 루팅해서 설치하는 방식을보니 아임백 내부 어플인 시계와 음악 어플을 설치 해야 가능하다고 되어있더라구요 다른분들 이용하는 방식을 보면 루팅을 해서 럭키패치로 패키지 매니저의 서명 인증 비활성화 상태로는 작동이 되는것은 확인이되네요 집에 아이스크림이 아임백 하나라 g2 롬 올려서 시도해보려합니다 하다가 logcat 찾아도 물어볼사람이 한명도 없어서 엄두를 못내봤는데 질문 혹시 가능할까요? 아니면 앱 크랙을 도와주시면 유럽에서 기념품 하나 사다드리겠습니다. 2017.08.31 23:23 신고
  • 아임백 구매완료 일단 작성해주신 글보면서 더듬더듬 가고있습니다 자격증 공부보다 재미있네요 ㅋㅋ uses-library 항목이 없고 uses-퍼미션 만있는데 어디서 빠트린걸까요 ㅋㅋ 아 그만 자고 천천히 해봐야겠어요 ㅋㅋ 2017.09.01 00:47 신고
  • 페인터 정말 아직까지도 기호도 많거 입력이 편한것은 베가키보드 밖에는 없네요... 왠지 슬퍼지는 오늘 입니다 개발자님 닥분에 키보드 손맛이 좋네요 잘쓰겠습니다!! 2017.10.07 20:29 신고
댓글쓰기 폼