자료 출처 : http://ramses8.tistory.com/466


회사앱만 만들다가 개인적으로 하나 올려보고 싶어서 안드로이드 마켓에 올려보고자 했는데 삽질을 좀 하는 바램에 저와 같으신 분이 계시면 도움이 되고자 적게 되었습니다.

우선 안드로이드 앱을 개발했으면 혼자 쓰지않고 마켓에 등록하여 많은 사용자에게 피드백도 받고 많이 써주면 고마워하는게 개발자아닐까 싶습니다.

안드로이드 마켓에 배포하기 그 첫 번째 - apk파일에 서명하기를 시작해보겠습니다.

많은 책들을 보면 DOS(도스)로 하는게 나왔던데요.
전 DOS를 사용하긴 했으나 GUI가 있는 환경이 더 좋드라구요. 뭐 당연한 얘기겠지만서요. ^^;

DOS로 하는건 책에도 많이 나오고 했으니 건 생략하구요.

이클립스를 이용하여 서명하기를 해보겠습니다.

사용자 삽입 이미지

Package Explorer에서 서명하자고 하는 프로젝트에 마우스 오른쪽 버튼을 클릭한 후 Android Tools > Export Signed Application Package 를 선택합니다.(또는 아래의 방법대로 해도 됩니다.)


사용자 삽입 이미지

위의 또 다른 방법 AndroidManifest.xml에서 Manifest탭을 선택하면 Exporting의 탭에서 Use the Export Wizard를 선택합니다.



사용자 삽입 이미지

해당 선택했던 프로젝트가 알아서 선택되어집니다. 다음을 선택


사용자 삽입 이미지

서명파일을 선택하라고 합니다. 있는 경우엔 해당 서명파일을 없다면 관리하고자 하는 폴더로 이동하여 xxx.keystore 라고 적습니다.(서명파일은 관리하기 쉽게 1개를 만들어 여러 어플에 적용하는게 개인적론 좋다고 생각합니다.)


사용자 삽입 이미지

기존에 있으면 Use existing keystore로 새로 만들꺼라면 Create new keystore로 선택합니다. 그리고 패스워드와 패스워드 확인란에 다시 한 번 넣어줍니다.


사용자 삽입 이미지

Alias 에는 서명파일 리스트볼때 나오는 별명입니다.(프로젝트로 따로 관리할께 아니라면 본인의 이름을딴게 좋습니다) 패스워드, 재확인, 그리고 사용유효기간(년)을 넣어줍니다.(유효기간은 25년이상을 지정해줘야 합니다.) 작성자명, 조직 단위명, 조직명, 도시지역명, 지방명 그리고 국가 코드를 넣어줍니다. ※주의 내용에 특수문자를 넣지 마세요. ','(콤마)도 안됩니다.


사용자 삽입 이미지

유효기간이 나타나며 여기서


사용자 삽입 이미지

이와 같은 오류가 나는건 위에서 제가 ','(콤마)를 넣어서 그렇습니다. 콤마를 제거하면 서명파일 지정한 곳에 keystore이 생성되며 지정한




이상 서명에 대해서 간단하게 알아 보았습니다. 만든 서명은 관리 잘하셔야 하구요. 재배포시 항상 필요합니다.

그럼 다음엔 마켓에 개발자 등록하기를 알아 보겠습니다.

수고하셨습니다.


저작자 표시
신고

[Tips]

Eclipse 코드 자동 정렬

Eclipse의 장점 중 하나인 자동 정렬 기능 핫키

- 누르면 자동으로  Tab이 입력되어 정렬이 된다. 보기 매우 편함


[Solution]

Mac OS : Command + Shift + F


Windows OS : Ctrl + Shift + F


저작자 표시
신고
[Tips]

How can I change font size in Eclipse for Java text editors?


[Solutions]


  1. On the eclipse toolbar, select Window ! Preferences
  2. Set the font size (General → Appearance → Colors and Fonts → Java Editor text font).
  3. Save the preferences.


저작자 표시
신고

[Trouble Shooting]

The project cannot be built until the build path errors are resolved. 


[Solution]

The resolution was to force a resave of the selected projects (and their .classpath files):

  1. Open the project properties
  2. Select Java Build Path > Libraries
  3. Add a new, arbitrary library (to be deleted later) > OK
  4. Wait for the workspace to refresh (or force a refresh of the project)
  5. The error(s) will go away
  6. Remove the dummy library

The only other references I could find were to make minor alterations of contents of the .classpath file.

저작자 표시
신고

[trouble shooting]

Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.


[Solution]

To do that, 2 options:

  1. right-click on your project and select "Android Tools -> Fix Project Properties" (if this din't work, try second option)
  2. right-click on your project and select "Properties -> Java Compiler", check "Enable project specific settings" and select 1.5 or 1.6 from "Compiler compliance settings" select box.


저작자 표시
신고

위치설정 셋팅 질문합니다.


댓글
2012.01.05 15:58:17
하이앤
LocationManager locationManager= (LocationManager) getSystemService(LOCATION_SERVICE); 
 
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){  
Intent callGPSSettingIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity
(callGPSSettingIntent);    
}
else
{
Toast.makeText(MyRealSettings.this, "Location services in disable mode", Toast.LENGTH_LONG).show();
}

정에약한마음

흠 ...


로케이션가 널포인트뜨는 이유를알았슴돠.


각단말기마다 위치정보를 수집할것인지 안할것인지


설정이안되있으면 로케이션 널포인트가 무조건 뜬다는건대 ...


강제적으로가아닌 위치정보 수집을하게 그창을띄워주는방법이 없을까요 ??



신고

펌 : http://android.elex.pe.kr/dev-guide/admob

애드몹 붙이는 방법


1. 프로젝트에 GoogleAdMobAdsSdk-4.3.1.jar 파일을 추가한다. (라이브러리 파일은 현재 페이지 맨 아래에 링크된 주소를 따라간다.)

Properties > Java Build Path > Libraries > Add External JARs

2. 메니페스트 파일에 다음과 같이 액티비티를 추가한다. 최신 버전의 라이브러리는 targetSDK를 13 이상으로 설정해야 한다.

<activity android:name="com.google.ads.AdActivity"
         
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

3. 메니페스트 파일에 다음과 같이 퍼미션을 추가한다.

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

4. 다음을 참조하여 레이아웃을 꾸민다. (유닛 아이디는 자신의 광고 아이디로 변경해야 한다.)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
             
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
             
android:orientation="vertical"
             
android:layout_width="fill_parent"
             
android:layout_height="fill_parent">
 
<com.google.ads.AdView android:id="@+id/adView"
                         
android:layout_width="wrap_content"
                         
android:layout_height="wrap_content"
                         
ads:adUnitId="MY_AD_UNIT_ID"
                         
ads:adSize="BANNER"
                         
ads:testDevices="TEST_EMULATOR,e78b974e6ab65648b52951e69edcb571"
                         
ads:loadAdOnCreate="true"/>
</LinearLayout>

5. 액티비티의 onCreate()에서 다음과 같이 호출한다.

 AdView adView = (AdView)this.findViewById(R.id.adView);
 adView
.loadAd(new AdRequest());


또는


4. 액티비티에 AdView를 private으로 선언하고, 생성한 후 레이아웃에 뷰를 추가한다. (유닛 아이디는 자신의 광고 아이디로 변경해야 한다.)

@Override
 
public void onCreate(Bundle savedInstanceState) {
   
super.onCreate(savedInstanceState);
    setContentView
(R.layout.main);

   
// Create the adView
    adView
= new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID);

   
// Lookup your LinearLayout assuming it’s been given
   
// the attribute android:id="@+id/mainLayout"
   
LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);

   
// Add the adView to it
    layout
.addView(adView);

   
// Initiate a generic request to load it with an ad
    adView
.loadAd(new AdRequest());
 
}

 
@Override
 
public void onDestroy() {
    adView
.destroy();
   
super.onDestroy();
 
}


※ 배너 크기 : 화면 크기가 작으면 광고가 안보이므로 주의할 것.

Size (WxH)DescriptionAvailabilityAdSize Constant
320x50 Standard banner Phones and Tablets BANNER
300x250 IAB Medium Rectangle Tablets IAB_MRECT
468x60 IAB Full-Size Banner Tablets IAB_BANNER
728x90 IAB Leaderboard Tablets IAB_LEADERBOARD


※ 새로운 광고를 받아 오는 주기는 애드옵 계정에서 설정할 수 있으며 프로그램 내에서 처리하려면 새로운 AdRequest를 생성하고 loadAd()하면 된다.


※ AdRequest 객체는 테스트용 장치를 추가하거나 (테스트 장치는 테스트하려는 장치의 ID를 입력하여야 함.)

AdRequest request = new AdRequest();
request
.addTestDevice(AdRequest.TEST_EMULATOR);
request
.addTestDevice("E83D20734F72FB3108F104ABC0FFC738");

광고 대상을 특정하는데 사용될 수 있다.

AdRequest request = new AdRequest();
request
.setGender(AdRequest.Gender.FEMALE);
request
.setLocation(location);
request
.setBirthday("19850101");


※ AdListener 인터페이스를 구현하면 각각의 상태에 따른 처리를 할 수 있다.

public interface AdListener {
 
public void onReceiveAd(Ad ad);
 
public void onFailedToReceiveAd(Ad ad, AdRequest.ErrorCode error);
 
public void onPresentScreen(Ad ad);
 
public void onDismissScreen(Ad ad);
 
public void onLeaveApplication(Ad ad);
}
신고
Window > Preferences > General > Appearance > Color and Fonts
신고
http://graph.facebook.com/USERID/picture

로 가져올 수 있고..

type 파라미터로 small, normal, large, square 가 있네요.


신고

펌 : http://www.androidpub.com/index.php?mid=android_dev_qna&page=16&document_srl=1962338


댓글
2012.02.01 14:17:03
Sinonome
(추천: 1 / 0)

아이템 레이아웃(RelativeLayout이신듯) background를 xml drawable로 하시고

그 drawable을 셀렉터 이용해서

<?xml version="1.0" encoding="utf-8"?>
<item android:state_focused="true"
android:state_pressed="false"
android:drawable="@color/clicked" />
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="@color/clicked" />
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@color/clicked" />
<item
android:drawable="@color/unclicked"/>
</selector>

이런 식으로 설정해주시면 될 것 같네요

댓글
2012.02.01 17:20:01
@didtmdtwt

감사합니다.

매우 도움이 되었습니다.


리스트뷰 색깔을 바꾸고 싶습니다.

@didtmdtwt

까만색 디폴트 화면에 클릭하면 색깔이 바뀌는 기본 리스트 뷰 의 color 를,


마치 싸이월드의 리스트 뷰 처럼 바꾸고 싶은데 이와 관련된 조언이나 링크를 부탁드립니다. ㅠㅠ


device-2012-02-01-124918.png


device-2012-02-01-124847.png 







신고

+ Recent posts

티스토리 툴바