Adfit SDK 관련 질문입니다

다음 Adift 광고 플랫폼 관련된 질문입니다.

해당 질문을 다음에 하지 않고, 카카오에 하는 이유는 git 사이트에 아래와 같이 명시를 하고 있으며.
(“이 문서는 Kakao 신디케이션 제휴 당사자에 한해 제공되는 자료로 가이드 라인을 포함한 모든 자료의 지적재산권은 주식회사 카카오가 보유합니다.”)

다음에 문의를 해봐도 그냥 지원하지 않는다고만 하고…
답답한 마음에 직접 개발자분의 조언을 듣고 싶어서 글을 남깁니다.

현재 Adift 광고 플랫폼 SDK는 2.4.0 버전 이후부터 aar, 즉 안드로이드 스튜디오용으로만 배포를 하고 있습니다.
하지만, 이런 저런 사유로 인해 이클립스에서 안드로이드 스튜디오로 넘어가지 못하는 개발자들이 있는것으로 압니다.
그래서 보편적으로 aar로 파일을 zip으로 변환, 압축해제하여 이클립스에서 import 후, 라이브러리화 하여 사용하고 있습니다.

그런데 Adfit에서 제공되는 aar만 유독… 이클립스에서 라이브러리화하여 사용하면 특정 부분에서 정상적으로 작동하지 않습니다.
import도 잘되고, 광고 호출, 노출, 클릭(리스너까지 정상 작동) 도 잘 됩니다만.

광고를 클릭했을때 해당 Activity가 로드되지 않는것 같습니다.
보통 안드로이드 외부브라우저를 띄우던지, 아니면 내부적으로 구현된 Activity를 띄우던가 해야하는데,
아무 반응이 없습니다.

저는 이 부분을 해결하려고 일주일째… aar을 압축해제하고 import하고… 구글 검색도 하고 이것저것 해봤지만
여전히 해결되지 않고 있습니다.

저는 Adfit에 공식적인 이클립스 관련 가이드문서와 jar를 요구하는것이 아닙니다.
단지, 위에서 쓴 보편적인 방법으로 이클립스에서 사용했을때 정상적으로 작동되게만 좀 해주셨으면 하는게 저의 바람입니다.

또한, 해당 내용과 관련하여.
이클립스로 이식에 성공하신 개발자분들이 계시다면 조언 부탁드리겠습니다.

p.s
혹시 카카오측에서 개발하실때 강제적으로 막은 부분이라면,
부디 … 이 삽질로부터 벗어날 수 있도록 강제적으로 막았다고 댓글 좀 남겨주시면 감사하겠습니다.

다음 쪽에 문의를 하셨을 때 지원하지 않는다는 공식적인 답변을 받으신 건가요? 우선 제가 담당자가 아니고, 또 제 의견에 틀린 부분이 있을수도 있지만, 안드로이드용 SDK를 관리하는 입장에서 의견을 말씀드려 볼게요.

카카오 안드로이드 SDK도 올해에 1.1.36 버전부터는 이클립스용 라이브러리 제공을 중단하여서 gradle에서 aar 파일 형식으로만 import 가능합니다. 이런 결정을 하게 된 이유는 SDK 개발 상의 불편함도 있지만 gradle에서 제공하는 방식과 너무 상이한 방식으로 밖에 SDK 제공이 되지 않는 다는 점 떄문이에요. 아시겠지만 aar 파일 형식은 jar에 리소스 파일들과 manifest 파일들이 포함되어 있어요. 기본적인 자바 코드가 아닌 안드로이드 플랫폼 API를 사용하고 UI 요소가 포함되어 있는 SDK로써는 필수적인 요소들이죠. 이러한 부분을 이클립스용 라이브러리로 제공하기 위해 다음과 같은 gradle task를 생성하고 있었어요.

task copySourceForEclipse << {
    copy {
        from  'kakaolink/src/main/java'
        from  'util/src/main/java'
        from  'kakaotalk/src/main/java'
        from  'kakaostory/src/main/java'
        from  'push/src/main/java'
        from  'usermgmt/src/main/java'
        from  'auth/src/main/java'
        from  'network/src/main/java'
        from  'friends/src/main/java'
        from  'storage/src/main/java'
        from  's2/src/main/java'
        from  'kakaonavi/src/main/java'
        into "$project.DIST_ECLIPSE_SOURCE_DIR/src"

        filter { String line ->
            line.replaceAll("import com.kakao.\\D+\\.R;", "import com.kakao.android.sdk.R;")
        }
        filter { String line ->
            line.replaceAll("return convert\\(BuildConfig.DEPLOY_PHASE\\);", "return Release;")
        }
        filter { String line ->
            line.replaceAll("boolean showLogs = BuildConfig.SHOW_LOGS;", "boolean showLogs = false;")
        }
        filter { String line ->
            line.replaceAll("import com.kakao.util.BuildConfig;", "//import com.kakao.util.BuildConfig;")
        }
        filter { String line ->
            line.replaceAll("BuildConfig.SDK_VERSION", "\"$project.version\"")
        }
    }

    copy {
        from  'util/src/main/res'
        from  'auth/src/main/res'
        from  'kakaolink/src/main/res'
        from  'kakaonavi/src/main/res'
        from  'usermgmt/src/main/res'
        into "$project.DIST_ECLIPSE_SOURCE_DIR/res"
    }

    copy {
        from  'eclipse_properties'
        into project.DIST_ECLIPSE_SOURCE_DIR
    }

    copy {
        from 'NOTICE.md'
        into "$project.DIST_ECLIPSE_SOURCE_DIR"
    }

Gradle을 사용하면서 모듈화도 잘 해놓고 했지만 eclipse용으로 하나의 통합된 SDK로 제공되고 있었어요. 모듈화의 장점 자체가 아예 없었죠. 모듈별로 제공하더라도 의존성 관리 측면에서 gradle 처럼 자동으로 해주는게 아니기 때문에 개별 모듈을 수동으로 다 import하고 버전 충돌들도 수동으로 해야하는 점들의 문제가 있죠. 이러한 불편함을 겪으면서 안타깝지만 eclipse용 소스 다운로드 제공을 중단하게 되었는데요. 가끔가다 eclipse import를 원하시는 분들께는 아래와 같이 가이드를 드리고 있어요.

https://devtalk.kakao.com/t/sdk-import/32006

위 링크에 보시면 aar 라이브러리 내 jar와 resource 그리고 manifest 파일을 어떻게 import할 수 있는지 대강의 가이드가 나와 있습니다. 이미 위와 같은 시도를 다 해보신 후라면… 액티비티가 왜 뜨지 않는지, 로그캣에 찍히는 에러로그가 있는지 등등을 먼저 살펴주시면 어떨까 싶어요.

위 글에서 이런 저런 사유로 인해서 넘어가지 못하고 있다고 말씀하셨는데, 저는 eclipse로 안드로이드 개발을 해보지 않아서 그런지 어떠한 사유가 있을 수 있을까요? 안드로이드 스튜디오에서 gradle build를 사용하지 않는다면 외부 라이브러리나 SDK를 사용하는데 있어서 점점 더 불편함이 있지 않을까 하는 우려가 있거든요.

1개의 좋아요

답변 감사드립니다.
다음의 공식입장은 이클립스는 지원하지 않는다고 합니다. Adfit 공지사항에도 작성된 내용이기도 합니다.
알려주신 링크를 통해 많은 시도를 해봤습니다. 로그캣에서 오류나 에러라도 나오면 뭔가 그것을 통해 해결의 실마리라도 잡으면 좋겠지만, 그에 관련된 에러메시지가 나오지 않습니다. 이 부분이 제일 답답합니다.
그리고, 제가 이클립스에서 안드로이드 스튜디오로 넘어가지 못하는 이유는…
오래전부터 이클립스에서 개발/업데이트되고 있던 프로젝트를 안드로이드 스튜디오로 마이그레이션을 했습니다.
소유하고 있던 몇대의 기기에서 테스트를 진행하고, 아무 오류없이 작동하는것까지 확인하고 구글플레이에 업데이트 버전을 올렸지만, 결과가 좋지 않았습니다. 안드로이드 기기 특성상 제조사, OS버전 등등 파편화가 너무 심하여… 잘 작동하는 사용자들이 있는 반면에 애초에 어플이 실행되지도 않은 사용자들이 일부 발견되었습니다. 그 사건 이후로 오래전에 개발된 프로젝트는 그냥 안전하게 이클립스에서 업데이트를 진행하고, 그 이후로는 안드로이드 스튜디오로 개발을 진행하고 있습니다.

@anon81369599 담당자 대신 답변해주셔서 감사합니다.
@jnukhj
문의주신 상황을 재현해 볼 수 있는 여건이 되지 않아 정확한 문제 파악에 어려움을 겪고 있습니다.
문제 상황을 볼 때, 광고 로딩까지 완료된 후, 클릭 동작이 되지 않은 것으로 보아 AndroidManifest.xml 파일에 activity 가 추가되지 않은 것으로 생각됩니다. 최신 3.0v 탑재했을 경우, 아래 코드를 추가해보시기 바랍니다.
p.s. 강제로 실행 되지 않도록 구현되어 있는 것은 아닙니다. ^^;;;

    <activity
        android:name="com.kakao.adfit.common.inappbrowser.activity.IABActivity"
        android:configChanges="orientation|screenSize|keyboardHidden"
        android:launchMode="singleTop"
        android:theme="@style/Theme.NoTitleBar"
        android:windowSoftInputMode="adjustResize" >
        <intent-filter tools:ignore="GoogleAppIndexingDeepLinkError" >
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>
    </activity>

담당자님 안녕하세요.
작성해주신 코드는 aar파일에 들어있는 내용과 동일하 내용이며, 제공해주신 내용을 그대로 사용하고 있습니다.
참고로 제가 시도해본 방법은 아래와 같습니다.

  1. aar 파일을 이클립스에 import 시키기 위해 아래 링크에 안내된 방법 이용함.
    https://www.android-tech.io/2016/07/16/안드로이드를-다루는-기술-개발노트-aar-파일을-가지/

최종적으로 이클립스에 import 되니, 프로젝트명이 IBActivity 등록됨.

  1. targetSdkVersion이 달라서 그런 경우가 있다는 글을 봐서 targetSdkVersion도 19 ~ 25까지 변경해보았음.
    (Project Build Target도 동일하게 변경)

  2. 광고 호출 > 노출 > 클릭까지는 정상작동하나, 액티비티는 로드되지 않음.

  3. 로그캣에 어떤 에러나 오류가 있는지 보려고 했지만, 오류메시지는 발생하지 않음.

담당자님께서 일부러 막은게 아니라고 답변을 주시니 답답한 마음이 많이 사라졌습니다.
일단 된다는거니깐요. ㅎㅎ

어찌됐든 안되는건 아니니깐 계속 해보겠습니다.

답변 감사드립니다.

@jnukhj 시 onAdClicked 호출이 발생하는지 확인해 주실 수 있나요?

네. 배너 광고 클릭시 해당 메소드까지는 정상적으로 작동됩니다.

바쁜 업무중에 죄송합니다.
일단 광고 화면 (IBActivity)까지 나오는것을 확인했습니다만, 이게 정확히 해결된것인지 의문점이 듭니다.

혹시나 해서 광고를 적용할 프로젝트의 AndroidManifest.xm에
aar에 기본적으로 작성된 IBActivity 부분을 추가로 작성해보니 드디어 광고 화면이 나옵니다.

근데 원래 광고를 적용할 프로젝트에 저 부분을 작성해주는것이 맞는것인지…?
특정 라이브러리를 가져다 쓸때는, 거의 인터페이스에서 제공되는 메소드를 사용할뿐, 해당 라이브러리의 무언가를 추가적으로 작성할 일은 없었는데,
그와 다르게 적용할 프로젝트에 별도로 뭘 작성해주는적은 처음이라 이게 맞는건지 궁금합니다.

네, 클릭시 광고주 사이트로 연결되면 됩니다.

일부 광고 sdk 에서 전면광고용 activity 를 추가했던 경우가 있었던 것으로 기억됩니다만,…
aar 이 나온 뒤로 그럴 필요가 없어졌습니다.
eclipse 로 개발하시면 앞으로 계속 유사한 작업이 필요하실 것 같네요.

추가로 아래 라이브러리도 추가해 두시는 것이 좋습니다. ^^;

    compile 'com.google.android.gms:play-services-base:+'