'Admob'에 해당되는 글 2건

  1. 2014.08.14 세로 모드에서 사라지는 애드몹
  2. 2014.08.02 안드로이드 앱에 AdMob 광고 달기
AdMob2014. 8. 14. 19:16

세로모드에서 사라지는 광고

세로모드에서 사라지는 구글 광고

세로모드에서 사라지는 구글 애드몹

세로모드에서 사라지는 구글 AddMob

세로모드에서 사라지는 Google AddMob

portrait에서 사라지는 Google AddMob

AdMob disappear in  portrait mode

AdMob disappear in  portrait orientation

Google AdMob disappear in portrait orientation



애드몹을 어플리케이션에 띄우려고 약 2일 보냈습니다. 이렇게 저렇게 해도 애드몹(AdMob)이 나오지 않더군요. 처음 시작할 때 아래 구글 애드몹 개발자 사이트(Google Developers)에 있는 코드를 따라 쳤는데 광고는 보이지 않았습니다. 


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

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



인터넷 사이트와 블로그를 뒤져보아도 거의 모두가 위와 같습니다. 간단하게 위와 같이 하면 애드몹이 뜬다고만 나옵니다. 2일간 같은 일을 조금씩 다르게 여러 가지로 반복했습니다. 결과가 약간 달라졌습니다. 광고가 가로모드에서만 뜨더군요.

구글 플레이 서비스(Google Play service)에 있는 샘플 프로젝트 GoogleAdsSampleActivity를 들여다 보아도 광고가 세로모드에서 작동하지 않았습니다.



이클립스가 생성한 activity_tst.xml 부분은 이렇습니다.

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mainLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="hyun.esim.esimlight.ESImLightActivity" >

위 코드는 이클립스에서 만들어주는 가장 간단한 안드로이드 프로젝트입니다. 아무것도 추가 하지 않은 액티비트(Activity) 하나만 가지는 것입니다. 이것이 눈으로는 차이가 없어 보이나 제거해도 큰 차이가 없는 줄(Line)이 있었습니다.



패딩(padding)에 관련한 부분을 지원주면 광고가 이상없이 작동합니다.


    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"




영문 구글링을 하면서 발견한 문구가 해결책이었습니다. 

AdMob AdView only appearing in landscape orientation

you should check if the parent container is padded


구글 광고를 자작 앱에 올리려고 2일 간 이것 저것 건드리면서 몇 가지를 수확한 가치있는 시간이었습니다.

 가로모드에서 뜨는 애드몹| 가로모드에서만 보이는 광고| Landscape에서 보이는 광고| Landscape에서 보이는 애드몹

Landscape에서 보이는 AddMob| AddMob shows up in Landscape orientation |AddMob shows up in Landscape mode

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 코드버무려