안드로이드 스튜디오 OPENGL ES를 사용해서 앱을 만들고 Admob을 붙일 때는 Activity와 혼합으로 적용시켜야 합니다. 구글 OPENGL ES 예제로 하면 Admob를 붙이지 못합니다.
참고로 안드로이드 스튜디오 OPENGL ES 공식 설명 및 예제
https://developer.android.com/develop/ui/views/graphics/opengl/environment
기본 Activity 나 Surface 사용시 Admob 붙이는 예제는 아래 포스트를 참고하세요
또는 Admob를 등록 하는 방법도 아래 포스트를 참고하세요
https://dxkor2.tistory.com/216
build.gradle 에서
allprojects {
repositories {
google()
}
}
dependencies {
implementation 'com.google.android.gms:play-services-ads:19.5.0'
build.gradle에 위와 같이 추가합니다.
implementation 'com.google.android.gms:play-services-ads:19.5.0'
아래는 2023.9 월 최선 버전입니다.(sdk 33)
implementation 'com.google.android.gms:play-services-ads:22.3.0'
새로 나온 버전은 아래에서 확인하세요
developers.google.com/admob/android/quick-start#update_your_androidmanifestxml
AndroidManifest.xml 에서
<uses-permission android:name="android.permission.INTERNET"/>
인터넷 허가 와
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
위 소스 그림에선 빼먹었지만 2023.8.31 SDK33 이후로 빌드 할 경우 광고를 붙이기 위해선 위 구문도 같이 추가되어야 합니다.
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
AndroidManifest.xml 에 위와 같이 추가해 줍니다.
ca-app-pub-3940256099942544~3347511713
이 부분은 앱을 출시할 시 자신의 Admob ID로 바꾸어 줘야 합니다.
OPENGL ES 와 ACTIVITY를 혼합할 layout 을 만듭니다.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation = "vertical"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent">
<android.opengl.GLSurfaceView
android:id="@+id/glSurfaceView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
app:layout_constraintTop_toTopOf="parent"
ads:adSize="BANNER"
app:adUnitId="ca-app-pub-/">
</com.google.android.gms.ads.AdView>
</FrameLayout>
위 처럼 FrameLayout으로 만듭니다.
위에서 볼것은
android:id="@+id/glSurfaceView"
GlSurface 출력 부분 ID
android:id="@+id/adView3"
Admob 출력 부분 ID
app:adUnitId="ca-app-pub-/">
"ca-app-pub-/" 본인의 Admob 의 Id를 넣어야 합니다.
MainActivity 에서...
1 OPENGL SURFACE를 선언합니다.
2 애드몹 View를 선언합니다.
3 애드몹을 출력하기 위해서 초기에 init 을 호출 해 줍니다.
class MainActivity : AppCompatActivity() {
private lateinit var glView: GLSurfaceView
private var mAdView: AdView?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
MobileAds.initialize(this) //애드몹 초기화?!
1 Open gl surface와 애드몹 출력을 위한 activity를 합성하는 부분
2 애드몹 광고를 실제 출력 시키는 부분
3 게임 메인 스레드 부분
참고로 게임 스레드는 onCreate에 내부에 만들면 됩니다.
스레드에서 Opengl 랜더를 호출하기 위해선 아래와 같이 호출하면 됩니다.(위와 같이 변수를 설정했을 경우)
glView.requestRender()
'프로그램잉_기타 > 안드로이드 앱 출시 관련' 카테고리의 다른 글
안드로이드 스튜디오 targetSdkVersion 30 > 31 , 33 변경하기 (0) | 2023.09.01 |
---|---|
구글 플레이 스토어 출시용으로 앱 서명하기 및 Release 컴파일 하기 * aab (0) | 2021.11.07 |
안드로이드 스튜디오 구글 플레이 스토어 업데이트 하기 (0) | 2021.05.02 |
구글 플레이스토어 개인정보 처리 방침 작성하기 (0) | 2021.05.01 |
구글 플레이 스토어 출시용으로 앱 서명하기 및 Release 컴파일 하기 *.apk (0) | 2021.04.26 |