카테고리 없음2014. 8. 4. 13:07
구글 애드몹 광고를 화면에 달고 컴파일을 하고 실행할 때 기대와는 다른 결과를 겪는다. 많은 개발자들과 같이 나도 시간 지나고 한 참이 되면 똑같은 일이 반복되고 있더라는 경험이다. 잠깐 정리를 하고 넘어간다.

AdMob 배너광고를 추가할 때 확인해야할 내용:

1-a. 애드몹 부모 레이아웃에서 왼쪽 오른쪽 패딩이 없어야한다.
1-b. 위 항목의 padding는 0dp로 설정해 두어도 AdMob banner를 볼 수 없다.

2-a. 세로로 뷰 두 개를 배치할 때
2-b. 같은 부모 레이어 아래에 속한 다른 뷰가 화면을 꽉 채우려면
2-c. 그 뷰 속성에 layout_weight="숫자"로 두고
2-b. 높이를 layout_height="0dp"로 둔다.
2-c. 애드몹 베너 layout_height="wrap_content"로
2-d. 두면 페어런트 뷰를 다른 뷰와 갭 없이 디스플레이된다.


Posted by 코드버무려
Android 안드로이드2014. 8. 2. 13:36

팀원과 진행했던 프로젝트를 넘겨받아 추가 코딩을 할 예정이었다. 컴파일 하려고 프로젝트 import를 시도 했다. 임포트를 했으나 에러가 떠 있다. res폴더와 일부 소스에 빨간색 네모 x표시가 뜬 것이다.


라이브러리 연결이 필요한 시점이다.

본격적으로 진행하기 전에 반드시 한는 것이 있다. 이전 개발툴과 하위 호환을 위해서 기계적으로 연결시켜주는 android-support-v7-appcompat 라이브러리를 추가하는 것이다. 해당 프로젝트에서 오른쪽 버튼을 클리하고 properties > Android > 오른쪽 부분 Library > Add에서 android-support-v7-appcompat를 추가 한다.


평소와는 다른 이상한 일이 발생했다.

gen\project name(프로젝트 명)\R.java가 사라져버리고 프로젝트 전반에 새로운 빨간X 표시가 떴다. 오류를 확인하면 R.java를 참조하는 코드에서 나온다. 프로젝트를 지우고 다시 반복해도 똑같이 일어났다. 그래서 프로젝트를 임포드하고 android-support-v7-appcompat 라이브러리를 추가하기 전에 위 폴더로 가서 R.java를 R-copy.java로 복사해 놓았다. R.java가 사라진 시점에 R-copy.java를 원래 파일이름으로 변경해 주었던니 빨간X 표시느 사라졌다.


현재까지 구글 광고를 달기위한 직접적인 작업은 시작도 못했다. 대략 2시간이 지나가는 시점이다.


다음으로 안드로이드 개발툴을 설치한 lib폴더에서 google-play-services.jar가 있다. 내가 설치한 폴더는 

adt-bundle-windows-x86-20140702\sdk\extras\google\google_play_services\libproject\google-play-services_lib\libs 와 같다.


마지막으로 구글 광고 AdMob을 프로젝트에 추가해 보자. 

해당 프로젝트에서 오른쪽 버튼을 클리하고 properties > Java Build Path > Libraries > Add External JARs... 를 쭉 따락 간다. 위 문단에서 알려준 구글 안드로이드 개발툴 마지막 폴더 libs에서 google-play-services.jar 파일을 발견할 수 있다. 선택해주면 된다.

google-play-services.jar 라이브러리 파일을 이클립스에서 구글 광고 AdMob를 추가하려는 프로젝트의 libs 폴더에 끌어 놓기 한다.


안드로이드매니패스트 AndroidManifest.xml 파일에 코드 몇 줄이 더 필요하다.

  1. application 엘리먼트 하위에 아래 코드를 추가한다. 
    • <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
    • <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
  2. manifest 엘리먼트 
    • <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    • <uses-permission android:name="android.permission.INTERNET"/>


여기까지 하고도 에러가 남아있다. 다른 에러를 잡으면 다른 에러가 생기는 중이다. 에러 있는 폴더를 확인하니 안드로이드메너페스트 AndroidManifest xml 파일이다. 막 새로 추가한 코드에서 나오는 오류이다. 이클립스가 "@integer/google_play_services_version"에 문제가 있다고 빨간물결무늬 밑줄로 쫙 그어서 알려준다. 

Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version') 라고 코드 좌측에 떠있는 빨간 동그라미를 클릭하면 에러메시지를 확인할 수 있다.


수 많은 구글링과 테스트를 끝으로 위에서 행했던 작업이 문제였다.

해당 프로젝트에서 오른쪽 버튼을 클리하고 properties > Java Build Path > Libraries > Add External JARs... 를 쭉 따락 간다. 위 문단에서 알려준 구글 안드로이드 개발툴 마지막 폴더 libs에서 google-play-services.jar 파일을 발견할 수 있다. 선택해주면 된다.
google-play-services.jar 라이브러리 파일을 이클립스에서 구글 광고 AdMob를 추가하려는 프로젝트의 libs 폴더에 끌어 놓기 한다.  ]

와 같이 하면 안된다. File>Import에서 C:\Android\adt-bundle-windows-x86-20140702\sdk\extras\google\google_play_services\libproject\google-play-services_lib 를 잡아주면 된다. 좌측 프로젝트 트리에 google-play-services_lib 프로젝트를 볼 수 있다.

구글 애드몹을 달려는 자신 프로젝트 오른족 클릭하고 properties > Android > 오른쪽 부분 Library > Add에서 google-play-services_lib를 선택하면 모든 적색x표시가 사라진다.

마지막으로 대망의 컴파일을 하자. 



약간 시간이 흐르고 .... 또 다른 에러가 발 생한다. 소스에는 어떤 에러 표시도 볼 수 없고 그렇다고 앱이 실행도 되지 않는다.

Your project contains error(s), please fix them before running your application. 

여기까지 대략 4시간 이상 시간을 사용했다.



참고 사이트

https://developers.google.com/mobile-ads-sdk/docs/

Posted by 코드버무려