검색결과 리스트
programmer/Android 개발에 해당되는 글 3건
- 2010/02/03 Designing for Performance (성능의 최적화)
- 2010/02/02 Hello Android!! 튜토리얼 따라하기!! 1탄
- 2010/02/02 안드로이드 개발 환경 설정
글
직접 영어를 해석하는 것이 가장 좋을듯 싶다.
Android를 하는데 있어서, 성능을 고려하는 Tip 이니, 숙지하는 것이 좋을 것 같아서, 정리를 해봤습니다.
"아무리 일반 휴대폰 보다 좋다 한들, 보통 데스크탑 컴퓨터보다 좋을리가 없고, 파워가 남아 돌지 않기에, 최대한 효율적인 코드 작성이 필요하다"
리소스가 제약된 시스템에 대해서는 두가지 룰이 있는데,
첫째, 할 필요가 없는 것은 하지 말고 , 둘째 피할 수 있다면, 메모리 할당하지 마라.
임베디드 디바이스에서, 마이크로 최적화가 가끔 효율적인 데이터 구조나 알고리즘을 개발하는 것을 더 어렵게 만드는 것은 사실이다. 기존 프로그램(데스크탑용)을 안드로이드에 가져온다면, 문제가 된다는 이야기다.!!!
애플리케이션이 같은 디바이스에서 실행 될 것이기 때문에, 우리는 모두 이렇게 함께 하나의 길에 있다.
이 문서를 여러분이 자동차 면허증을 얻었을때 배워야 하는 도로의 규칙들 같이 생각하면 될것이다.
여러분의 코드를 충분히 빠르게 만들어라.
1. Avoid Creating Objects
: 객체를 생성하는 것을 피하라!
2. Use Native Methods
: Native 메소드를 사용하세요
3. Prefer Virtual Over Interface
: Virtual 이 좋다!! Interface 보다... 아래꺼를 사용해라~
4.Prefer Static Over Virtual
: Static 이 좋다!! Virtual 보다...
5.Avoid Internal Getters/Setters
: 내부적인 Getter / Setter 를 피하시죠 , 바로 사용하시라는 (비경제적이라고 강조하네요)
6.Cache Field Lookups
: 지역변수 가 필드를 사용하는 것보다 훨~ 빠르다고 하니, 변경해주시길 바랍니다.
이거 나쁜 예제 이죠~ this.getCount() 는 아니되어요!!!
아래와 같은 예제와 같이 별도 지역변수로 변경해서 사용해주시길 바랍니다.
7. clare Constants Final
: 간단하다, Constants(상수,등등)는 final로 지정해라!
8. Use Enhanced For Loop Syntax With Caution
: 아래 주의 사항을 잘 읽어봐라!
9. Avoid Enums
: 외부 공개 API가 아닌 이상 Enums 의 사용을 자제 하세요
10. Use Package Scope with Inner Classes
: 내부 클래스에 Package Scope를 사용하라
11.Avoid Float
: float , double 등의 실수 자료형 는 사용을 피하라!
12 . Some Sample Performance Numbers
Android를 하는데 있어서, 성능을 고려하는 Tip 이니, 숙지하는 것이 좋을 것 같아서, 정리를 해봤습니다.
"아무리 일반 휴대폰 보다 좋다 한들, 보통 데스크탑 컴퓨터보다 좋을리가 없고, 파워가 남아 돌지 않기에, 최대한 효율적인 코드 작성이 필요하다"
리소스가 제약된 시스템에 대해서는 두가지 룰이 있는데,
첫째, 할 필요가 없는 것은 하지 말고 , 둘째 피할 수 있다면, 메모리 할당하지 마라.
임베디드 디바이스에서, 마이크로 최적화가 가끔 효율적인 데이터 구조나 알고리즘을 개발하는 것을 더 어렵게 만드는 것은 사실이다. 기존 프로그램(데스크탑용)을 안드로이드에 가져온다면, 문제가 된다는 이야기다.!!!
애플리케이션이 같은 디바이스에서 실행 될 것이기 때문에, 우리는 모두 이렇게 함께 하나의 길에 있다.
이 문서를 여러분이 자동차 면허증을 얻었을때 배워야 하는 도로의 규칙들 같이 생각하면 될것이다.
여러분의 코드를 충분히 빠르게 만들어라.
1. Avoid Creating Objects
: 객체를 생성하는 것을 피하라!
2. Use Native Methods
: Native 메소드를 사용하세요
3. Prefer Virtual Over Interface
: Virtual 이 좋다!! Interface 보다... 아래꺼를 사용해라~
Map myMap1 = new HashMap();
HashMap myMap2 = new HashMap();
HashMap myMap2 = new HashMap();
4.Prefer Static Over Virtual
: Static 이 좋다!! Virtual 보다...
5.Avoid Internal Getters/Setters
: 내부적인 Getter / Setter 를 피하시죠 , 바로 사용하시라는 (비경제적이라고 강조하네요)
i = getCount();
i = mCount();
i = mCount();
6.Cache Field Lookups
: 지역변수 가 필드를 사용하는 것보다 훨~ 빠르다고 하니, 변경해주시길 바랍니다.
for (int i = 0; i < this.mCount; i++)
dumpItem(this.mItems[i]);
dumpItem(this.mItems[i]);
int count = this.mCount;
Item[] items = this.mItems;
for (int i = 0; i < count; i++)
dumpItems(items[i]);
Item[] items = this.mItems;
for (int i = 0; i < count; i++)
dumpItems(items[i]);
이거 나쁜 예제 이죠~ this.getCount() 는 아니되어요!!!
for (int i = 0; i < this.getCount(); i++)
dumpItems(this.getItem(i));
dumpItems(this.getItem(i));
아래와 같은 예제와 같이 별도 지역변수로 변경해서 사용해주시길 바랍니다.
protected void drawHorizontalScrollBar(Canvas canvas, int width, int height) {
if (isHorizontalScrollBarEnabled()) {
int size = mScrollBar.getSize(false);
if (size <= 0) {
size = mScrollBarSize;
}
mScrollBar.setBounds(0, height - size, width, height);
mScrollBar.setParams(
computeHorizontalScrollRange(), computeHorizontalScrollOffset(),
computeHorizontalScrollExtent(), false);
mScrollBar.draw(canvas);
}
}
if (isHorizontalScrollBarEnabled()) {
int size = mScrollBar.getSize(false);
if (size <= 0) {
size = mScrollBarSize;
}
mScrollBar.setBounds(0, height - size, width, height);
mScrollBar.setParams(
computeHorizontalScrollRange(), computeHorizontalScrollOffset(),
computeHorizontalScrollExtent(), false);
mScrollBar.draw(canvas);
}
}
7. clare Constants Final
: 간단하다, Constants(상수,등등)는 final로 지정해라!
static int intVal = 42;
static String strVal = "Hello, world!";
static String strVal = "Hello, world!";
static final int intVal = 42;
static final String strVal = "Hello, world!";
static final String strVal = "Hello, world!";
8. Use Enhanced For Loop Syntax With Caution
: 아래 주의 사항을 잘 읽어봐라!
public class Foo {
int mSplat;
static Foo mArray[] = new Foo[27];
public static void zero() {
int sum = 0;
for (int i = 0; i < mArray.length; i++) {
sum += mArray[i].mSplat;
}
} //retrieves the static field twice and gets the array length once for every iteration through the loop. (컨테이너 종류에 따라 성능 저하 발생 우려, ArrayList 사용 자제)
public static void one() {
int sum = 0;
Foo[] localArray = mArray;
int len = localArray.length;
for (int i = 0; i < len; i++) {
sum += localArray[i].mSplat;
}
} // pulls everything out into local variables, avoiding the lookups.
public static void two() {
int sum = 0;
for (Foo a: mArray) {
sum += a.mSplat;
}
} // Enhanced For Loop 는 사용을 자제하라
}
int mSplat;
static Foo mArray[] = new Foo[27];
public static void zero() {
int sum = 0;
for (int i = 0; i < mArray.length; i++) {
sum += mArray[i].mSplat;
}
} //retrieves the static field twice and gets the array length once for every iteration through the loop. (컨테이너 종류에 따라 성능 저하 발생 우려, ArrayList 사용 자제)
public static void one() {
int sum = 0;
Foo[] localArray = mArray;
int len = localArray.length;
for (int i = 0; i < len; i++) {
sum += localArray[i].mSplat;
}
} // pulls everything out into local variables, avoiding the lookups.
public static void two() {
int sum = 0;
for (Foo a: mArray) {
sum += a.mSplat;
}
} // Enhanced For Loop 는 사용을 자제하라
}
9. Avoid Enums
: 외부 공개 API가 아닌 이상 Enums 의 사용을 자제 하세요
public class Foo {
public enum Shrubbery { GROUND, CRAWLING, HANGING }
}
public enum Shrubbery { GROUND, CRAWLING, HANGING }
}
Shrubbery shrub = Shrubbery.GROUND;
for (int n = 0; n < list.size(); n++) {
if (list.items[n].e == MyEnum.VAL_X)
// do stuff 1
else if (list.items[n].e == MyEnum.VAL_Y)
// do stuff 2
}
if (list.items[n].e == MyEnum.VAL_X)
// do stuff 1
else if (list.items[n].e == MyEnum.VAL_Y)
// do stuff 2
}
int valX = MyEnum.VAL_X.ordinal();
int valY = MyEnum.VAL_Y.ordinal();
int count = list.size();
MyItem items = list.items();
for (int n = 0; n < count; n++)
{
int valItem = items[n].e.ordinal();
if (valItem == valX)
// do stuff 1
else if (valItem == valY)
// do stuff 2
}
int valY = MyEnum.VAL_Y.ordinal();
int count = list.size();
MyItem items = list.items();
for (int n = 0; n < count; n++)
{
int valItem = items[n].e.ordinal();
if (valItem == valX)
// do stuff 1
else if (valItem == valY)
// do stuff 2
}
10. Use Package Scope with Inner Classes
: 내부 클래스에 Package Scope를 사용하라
public class Foo {
private int mValue;
public void run() {
Inner in = new Inner();
mValue = 27;
in.stuff();
}
private void doStuff(int value) {
System.out.println("Value is " + value);
}
private class Inner {
void stuff() {
Foo.this.doStuff(Foo.this.mValue);
}
}
}
private int mValue;
public void run() {
Inner in = new Inner();
mValue = 27;
in.stuff();
}
private void doStuff(int value) {
System.out.println("Value is " + value);
}
private class Inner {
void stuff() {
Foo.this.doStuff(Foo.this.mValue);
}
}
}
/*package*/
static int Foo.access$100(Foo foo) {
return foo.mValue;
}
/*package*/
static void Foo.access$200(Foo foo, int value) {
foo.doStuff(value);
}
static int Foo.access$100(Foo foo) {
return foo.mValue;
}
/*package*/
static void Foo.access$200(Foo foo, int value) {
foo.doStuff(value);
}
11.Avoid Float
: float , double 등의 실수 자료형 는 사용을 피하라!
12 . Some Sample Performance Numbers
| Action | Time |
|---|---|
| Add a local variable | 1 |
| Add a member variable | 4 |
| Call String.length() | 5 |
| Call empty static native method | 5 |
| Call empty static method | 12 |
| Call empty virtual method | 12.5 |
| Call empty interface method | 15 |
| Call Iterator:next() on a HashMap | 165 |
| Call put() on a HashMap | 600 |
| Inflate 1 View from XML | 22,000 |
| Inflate 1 LinearLayout containing 1 TextView | 25,000 |
| Inflate 1 LinearLayout containing 6 View objects | 100,000 |
| Inflate 1 LinearLayout containing 6 TextView objects | 135,000 |
| Launch an empty activity | 3,000,000 |
오늘도 여기까지 입니다.
위 사항은 이후 더 공부해서, 개선 보완할수 있는 부분에 대해서는 추가 하도록 하겠습니다.
설정
트랙백
댓글
글
Eclipse 세팅까지 끝낸 지금... 곧바로 실행 모드로 돌입한다.
처음 실행 해본 결과.. 너무 느리다!!!
주의 해야 할 점은 , 최초 실행은 너무 느리기 때문에, 이후 에뮬창은 닫지 말고 지속하기를 권장 합니다.
튜토리얼을 우선 마스터를 해서, 우리 안드로이드와 친하게 지내보기로 했다.
New Android Project 선택 Project 이름을 HelloAndroid로 한다.
Build Target 은 Android 2.1 로 맞춰서 진행 한다.
기본으로 생성된 JAVA 파일에는 Activity를 상속받은 클래스가 최초로 생성이 되어 있다.
"Notice that the class is based on the
그리고 그냥 finish 끝!!
그리고 실행!! -> Run As 는 Android Application 으로 ...
헐 실행이 최초에 자동으로 되지 않는 어처구니없는...
제일 먼제 Create an AVD 하라고 나온다.
아마도 AVD Manager 가 있는 상태에서 List of existing Android Virtual Devices : 가 없을 것이다.
사실, AVD 에 대한 프로그램을 실행 하였다고 하여도, 각가의 AVD를 생성해주지 않으면, 작동이 안되는것은 당연지사 일듯!
그래 New.. 해서 하나 생성해주자!.
이클립스에서도 Android SDK and AVD Manager 로 쉽게 실행 할수 있으나,
도스 창에서 아래 와 같은 명령어로도 실행이 가능하군
이클립스 없이 실행 하는 명령어.
새롭게 진행할 부분은 Construct the UI 부분이다.
이클립스로 작업 할때에 팁을 하나 줬는데, ctrl + shift + O 키를 누르면, import 구문이 자동 생성이 되는 것을 알아 냈다. 우하핫
Run the Application
Upgrade the UI to an XML Layout
Debug Your Project
아무튼 실행이 잘 되면,
간단하게 생성된 프로젝트에 대한 공부를 해봅시다.
리소스 부분은 application이 빌드될 때 가능한 한 효율적으로 컴파일되어 application package에 포함된다. 리소스는 각각에 대한 레퍼런스를 담고 있는 R 클래스 파일을 생성한다.
이는 디자인 타임 문법 검사의 이점과 더불어 코드에서 리소스를 참조할 수 있도록 해준다.
리소스도 별도로 정리를 해야 할것 같다.
안드로이드 책을 보지 않고 우선 인터넷에 떠돌아 다니는 글을 대충 참고하여 여기까지는 진행 했습니다.
이제 차근차근이 진행을 해봐야 겠죠
안드로이드 펍에서 발표한 자료가 돌아다니길래... 이건 첨부 합니다 ..
근데.. 첨부한 파일이 문제가 될 시에는 삭제해도록 할께용
오늘의 목적은 우선 안드로이드 실행이 주 목적인 셈이니, 달성했다.
이후부터 세부적인 부분부터 파헤쳐 볼 예정이다. 오늘은 여기까지만 진행 할꺼랍니다.
처음 실행 해본 결과.. 너무 느리다!!!
주의 해야 할 점은 , 최초 실행은 너무 느리기 때문에, 이후 에뮬창은 닫지 말고 지속하기를 권장 합니다.
튜토리얼을 우선 마스터를 해서, 우리 안드로이드와 친하게 지내보기로 했다.
New Android Project 선택 Project 이름을 HelloAndroid로 한다.
Build Target 은 Android 2.1 로 맞춰서 진행 한다.
Application name : Hello, Android(This is the human-readable title for your application — the name that will appear on the Android device.)
Package name : com.example.helloandroid (This is the package namespace (following the same rules as for packages in the Java programming language) that you want all your source code to reside under. This also sets the package name under which the stub Activity will be generated.
Create Activity : HelloAndroid(This is the name for the class stub that will be generated by the plugin. This will be a subclass of Android's
Min SDK Version : 7 (This value specifies the minimum API Level required by your application. If the API Level entered here matches the API Level provided by one of the available targets, then that Build Target will be automatically selected (in this case, entering "2" as the API Level will select the Android 1.1 target). With each new version of the Android system image and Android SDK, there have likely been additions or changes made to the APIs. When this occurs, a new API Level is assigned to the system image to regulate which applications are allowed to be run. If an application requires an API Level that is higher than the level supported by the device, then the application will not be installed.)
Package name : com.example.helloandroid (This is the package namespace (following the same rules as for packages in the Java programming language) that you want all your source code to reside under. This also sets the package name under which the stub Activity will be generated.
Your package name must be unique across all packages installed on the Android system; for this reason, it's very important to use a standard domain-style package for your applications. The example above uses the "com.example" namespace, which is a namespace reserved for example documentation — when you develop your own applications, you should use a namespace that's appropriate to your organization or entity.)
Create Activity : HelloAndroid(This is the name for the class stub that will be generated by the plugin. This will be a subclass of Android's
Activity class. An Activity is simply a class that can run and do work. It can create a UI if it chooses, but it doesn't need to. As the checkbox suggests, this is optional, but an Activity is almost always used as the basis for an application.)Min SDK Version : 7 (This value specifies the minimum API Level required by your application. If the API Level entered here matches the API Level provided by one of the available targets, then that Build Target will be automatically selected (in this case, entering "2" as the API Level will select the Android 1.1 target). With each new version of the Android system image and Android SDK, there have likely been additions or changes made to the APIs. When this occurs, a new API Level is assigned to the system image to regulate which applications are allowed to be run. If an application requires an API Level that is higher than the level supported by the device, then the application will not be installed.)
기본으로 생성된 JAVA 파일에는 Activity를 상속받은 클래스가 최초로 생성이 되어 있다.
"Notice that the class is based on the
Activity class"package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
TextView tv = new TextView(this);
tv.setText("Hello, Android");
setContentView(tv);
}
}
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
TextView tv = new TextView(this);
tv.setText("Hello, Android");
setContentView(tv);
}
}
그리고 그냥 finish 끝!!
그리고 실행!! -> Run As 는 Android Application 으로 ...
헐 실행이 최초에 자동으로 되지 않는 어처구니없는...
제일 먼제 Create an AVD 하라고 나온다.
아마도 AVD Manager 가 있는 상태에서 List of existing Android Virtual Devices : 가 없을 것이다.
사실, AVD 에 대한 프로그램을 실행 하였다고 하여도, 각가의 AVD를 생성해주지 않으면, 작동이 안되는것은 당연지사 일듯!
그래 New.. 해서 하나 생성해주자!.
이클립스에서도 Android SDK and AVD Manager 로 쉽게 실행 할수 있으나,
도스 창에서 아래 와 같은 명령어로도 실행이 가능하군
android create avd --target 7 --name my_avd
이클립스 없이 실행 하는 명령어.
android create project \
--package com.android.helloandroid \
--activity HelloAndroid \
--target 2 \
--path <path-to-your-project>/HelloAndroid
--package com.android.helloandroid \
--activity HelloAndroid \
--target 2 \
--path <path-to-your-project>/HelloAndroid
새롭게 진행할 부분은 Construct the UI 부분이다.
package com.android.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello, Android");
setContentView(tv);
}
}
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello, Android");
setContentView(tv);
}
}
이클립스로 작업 할때에 팁을 하나 줬는데, ctrl + shift + O 키를 누르면, import 구문이 자동 생성이 되는 것을 알아 냈다. 우하핫
Run the Application
Upgrade the UI to an XML Layout
Debug Your Project
아무튼 실행이 잘 되면,
간단하게 생성된 프로젝트에 대한 공부를 해봅시다.
src : 사용자생성 소스
=>HelloAndroid.java : 기본으로 지정해주었던 Activity 클래스
gen : AVD 자동생성 소스
=>R.java : 그림 ,레이아웃등 다양한 Resource를 코드에서 접근 할 수 있도록 함.
(리소스 파일에서 생성되는 클래스로 항상 자동으로 생성되며 직접 수정을 해서는 안됩니다.)
res : 리소스
=>Drawable (hdpi , ldpi , mdpi ) : 어플리케이션 내에서 사용될 그림 파일들
=>Layout : Activity의 화면 구성 정보를 담고 있는 xml파일들
=>Values : 문자열, 배열, 색, 스타일등 다양한 부가 정보들.
(그외에 Animation, XML, Style, 원시 리소스등 총 7가지가 있다고 한다)
Android Library : 안드로이드 SDK 사용을 위해 포함된 라이브러리
AndroidManifest.xml : 어플리케이션과 구성과 관련된 모든 정보를 담고 있는 파일. 어플리케이션 작성에서 가장 중요한 역할을 하는 파일입니다. 어플리케이션과 Activity의 다양한 설정, 사용권한, 연관된 라이브러리 등 다양한 정보를 포함합니다.
=>HelloAndroid.java : 기본으로 지정해주었던 Activity 클래스
gen : AVD 자동생성 소스
=>R.java : 그림 ,레이아웃등 다양한 Resource를 코드에서 접근 할 수 있도록 함.
(리소스 파일에서 생성되는 클래스로 항상 자동으로 생성되며 직접 수정을 해서는 안됩니다.)
res : 리소스
=>Drawable (hdpi , ldpi , mdpi ) : 어플리케이션 내에서 사용될 그림 파일들
=>Layout : Activity의 화면 구성 정보를 담고 있는 xml파일들
=>Values : 문자열, 배열, 색, 스타일등 다양한 부가 정보들.
(그외에 Animation, XML, Style, 원시 리소스등 총 7가지가 있다고 한다)
Android Library : 안드로이드 SDK 사용을 위해 포함된 라이브러리
AndroidManifest.xml : 어플리케이션과 구성과 관련된 모든 정보를 담고 있는 파일. 어플리케이션 작성에서 가장 중요한 역할을 하는 파일입니다. 어플리케이션과 Activity의 다양한 설정, 사용권한, 연관된 라이브러리 등 다양한 정보를 포함합니다.
리소스 부분은 application이 빌드될 때 가능한 한 효율적으로 컴파일되어 application package에 포함된다. 리소스는 각각에 대한 레퍼런스를 담고 있는 R 클래스 파일을 생성한다.
이는 디자인 타임 문법 검사의 이점과 더불어 코드에서 리소스를 참조할 수 있도록 해준다.
리소스도 별도로 정리를 해야 할것 같다.
안드로이드 책을 보지 않고 우선 인터넷에 떠돌아 다니는 글을 대충 참고하여 여기까지는 진행 했습니다.
이제 차근차근이 진행을 해봐야 겠죠
안드로이드 펍에서 발표한 자료가 돌아다니길래... 이건 첨부 합니다 ..
근데.. 첨부한 파일이 문제가 될 시에는 삭제해도록 할께용
오늘의 목적은 우선 안드로이드 실행이 주 목적인 셈이니, 달성했다.
이후부터 세부적인 부분부터 파헤쳐 볼 예정이다. 오늘은 여기까지만 진행 할꺼랍니다.
설정
트랙백
댓글
글
처음 시작을 해본다.
그래서 기억을 잊지 않기 위해 , 기재 한다.
1. Java Setting => 난 기본적으로 6.0 버전으로 설치 되어 있었다. 패스~
2. Eclipse Setting => 난 역시 Galileo 가 설치되어 있었다. 패스~
3. 안드로이드 SDK Setting : 없넹 T.T , 아래 링크로 가서 다운받자
http://developer.android.com/sdk/index.html
여기까지는 누구나 쉽게 다운받아서 설치 하면 되는 것이다.
(저장한 곳에 대한 위치는 잘 기억해두시는 것이 좋을 것 입니다.)
Eclipse 설정 부분으로 진행해봅시다.
첫번째 설정은 Help > Install New Software > Work with 옆에 Add 클릭
NAME : Android Plugin
Location : https://dl-ssl.google.com/android/eclipse
이렇게 세팅하고 , 확인, 동의, 패스, 패스 누르면 끝!
(재부팅하자고 조르면, 해준다)
오홋~ Thanks for using the Android SDK!! 라고 팝업이 뜨넹;; Good
뭐 통계를 보낸다고 하는건데.. 좋아 보내주지.
두번째 설정은 Window > Preferences
SDK Location : D:\android-sdk-windows (요건 내가 D폴더에 놓은 위치니까)
그리고 여기서 좀 헤맸다...@.@
Opens the Android SDK and AVD Manager
여기서 AVD는 Andorid Virtual Device (안드로이드 에뮬레이션 이겠죠)
이걸 클릭해서 보면
Installed Packages , Available Packages 탭에 차례차례 가서 Update All을 해야 겠습니다.
다시 Virtual Devices > New 하면 이제 등록할수 있는 단계로 진입
뭐 이렇게 해서.. 완료 되면... Start 함 때려주세요!!
와우~ 나오네요~
다음 장에는 간단히 프로젝트를 생성해서, 프로그램을 만들어 봅시다.
그래서 기억을 잊지 않기 위해 , 기재 한다.
1. Java Setting => 난 기본적으로 6.0 버전으로 설치 되어 있었다. 패스~
2. Eclipse Setting => 난 역시 Galileo 가 설치되어 있었다. 패스~
3. 안드로이드 SDK Setting : 없넹 T.T , 아래 링크로 가서 다운받자
http://developer.android.com/sdk/index.html
여기까지는 누구나 쉽게 다운받아서 설치 하면 되는 것이다.
(저장한 곳에 대한 위치는 잘 기억해두시는 것이 좋을 것 입니다.)
Eclipse 설정 부분으로 진행해봅시다.
첫번째 설정은 Help > Install New Software > Work with 옆에 Add 클릭
NAME : Android Plugin
Location : https://dl-ssl.google.com/android/eclipse
이렇게 세팅하고 , 확인, 동의, 패스, 패스 누르면 끝!
(재부팅하자고 조르면, 해준다)
오홋~ Thanks for using the Android SDK!! 라고 팝업이 뜨넹;; Good
뭐 통계를 보낸다고 하는건데.. 좋아 보내주지.
두번째 설정은 Window > Preferences
SDK Location : D:\android-sdk-windows (요건 내가 D폴더에 놓은 위치니까)
그리고 여기서 좀 헤맸다...@.@
Opens the Android SDK and AVD Manager
여기서 AVD는 Andorid Virtual Device (안드로이드 에뮬레이션 이겠죠)
이걸 클릭해서 보면
Installed Packages , Available Packages 탭에 차례차례 가서 Update All을 해야 겠습니다.
다시 Virtual Devices > New 하면 이제 등록할수 있는 단계로 진입
Name : AVD를 구분할수 있는 이름
Targer : 개발대상으로 하는 플랫폼의버전
SD Card : 32M와 같이 용량을 적어주면 해당SD Card의 이미지가 자동생성
Skin : 개발 대상의 스크린 해상도 선택
Targer : 개발대상으로 하는 플랫폼의버전
SD Card : 32M와 같이 용량을 적어주면 해당SD Card의 이미지가 자동생성
Skin : 개발 대상의 스크린 해상도 선택
뭐 이렇게 해서.. 완료 되면... Start 함 때려주세요!!
와우~ 나오네요~
다음 장에는 간단히 프로젝트를 생성해서, 프로그램을 만들어 봅시다.
android_dev.pdf
RECENT COMMENT