갑자기 실행이 되지 않았다.

[2011-11-01 14:28:47 - LGBooks] ------------------------------
[2011-11-01 14:28:47 - LGBooks] Android Launch!
[2011-11-01 14:28:47 - LGBooks] adb is running normally.
[2011-11-01 14:28:47 - LGBooks] Performing com.xxxxxxxxxx.activity.IntroActivity activity launch
[2011-11-01 14:28:47 - LGBooks] Automatic Target Mode: using device 'xxx'
[2011-11-01 14:28:47 - LGBooks] Uploading xxxooks.apk onto device 'xxx'
[2011-11-01 14:28:48 - LGBooks] Installing xxxooks.apk...
[2011-11-01 14:28:50 - LGBooks] Installation error: INSTALL_FAILED_DEXOPT
[2011-11-01 14:28:50 - LGBooks] Please check logcat output for more details.
[2011-11-01 14:28:50 - LGBooks] Launch canceled!

위와 같이 오류가 발생했다.
단말을 재부팅해보고 기존 어플리케이션도 삭제해 보고...
이클립스도 재실행 해봐도 도무지 같은 메시지만 표기됨..흐미..

자 그런데.. 여기에 힌트가 있었다.
 Please check logcat output for more details.
로그켓 체크해봐라~~ 흐미..

확인해보니 아래와 같은 부분이 보였다.

11-01 14:28:48.704: E/dalvikvm(1405): Invalid name: 'phoneModel��'
11-01 14:28:48.704: E/dalvikvm(1405): Trouble with item 6193 @ offset 0x200c0
11-01 14:28:48.704: E/dalvikvm(1405): Cross-item verify of section type 0004 failed
11-01 14:28:48.704: E/dalvikvm(1405): ERROR: Byte swap + verify failed
 
설치는 정상적으로 잘되었으나 실행시 오류가 발생한것으로 보인다.
달빅에서 이름이 뭔가 잘못되었다고 나온다. 폰모델??? 아.. 방금전 코딩한 부분의 변수이름이 보였다.
그리고 변수뒤에 붙어 있는 특수 문자... 으흠.. 

파워포인트에서 복사해서 붙여 넣은 문자열에 뭔가 문제가 있었던거 같다.
그래서 해당 문구가 들어있는 모든 텍스트를 삭제하고 하나하나 타이핑 해주었다.

해결.. ㅡ0ㅡ;;;;;;;;
 
저작자 표시 비영리
신고

댓글을 달아 주세요

넥서스S를 사용중입니다.
여기저기 커스텀 펌웨어와 이것저것 깔아보는 즐거움에 상당히 만족하며 사용하고 있습니다.
그런데 얼마전 MIUI로 OS를 올려서 사용하고 있는데..
갑작스럽게 저장공간 부족이라는 메시지를 보게 되었습니다.

잉? 별로 설치한 것도 없는데.. 말이죠..

저장공간을 살펴 보았습니다.
저장공간 1G중 남은양은 1메가 이하..
후덜덜.. 뭔가 잘못된것을 느끼고..
여거저기 찾아보니..

Tombstones가 문제가 되고 있다는것을 알았습니다.
루팅후 루트익스플로워 같은 프로그램을 이용하여
/data/tombstones 이라는 폴더에 접근해 보니
특정 파일이 무려 900M이상 차지하고 있더군요..

지워도 되는지 안되는지 고민을 하다가 여기저기 검색으로 알아보니..
해당 파일은 디버깅을 위한 그냥 로그 정도로 인식되더군요.
과감하게 해당 파일만 삭제.. ㅎ
혹시나 몰라 폴더는 그냥 남겨 두었습니다. 

내장 메모리 사용량이 100M이하로 줄었습니다. ㅎ
혹시 문제가 되시는 분이 있으면 요것도 한번 확인해보세요. 
저작자 표시 비영리
신고

댓글을 달아 주세요

잘 되는줄 알았으나 잘 안되더군요.. 
이글은 무시해 주세요..


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

넥서스S 루팅관련글을 열심히 읽었는데.. 너무 어렵고 힘들더란..
문제는 내 노트북은 맥북이고.. 맥os라.. 윈도우 환경에서 작업이 힘든..
vmware는 장치를 잘 인식 못해주고..

그래서 찾은 아주 쉬운 방법

http://forum.xda-developers.com/showthread.php?t=927838

간단 요약하면
넥서스s를 usb 디버깅 모드로 설정한다.
넥서스S를 끄고 전원+볼륨업 키를 눌러 부트로더 화면으로 들어가 대기한다.
pc에서 위의 링크에서 다운로드한 파일을 이용하여 명령어를 날려준다.
알아서 재부팅되고 끝~

저작자 표시 비영리
신고

댓글을 달아 주세요

  1. dothezi 2011.11.21 22:38 신고  댓글주소  수정/삭제  댓글쓰기

    감사하긴 한데요 이거를 어떤 파일을 클릭하고 무슨 명령어를 쳐야하나요?

화면을 전환하면 이상하게 데이터를 Reload를 하길래 확인해보니
onCreate를 다시 호출하는것으로 판단되더군요. 헐.
문제는 대부분 onCreate에서 데이터의 로딩을 한다는것이죠.

간단하게 아래와 같은 방법으로 reload를 방지할 수 있습니다.

AndroidManifest.xml 파일
<activity android:name=".boarddetail.BoardDetailActivity" android:label="@string/app_name"
             android:configChanges="orientation|keyboard" android:theme="@style/WindowTitleBar">
        </activity>
orientation이 화면 전환 이고.. keyboard가 키보드가 튀어 나올때의 옵션인것 같습니다. "|" 기호가 있는걸 확인하세요.
오.. 이거 옵션좋군요.
저작자 표시 비영리
신고

댓글을 달아 주세요

ListView에 WebView를 사용하면 해당 WebView에는 클릭 이벤트가 먹지 않습니다. ㅜㅜ

그래서 아래와 같은 방법을 사용하시면 클릭이벤트가 먹습니다.
<WebView android:layout_width="70dp" android:layout_height="wrap_content" 
            android:scrollbars="none"  android:clickable="false" android:focusable="false"
            android:id="@+id/board_item_row_boardwriter_webview" android:layout_marginRight="5dp"/>
헉..
그래도 먹지 않습니다.
focusable이 false로 되어 있으면 되는데.. 실제로는 먹지 않아서 소스에서도 한줄 추가해 주셔야 합니다.
WebView webView = rowHolder.getBoardWriterWebView();
webView.setVisibility(View.VISIBLE);
webView.setFocusable(false);
webView.loadDataWithBaseURL(null, p.getWriter(), "text/html","UTF-8", null);
오.. 이제 되는군요.
이러면 Webview 영역을 클릭하여도 ListView의 클릭이벤트가 먹네요..

요약 : 안드로이드 특징인지 ListView 안에 클릭 가능한 객체(WebView나 버튼 등)가 존재하면
ListView 를 클릭했을때 이벤트를 호출하지 않습니다. Button이나 WebView가 해당 이벤트를 먼저 가로Event를 먹습니다. 그래서 WebView 의 focusable을 false 로 만들어 주면 가능하며 xml에서 설정해도 적용되지 않으므로 코드상에 한번더 설정해줘야 합니다.

저작자 표시 비영리
신고

댓글을 달아 주세요

  1. 다루 2012.03.28 10:11 신고  댓글주소  수정/삭제  댓글쓰기

    정말 감사합니다 ㅠㅠ

    이문제로 몇일간 고생했는데

    정말 좋은 정보 주셔서 감사합니다 ㅎ

  2. Favicon of http://susemi99.tistory.com BlogIcon 쎄미 2012.10.23 11:28 신고  댓글주소  수정/삭제  댓글쓰기

    고맙습니다 ^^

  3. Favicon of http://rainmaker0303.tistory.com BlogIcon 무대포개발자 2013.01.01 20:28 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 자료네요 퍼갈게요 ^^

안드로이드 SDK 단축키

4. 테크니컬&팁/4.4.Android 2010.12.08 13:29 Posted by 지누셩
이번에 나온 진저브레드 SDK는 UI가 많이 바뀌었습니다.
기본적으로 키보드 부분이 제거되어 보이네요..



쿼티 키보드와 버튼들이 기본적으로 없으므로 단축키를 알아야 실제로 안드로이드를 구동하기 쉬울것 같아 정리하여 보았습니다.

백버튼 : ESC 키
홈버튼 : Home 키
찾기버튼 : F5 키
설정버튼 : PageUp 키 혹은 F2 키

통화버튼 : F3 키
잠금버튼 : F4 키 혹은 F7
최대화면/취소 : Alt + Enter 키
마우스 트랙볼변경 : F6

기타 더 많은 키가 있을것 같습니다만.. 아직 찾질 못했네요..

저작자 표시 비영리
신고

댓글을 달아 주세요

우선 LG에서 만들어서 기본적으로 포함되어 있는 가상 키보드 어플리케이션의 경우 사용하기 상당히 불편했습니다.

그래서 마켓에 올라오는 키보드 프로그램들을 설치해보았습니다.

유명한것으로


키보드프로, 한손 키보드, 한글키보드, 딩굴 한글 입력기 등 참 많죠..


그러나 아시다 시피 이런 프로그램들을 설치해서 사용하는것은 문제가 있었습니다.

해당 프로그램들을 기본 입력기로 설정한후 쿼티 키보드를 사용하는 경우

키보드 어플리케이션이 오작동하거나 튕기는 증상이 발생했었죠.


자.. 여기 해결책이 있습니다.


마켓에서 '키보드스위치'를 검색해 보시면

이희진님이 만드신 '키보드스위치 for ROOT USERs' 라는 프로그램이 있습니다.


어플 설명은 아래와 같습니다.


마켓에 있는 딩굴같은 소프트키보드를 설치하면 쿼티자판이 제대로 동작하지 않습니다..ㅡㅜ

그래서 이렇게 만들었습니다.

*** 일단 이게 시스템 권한이 필요한 앱이라서 루팅하신 분들만 사용하실수 있습니다.


설치해보세요~~ 강추합니다. ^^



저작자 표시 비영리
신고

댓글을 달아 주세요

cyon 홈페이지에서는 옵티머스Q는 OSP에 대한 내용이 없는 상황입니다.
즉, 지원하지 않는것처럼 보입니다.

그러나 아무것도 하지 않고 그냥 프로그램 설치만 하면 정상적으로 OSP를 사용할 수 있습니다.

Cyon 홈페이지에서 프로그램을 다운로드 받습니다.


위와 같이 SKT의 SU950 이라는 모델을 선택합니다.
그러면 아래와 같이 OSP라는 프로그램을 다운로드 받을수 있는 부분이 나타납니다.

해당 프로그램을 다운로드 하여 설치합니다.

컴퓨터에 USB를 이용하여 옵티머스Q를 연결한 상태에서
설치한 LG On-Screen Phone 프로그램을 실행합니다.
몇가지 설정창이 나타납니다.

- 케이블 방식을 이용하여 연결
- 폰 모델명은 SU950으로 설정
- 비밀번호 입력 (초기 비밀번호는 0000입니다.)

그러면 짜잔.. 아래와 같이 나타는군요.



컴퓨터 화면에 폰과 똑같은 모양의 화면이 나타납니다.
핸드폰의 화면과 동일한 화면이 보여지게 됩니다.
컴퓨터에서 조작해도 폰에서도 동일하게 동작하며.. 폰에서 동작해도 컴퓨터에 동일하게 표시됩니다.

배경도 옵티머스Q UI가 나타나는것을 보면 아마도 개발은 하였으나 발표는 못하고 있는 상황인듯 합니다.
옵티머스Q의 2.1 업데이트를 한후에 아마도 가능할것 같습니다.
가끔 유용하게 사용할 수 있겠네요.

저작자 표시 비영리
신고

댓글을 달아 주세요

  1. Favicon of http://raycat.net BlogIcon Raycat 2010.08.25 22:44 신고  댓글주소  수정/삭제  댓글쓰기

    이거 목록에 lu2300이 안보여서 헷갈렸네요..ㅎ.ㅎ

안드로이드를 사용하면서 느끼는 것이지만..
역시 멀티 테스킹은 장단점이 극명하게 생기는 기술인것 같다.
현재 안드로이드는 멀티 테스킹을 지원하게 되어 있는데 특정 어플리케이션이 CPU를 과도하게 잡아 잡수시는 어의없는 상황을 만들게 된다.

나중엔 OS가 해당 프로세스들을 잡아 주는 기능을 넣어줬으면 한다.

많은분들이 Task Killer류의 프로그램을 사용하는것으로 알고 있는데 가장 유명한 프로그램이 아마도 Advanced Task Killer 라는 프로그램이 아닌가 생각된다.

그런데 사실 해당 프로그램은 개인적으로 상당히 마음에 안들었다.
메모리에 상주하는 프로그램을 보여주는기능과 원하는 어플리케이션을 선택하여 kill할수 있는 기능은 상당히 유용하지만.. 그게 다이다.
어떤 어플리케이션이 얼마나 메모리를 차지하고 얼나마 cpu를 차지하는지 알려주었으면 하는데.. 그런 기능은 제공되지 않았다.

그래서 찾아낸 프로그램이 바로 OSMonitor라는 프로그램이다.

해당 프로그램은 위와 같은 아이콘을 가지고 있다. OSMonitor라는 이름으로 마켓에서 무료로 다운로드 받을수 있다.

가장 마음에 드는 기능이 바로 CPU의 사용률을 보여주는 화면이다.
현재 Process의 갯수와 총 CPU의 사용률을 보여주며..
아래로는 해당 프로세스를 보여준다.
위의 스샷에는 이름모를 이상한 프로세스들이 많은데 대부분은 시스템에서 사용하는 프로세스이다.
설정을 변경하면 해당 시스템 프로세스를 숨기는 기능을 제공한다.
Load라 쓰여진 부분이 CPU의 사용율을 보여준다.
특정 프로세스가 %수치가 높으면 해당 프로세스가 CPU를 잡수시고 있다는 뜻이고.. 이 프로세스 때문에 배터리를 우걱우걱 처드시는 좀비같은 프로그램이라 생각하면 된다.
가끔 브라우저 프로그램도 CPU를 우걱우걱 잡수시고 있다. 원하는 프로세스를 길게 누르면 kill 할수 있는 기능을 제공한다.

두번째 탭에서는 network관련 내용을 보여준다. IP를 확인 할수 있다.. 뭐. 별필요는 없어 보인다.

3번째 탭은 현재 커넥션이 이루어 지는 IP의 정보를 보여준다.
너무 양도 많고 복잡해서 고급 사용자가 아니면 해독하기 힘들거 같다.

Misc 라는 탭에서는 시스템에 대한 전반적인 정보를 보여준다.
현재 CPU가 몇 Hz로 동작하는지를 실시간으로 보여준다. CPU가 사용중이면 클럭이 뛰는것을 볼수 있다.
배터리 상태정보와 기타 파일시스템의 사용량도 보여준다.


어드밴스 타시크 킬러 프로그램이 국내에서 상당히 많은 사용자를 확보하고 있는데 이유를 정확히 모르겠다.
사실 기능도 떨어지고 편의성도 많이 떨어지는 프로그램이라 생각된다. 사실 범인을 모르는 상태에서 모두가 범인일지 모르니 다 죽이는 꼴이 아닌가..

현재 사용하는 단말기가 옵티머스Q이기 때문에 사실 메모리 관리는 별로 관심을 안가지게 되는게 사실이다.
메모리야.. 512M니.. 늘 펑펑 남아 돌아가니까.. 그러나 초기 안드로이드 모델들은 사용할수 있는 메모리 양을 늘리기 위해 타스크 관리 프로그램들을 이용하는데~~ 사실 큰 의미가 있는지는 개인적으로 잘 모르겠다.
어짜피 메모리는 시스템에서 알아서 관리해 주지 않는가?

문제는 CPU를 잡아 잡수시고 있는 범인을 색출해 내고 해당 범인만 죽여주는 방법이라 생각한다.
이런 방법을 이용할수 있는 사용자라면 타스크 킬러 프로그램대신 OSMonitor를 한번 사용해 보시는건 어떨지..
살짝 추천해 본다.



저작자 표시 비영리
신고

댓글을 달아 주세요

개인적으로 안드로이드 프로그램을 공부해 보고 싶어 뭘하나 만들고자 했습니다.
그래도 마켓에 올리고 사람들이 사용해 주길 바라는 개발자의 마음이 있기에..
정말 중요하면서 간단하지만 정말 필요한게 무엇인지 찾아보던중..

아.. 안드로이드에서의 지하철 프로그램들은 왜 다들 이모양이냐.. 라는 생각을 하게 되었습니다.

그래서 만들기 시작한 지하철 노선도 프로그램..


처음 시작을 어떻게 해야 하나 상당히 고민을 하였으나..
지하철 이미지를 우선 만들고..
지하철의 위치와 정보를 따로 만들어 해당 이미지위에 좌표를 그리던.. 하자.. 라는 식으로 진행하였습니다.

처음에 Scroll 객체를 이용해서 View를 집어 넣었더니.. 이건뭐..
안드로이드가 문젠지 단말기가 문젠지.. 정말 버벅거려서..
Scroll객체를 제거하고 View만 통으로 집어 넣고..
move를 감지해서 이미지를 다시 그리는 식으로 만들었더니 그나마 좀 좋아졌습니다.

좌료를 하나하나 excel에 기록해서 지하철정보와 함께 만들어 놓고.
[현재는 1호선 / 2호선 정보만 입력한 상태]
그리고 경로를 선택하면 원하는 지점까지의 최적경로를 찾아내기 위한 노력을 했습니다.
아.. 이놈의 알고리즘.. ㅜ0ㅜ

처음엔 정말 별거 아닐거라 생각하고 최적의 경로를 검색하는 로직을 작성하는데..
이게 잘 안되는겁니다.ㅜ0ㅜ
그래서 생각해낸 Tree구조.. 시작점을 최상위 root로 잡고 child를 그려나가는 식으로...
성능이 안나오지 않을까 걱정했으나 아직까지는 큰 문제는 없어 보입니다.

그런데.. 이게 쉽지가 않군요..
찾긴 찾는데.. 원하는 방향을 찾지 못하네요..

아무튼 거의 중요한 부분들은 틀을 만들고 구현하는데 성공하였습니다.

이제 사용자 편의성을 개선시키고..
남은 지하철 3~9호선 + 분당선 좌표 집어 넣고..
마켓에 1.0을 릴리즈 하는 일만 남았네요.

아무튼.. 웹프로그래밍만 하다가 오랜만에 어플리케이션을 만들려니.. 이거 머리에 쥐가 나겠습니다. ㅜ0ㅜ


저작자 표시 비영리
신고

댓글을 달아 주세요

  1. RoyPark 2013.09.28 20:51 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 지하철 어플 관련해서 질문하고 싶은데요!!
    보통 노선도를 보여주고 해당역을 클릭하면 정보를 볼수 있는데, 이미지위에 해당 역을 클릭한다는게 이해가 안가네요… 설명좀 부탁드리면 안될까요? 이미지 위에 어떻게 각각의 역을 객체로 만드는지 모르겠습니다. (이미지는 확대 축소가 가능한 상태에 이동도 가능한 상태라는 가정하에!!)

[2010-08-12 10:08:08 - xx] WARNING: Application does not specify an API level requirement!
[2010-08-12 10:08:08 - xx] Device API version is 8 (Android 2.2)


기본적으로 프로그램을 실행하면서 위와 같은 Warning을 보게 되었다.
위의 오류는 현재 어플리케이션의 API Level의 요구사항을 설정하지 않았다는 오류 같아 보인다.
현재 안드로이드 2.2의 가상 머신을 돌리고 있는 상황이다.

위와 같은 경고 메시지를 보지 않기 위해 아래와 같이 해결할 수 있다.

- AndroidManifest.xml 파일 - 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="--"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:label="@string/app_name" android:name="MainWindow">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
<uses-sdk android:minSdkVersion="4" />

</manifest> 

위와 같이 minSdkVersion을 설정할 수 있다.
참고로 위와 같이 4로 설정하면 안드로이드 1.6 이상에서 구동가능으로 설정된다.
참고로 안드로이드 버전별 API Level은 아래와 같다.

Platform Version API Level
Android 2.2 8
Android 2.1 7
Android 2.0.1 6
Android 2.0 5
Android 1.6 4
Android 1.5 3
Android 1.1 2
Android 1.0 1

현재 안드로이드 1.5 이하를 사용하는 단말기가 거의 없는 상황이기 때문에 정말 최소로 잡고 싶다면 1.5를 기준으로 하면된다. 대부분의 단말에서 동작하게 하기 위해서는 1.6이상으로 잡자.

참고로 현재 가장 낮은 국내의 안드로이드 단말기는 LG전자의 안드로원 모델이다.
기본 펌웨어 버전이 안드로이드 1.5이고 이후 1.6 펌웨어가 만들어져 출시되었다.

즉 Level 4 이상으로 잡으면 현재 국내에 출시한 모든 안드로이드 단말기에서 동작이 가능한 어플리케이션을 만들수 있다.
저작자 표시 비영리
신고

댓글을 달아 주세요

  1. 2010.08.13 10:30  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

res / values 폴더에 xml파일을 만든다.

string.xml 파일은 기본으로 제공된다.
다른 파일을 사용하고 싶으면 동일한 폴더에 원하는 이름으로 xml 파일을 만들어 아래와 같은 형식으로 사용할 수 있다.
해당 폴더의 모든 xml 파일은 동일하게 인식한다.

단. 동일한 이름의 name을 사용하는게 발견되면 eclipse 툴에서 오류를 발생시킨다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">지누셩의 프로그램</string>
    <string name="app_name">한글도 영문도 상관없음.</string>
</resources>

해당 값을 읽어 오는 방법

xml에서 사용하는 방법
  • "@string/hello" 와 같은 형식을 이용하여 값을 읽어 올수 있다.
  • string.xml 파일이 아니라도 상관없음. value.xml 파일도 동일하게 "@string/app_name"형식으로 읽어온다.

java소스에서 사용하는 방법
  •  getString(R.string.hello);
단..Activity 객체를 상속받은 메인 클래스에서만 해당 값을 읽어 올수 있음.


저작자 표시 비영리
신고

댓글을 달아 주세요



 

티스토리 툴바