요즘은 Android Studio를 통해서 CPU 값을 측정하기 좋지만 만약 Android Studio가 깔려있지 않은 경우,

adb를 이용하여 CPU 점유율을 측정하는 방법을 알아보도록 하자.

(노가다의 느낌이 있지만 혹시나 앱이 느리거나 죽는 경우가 발생했을 때 쓸 일이 생길지 모른다.)

 

지정한 폴더에 txt파일로 저장

adb shell top -s cpu -m 8 -d 1 > C:\Users\users\Documents\abbb\a_test5.txt

 

원하는 패키지 명만 기록

adb shell top -s cpu -d 1 | grep "패키지 명"

 

 

 

 

 


WRITTEN BY
김치치즈스마일
세계정복!

,

 Android

 iOS

 https://developer.android.com/about/dashboards/index.html

 https://developer.apple.com/support/app-store/

 

 

 

 

 

※Android의 경우 사이트 언어를 한국어가 아닌 영어(English)로 해야 최신을 볼 수 있다. (한국어로 할 경우 업데이트가 영어보다 늦게 될 경우 있음) 


WRITTEN BY
김치치즈스마일
세계정복!

,

 

 

위와 같이 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 라는 에러가 뜬다.


이유는 Activity가 아닌 곳에서 startActivity를 요청했기 때문에 발생한다. 친절하게 로그가 보여준대로 FLAG_ACTIVITY_NEW_TASK를 addFlags해주면 된다.

 

 

'프로그래밍 > Android' 카테고리의 다른 글

adb cpu 점유율 측정  (0) 2017.08.07
Android / iOS Version 점유율 확인  (0) 2017.05.27
화면 캡처 하기  (0) 2017.05.27
화면 캡처 막기  (0) 2017.05.27
Context란?  (0) 2017.05.27

WRITTEN BY
김치치즈스마일
세계정복!

,

Android에서는 디바이스가 제공하는 기능을 사용하거나 혹은 Eclipse나 Android studio를 통해 PC와 연결해서 캡쳐를 할 수가 있다. 하지만 그런 방법이 아닌 소스를 통해서 직접 캡쳐를 하는 방법을 간단하게 구현해보았다.

 

 

getWindow.getDecorView()는 전체 화면을 캡쳐하기 위해서 쓴 부분이다.

 

 

버튼 클릭 시 캡쳐하도록 하였다.

 

 

캡쳐와 관련된 주요한 부분인데 화면에 뿌릴 때 캐시하도록 하여 그 캐시를 가로챈 후, Bitmap으로 담아와서 PNG 형태로 SD Card에 저장하는 방법이다.

setDrawingCacheEnalbed()를 true로 하면 캐싱해서 getDrawingCache()로 view를 가져올 수 있다.

다음으로 compress()의 첫번째 인자는 비트맨 이미지 포맷, 두번째 인자는 품질, 세번째 인자에는 stream값이 들어간다.

 

 

파일 저장을 위해서 AndroidManifest.xml에 위의 코드를 넣어주자.

 

 

최종 모습. CAPUTRE 버튼을 누르면 해당 View가 캡쳐되어서 저장된다. 


[출처] http://androi.tistory.com/43

[출처] http://sailerya.tistory.com/7


WRITTEN BY
김치치즈스마일
세계정복!

,

 

 

setContentView를 하기 전에 getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE) 를 적어주면 된다.

그렇게 하면 디바이스에서 DRM으로 보호된 이미지라는 Toast가 뜨면서 캡쳐가 안 된다.

또한 테스트해보니 PC에서 이클립스나 안드로이드 스튜디오에서도 캡쳐가 안 된다.


[출처] http://it77.tistory.com/311


WRITTEN BY
김치치즈스마일
세계정복!

,

Context가 무엇인지 가끔 질문이 들어오곤 하지만 명쾌하게 대답을 잘 못해준다.

그래서 이참에 Context란 무엇인지 정리를 하고 넘어가겠다.


일반적인 의미의 Conext란?

멀티 태스킹(Multi-Tasking)을 지원하는 운영체제에서 Task들은 운영체제가 정한 기준에 따라서 작업을 번갈아 가면서 수행한다. 이때, 해당 Task들의 수행상태를 기억하기 위해서 Task마다 실행 상태에 대한 정보를 구성하고 있는 것들을 Context라고 한다.


Android에서의 Context란?

Android System은 여러가지 형태의 실행 형식(Activity, Service...등)을 가지고 있다. 그래서 클래스 구현상 중복된 정보들이 있을 수 밖에 없다. 이러한 중복된 정보들을 줄이고 일원화 시키기 위해서 실행 클래스들의 상위 클래스로써 Context 클래스를 제공하고 있다.

따라서 Anroid System에서 모든 실행 형식을 가지는 클래스들은 Context 클래스에서 상속을 받아 설계되어 있기 때문에 다형성을 적용하여 코드를 통일성있게 표현할 수 있다.

결론적으로 Android System에서 Contexdt 클래스는 다형성을 사용할 목적으로 구현되었기 때문에 대부분의 함수들이 추상 메서드로 선언되어 있고 그 자신도 추상 클래스다.


Context 얻어오는 방법?

1. getBaseContext()

ex) Context context = getBaseContexdt(); // 생성자나 Context에서 기본 BaseContext

- 앱 종료 후 메모리에서 제거


2. getApplicationContext()

ex) Context context = getApplicationContext() // Global한 Context

- 특정한 Activity에 묶여 있지 않아서 쭉 살아 있다

- application이 kill되거나 재시작될 때마다 변경



3. (Activty 이름).this

ex) HelloworldActivity.this

- Activity가 destroy되거나, 다시 생성될 때마다 변경


Context 종류는?

 

 

[출처] http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=967

[출처] http://wengdiiiy.tistory.com/1


WRITTEN BY
김치치즈스마일
세계정복!

,

 

android.content.ActivityNotFoundException: Unable to find explicit activity class {}; have you declared this activity in your AndroidManifest.xml?

 

 

 

AndroidManifest.xml에 Activty를 등록 해주지 않아서 생긴 에러이다. AndroidManifest.xml에다가 Activity를 등록해주면 해결된다.


WRITTEN BY
김치치즈스마일
세계정복!

,

 

구글 결제 에러에서 '요청하신 항목은 구매할 수 없습니다.'라고 뜨는 경우가 있다.

워낙 정보가 없고 케이스가 다양해서 정리해 보았다.


1. 개발자 콘솔에 아직 APK 파일이 업로드 중이기 때문에 발생. (APK 업로드 완료 하였지만 반영이 느림)

[참고] http://hurmiz.blog.me/220566192956


2. 개발자 콘솔에 등록된 APK 버전과 매니페스트 버전이 다르기 때문에 발생.

[참고] http://hurmiz.blog.me/220566192956


3. 알파 > 공개 알파테스트로 해서 업데이트 제출. 그 후 아래 적혀있는 url 주소로 들어가서 테스트 앱을 받아서 실행.

[참고] http://blog.naver.com/njo0208/220482001992


4. 구글 로그인 계정이 개발자 계정과 같을 경우 발생

[참고] http://teamtwocap.blog.me/220633296066


5. 추가된 인앱 제품을 게시 안해서 발생. (비활성 상태여서 발생)

[참고] http://202psj.tistory.com/527 / http://attackyourheart.tistory.com/70


WRITTEN BY
김치치즈스마일
세계정복!

,

 

 

App을 실행시켰을 때 Splash 화면을 띄우고 싶을 경우 위와 같이 Handler를 사용하여 구성하면 된다.

그리고 해당 Activity를 AndroidManifest.xml에서 Main Activity로 등록해 놓으면 App이 실행되면서 Splash 화면을 띄우게 된다.

 

 


WRITTEN BY
김치치즈스마일
세계정복!

,

 

onBackPressed Method 내에서 boolean 타입의 flag와 Timer를 사용하여 구현. 

 


WRITTEN BY
김치치즈스마일
세계정복!

,