Unity3D + Android + Admob : 유니티3D 안드로이드에 애드몹 광고 넣기

2011. 12. 8. 18:17프로그래밍/Unity3D

728x90
반응형
갤럭시S와 개럭시 Tab에서 확인했습니다.
필요조건들
*. Unity3D admob test package 174 kbytes
*. Eclipse 또는 Ant를 이용한 빌드
*. Unity3D 3.4버전대 타 버전도 가능할것 같습니다.
*. GoogleAdMobAdsSdk-4.1.0.jar


기존에는 유니티를 사용하지 않고 그냥 게임을 작성하다 보니 Admob광고를 넣는 일도 그렇고 뭐든지 생각 보단 쉽게 진행했던 기억이 납니다. 하지만 외부의 도구를 사용할 경우에는 많이 자유롭지 않은게 사실입니다. 뭐를 하려해도 SDK에서 지원하는지부터 확인해야 하기 때문입니다. 

다음과 같은 순서로 하시면 됩니다.
1. Unity3D admob test package를 다운받는다 여기서 (또는 구글에서 unity3d admob plugin로 검색을 해보시면 174Kbyte짜리 파일 다운받으시면 됩니다.)
2. Unity3D > Assets > Import Package > Custom Package,, 에서 내려 받은 Package를 선택하시면 됩니다.
3. Unity3D Project창에 Plugin / Android 항목이 새롭게 생성된 모습을 보실수 있습니다.

여기서 Build & Run을 하면 에러가 발생됩니다. 문제는 Unity3D에서 안드로이드로 빌드할때 com.mycompany.android.mygame(예: com.manodio.android.zombiekiller)  의 패키지가 plugin에서 생성된 jar파일의 내용과 일치하지 않기 때문입니다. 따라서 다음과 같이 수정해주시면 됩니다. 
일단 Ant를 사용해서 빌드를 하시거나 또는 Eclipse에서 프로젝트를 만들어서 빌드 하시면 됩니다. 

AdMobTestActivity.Java 소스는 다음과 같습니다.(인터넷에서 돌아다니는 소스와 비슷합니다.)

package com.manodio.android.zombiekiller;

import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

import com.unity3d.player.*; (<- lib 추가해주셔야 합니다. 저의 경우 위치는 C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\bin )

import com.google.ads.AdView;
import com.google.ads.AdSize;
import com.google.ads.AdRequest;

public class AdMobTestActivity extends UnityPlayerActivity
{
protected void onCreate(Bundle savedInstanceState)
{
Log.i("AdMobTest", "onCreate");

// super (UnityPlayerActivity) will use setContentView() ...
super.onCreate(savedInstanceState);

// ... so instead of using setContentView(), we call addContentView() from setupAds()
setupAds();
}
    private void setupAds() 
    {  
        // And this is the same, but done programmatically
        LinearLayout layout = new LinearLayout(this);  
        layout.setOrientation(LinearLayout.VERTICAL);  
        addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));  
  
        AdView adView = new AdView(this, AdSize.BANNER, "a14e200592717 여기는 Admob의 각 광고의 ID입니다.");  
        layout.addView(adView, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
        adView.loadAd(new AdRequest());  
    } 
}

그리고 AndroidManifest.xml파일을 다음과 같이 수정하시면 됩니다.

<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
      package="com.manodio.android.zombiekiller"  
      android:versionCode="1"  
      android:versionName="1.0">  
    <uses-sdk android:minSdkVersion="7" />  
  
    <application android:icon="@drawable/app_icon" 
        android:label="@string/app_name">  
        <activity android:name=".AdMobTestActivity"  
                  android:label="@string/app_name">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
        <activity android:name="com.google.ads.AdActivity"  
              android:configChanges="keyboard|keyboardHidden|orientation"/>  
  </application>  
  <uses-permission android:name="android.permission.INTERNET"/>  
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
  
</manifest>  

 
Admob SDK버전에 따라서 조금 수정해 주셔야 하는 부분이 있습니다. (예 : 
com.google.ads.AdActivity )


컴파일 하시면 admobtestactivity.jar 파일이 생성됩니다. 이 파일을 내 게임 프로젝트 아래 \Assets\Plugins\Android\bin 에 복사해주세요.
그리고 GoogleAdMobAdsSdk-4.1.0.jar  \Assets\Plugins\Android\libs 아래 복사해주세요. 이렇게 하시면고 Build & Run하시면 바로 단말기에 등록되고 실행과 동시에 조금 있으면 보이실 겁니다.

혹시 안되신다면 Eclipse의 DDMS를 통해서 Ads 라고는 tag와 text를 확인해 보시면 어떻게 실행되고 있는지 확인이 가능하실 겁니다.

Galaxy S + Galaxy Tab에서 실행을 해봤습니다.
 
728x90
반응형