반응형

이전 프로젝트를 AndroidX로 변경하고 그에 따른 아티팩트들과 최신 안드로이드 스튜디오에 맞게 Gradle 등 빌드 환경을 조정해주고 빌드한 것 실행해보니 몇가지 런타임 오류가 발생하였습니다.

 

[오류 #1 ]

 java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/appcompat/R$drawable;

 

먼저 오류 해결하는데 시간이 제일 많이 걸린 androidx/appcompat/R$drawable 클래스를 찾지 못하는 문제는 결론적으로 Realm 쪽 문제였습니다.

AndroidX 적용시 이전 버전의 Realm에서 발생하는 문제

일반적으로 새로운 버전이 나오면 Lint에서 체크해서 하이라이트해서 보여주는데 Realm은 하이라이트가 되어 있지 않아서 이게 문제될 거라고는 생각하지 못했습니다.

 

나중에 문제 재확인차 이전 버전으로 돌리니 그제서야 아래처럼 하이라이트되어서 표시되네요.

build.gradle (project 레벨)에서 realm 플러그인을 7.0.0 버전으로 변경해주면 문제가 해결됩니다.

newer version lint check / realm

[오류 #2]

java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.art/javalib/core-oj.jar)

 

이번에는 메서드를 찾지 못해서 발생한 문제였는데, 오류 메시지에 Lambda 가 보이는 걸로 봐서 JAVA 1.8 지원하지 안하서 발생한 것으로 판단이 되었습니다.

이 런타임오류는 아래 compileOPtions를 build.gradle (app 레벨)에 추가해주면 해결됩니다.

주의할 점

오류 수정한 코드에 해당하는 build.gradle 파일에서 Sync now(또는 File-Sync Project with Gradle Files)를 해준 후에 Build-Clean Project 후 빌드하시면 됩니다. (정리하면 Sync - Clean - Build)

 

이상입니다. 도움이 되셨기를...

반응형

이전에 빌드가 잘 되던 프로젝트 소스에서 갑자기 제목과 같은 오류가 발생해서 주말에 몇 시간을 날렸습니다.

 

근데 원인을 찾고 보니 좀 허탈하였습니다. 요건 나중에 말씀드리고요.

 

먼저 해당 소스는 몇 달 전에 작업하다가 둔 것으로 당시에 빌드가 잘 되었습니다.

 

주말에 그 소스를 가지고 테스트할 일이 있어서 코드 변경 후 빌드했는데 갑자기 오류가 발생한 것입니다.

 

아래처럼 app:mergeDebugResources 빌드 중에 Android resource compilation failed 오류 메시지가 나오면서 빌드가 멈추었습니다.

 

 

일단 리소스쪽은 건드린 것이 없어서 이상하다고 생각하고 있었습니다.

 

코드 외에 그동안 패치된 라이브러리 아티팩트 버전을 업데이트해서 빌드한 것이지만 버전을 롤백해도 현상은 동일했습니다.

 

스택오버플로우에서 제시한 여러 방법을 적용해봐도 해결이 되지 않았습니다.

최후의 방법으로는 안드로이드 스튜디오 등 빌드환경 재설치를 염두에 두고 해결책에 대해서 계속 찾아보았습니다.

- Build 폴더 삭제 후 빌드

- 파일 메뉴의 Invalidate Cashes / Restart 실행

- SDK 버전 변경

- Build Tools 버전 변경

 

소스의 문제가 아니다?

 

이쯤 되니 소스의 문제는 아닌 것 같다는 생각이 들어서 Empty Activity로 새 프로젝트를 만들고 바로 빌드를 했는데 역시나 오류가 발생했습니다.

 

그런데, 갑자기 아래와 같은 팝업이 동시에 발생하였습니다.

 

 

 

지난 주중에 랜섬웨어 대비해서 Bitdefender 설정 변경한 것이 있었는데 이것때문에 aapt2쪽에 동작이 멈춘것 같다는 느낌이 들었습니다. 생각해보니 app:mergeDebugResources 빌드때 오류 메시지를 발생시킨 것도 Aapt2Exception이었습니다. 

 

aapt2가 보안 프로그램에 의해서 차단되었다?

 

랜섬웨어 설정 관련한 옵션에 들어가서 보니 역시나 aapt2의 접근이 차단되어 있었습니다.

  

 

위의 위젯 스위치를 On 해주고 다시 빌드를 해주니 오류없이 빌드가 되었습니다.

 

빌드 오류 해결 :)

 

제가 사용중인 Bitdefender Total Security는 랜섬웨어에 대한 보호하는 기능이 있는데 시스템이 느려질까봐 초기에는 이 기능을 사용하지 않았습니다. 최근에 랜섬웨어 대비하고자 자료 정리하면서 백업도 하고 중요한 폴더들에 대해서는 이 기능도 활성화한 건데 이걸로 인하여 빌드 오류가 발생하였습니다.

 

최초 빌드오류 이슈가 된 프로젝트 소스에는 왜 Bitdefender 팝업 발생하지 않았는지 모르겠지만, 저처럼 혹시 원인을 알 수 없는 Android resource compilation failed 오류 메시지가 발생하였다면 보안 프로그램에 의해 aapt2가 차단된 건 아닌지 점검해보세요.

반응형

며칠 전 Play 스토어에 배포된 앱의 버그 리포트를 검토 및 수정하면서 정리한 내용의 기록입니다.

 

[문제가 된 경로 및 현상]

앱에서 구글 플레이스토어의 해당 앱으로 이동하는 기능 실행 시 FC(Force Close)

 

[문제가 된 코드]

appInfoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + getPackageName()));
startActivity(intent);
}
});

[발생한 오류 및 콜 스택]

Fatal Exception: android.content.ActivityNotFoundException

No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://details?id=packageName }

 

 

[분석]

문제가 된 모델은 GI-I9500_TMMARS인데, 메이커가 TrendMicro라고 나옵니다.

TrendMicro라면 보안업체인데 느낌상 apk 검증을 위한 가상 디바이스일 것 같다는 생각이 들었고, TMMARS로 검색해보니 TrendMicro Mobile App Reputation Service인데 글자 그대로 번역하면 TrendMicro 모바일 앱 평가 서비스입니다.

 

이 서비스를 통하여 apk를 검사하면 가상 디바이스에 apk를 설치한 후에 가상 디바이스 상에서 여러 가지 검증을 하는 것으로 생각됩니다. 그 검증하는 중에 문제가 된 경로로 진입하게 되고 FC 발생한 후 버그 리포팅 된 것으로 판단됩니다.

 

다행히 실사용 기기에서 발생한 문제는 아니었지만 생각해보니 실사용 기기에서도 오류가 발생할 가능성은 있어 보였습니다.

 

발생 원인

 - 앱에서 Play 스토어로 이동하기 위해서 인텐트를 전달하지만, 단말에서 마켓(Play 스토어)이 존재하지 않는 경우에 ActivityNotFoundException의 원인이 됩니다.

 

"Play 스토어"의 경우 시스템 앱인데 존재하지 않는 것이 가능한가?

먼저 "Play 스토어"의 경우 모든 안드로이드 단말에 다 들어가는 것은 아닙니다.

"Play 스토어" 및 구글의 모바일 서비스(GMS: Google Mobile Service)를 이용하려고 하면 구글 승인을 받아야 합니다.

즉, 구글의 승인(CDD[각주:1], CTS[각주:2])을 받지 못하거나 GMS를 제거하고 출시하고자 하는 단말의 경우는 "Play 스토어"가 존재하지 않습니다.

보통 AOSP(Android Open Source Project) 단말인 경우인데, 아마존의 파이어 테블릿과 샤오미 등의 중국 단말들이 많이 존재합니다. 이런 단말에서 앱을 실행하게 되면 ActivityNotFoundException이 발생합니다.

 

[해결책]

일단 AOSP 단말과 같이 "Play 스토어"가 존재하지 않아서 발생하는 ActivityNotFoundException에 대한 try~catch 처리로 오류 회피를 해주면서 인터넷 브라우저로 Play 스토어의 해당 앱으로 연결되도록 처리해줍니다.

 

[개선 코드]

appInfoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + getPackageName()));
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
Intent webIntent = new Intent(Intent.ACTION_VIEW);
webIntent.setData(Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
if (webIntent.resolveActivity(getPackageManager()) != null) {
startActivity(webIntent);
}
}
}
});
여기까지입니다. 읽어주셔서 감사합니다.
  1. Compatibility Definition Document [본문으로]
  2. Compatiblity Test Suite [본문으로]
반응형

안녕하세요. Simple& Happy Dev입니다.

최근에 Google Mobile Ads(AdMob) API 버전이 17.0.0으로 업데이트되었습니다.

기존 15.0.1에서 17.0.0으로 업데이트하려고 하는데 에러가 발생했고, 해결방법에 대해서 적어봅니다.

build.gradle (Module) 파일에 가보면 15.0.1 버전이 하이라이트 되어서 새 버전이 존재한다는 것을 알려주고 있습니다.
(Android Lint의 Obsolete Gradle Dependency Detector가 체크된 경우에 해당)

 

"com.google.android.gms:play-services-ads:17.0.0"으로 수정 후 Sync를 해줍니다.

그런데, 아래와 같이 Sync 에러 메시지가 나왔습니다.

일단 Dependency tree를 확인해봅니다.

Terminal 실행 후 아래와 같이 명령을 입력합니다.

저장된 dependencies.txt 파일을 열어서 보면 dependency 확인이 가능합니다.

Sync 에러 메시지에 나왔던 "com.google.android.gms:play-services-basement"는 com.google.android.gms:play-services-ads 뿐만 아니라 다른 곳에서도 Dependency가 있는 것을 확인할 수 있습니다.

[해결방법]

com.google.android.gms:play-services-ads 외에 Dependency가 확인된 다른 곳의 API 라이브러리도 같이 업데이트를 해줍니다.

보통 구글에서는 Dependency를 고려서 관련된 API 라이브러리를 같이 업데이트해주기 때문에 위의 경우 문제가 된 firebase-core도 하이라이트 되어서 새 버전이 존재한다는 것을 알려주고 있습니다.

이것도 새 버전인 "com.google.firebase:firebase-core:16.0.4"로 수정 후 Sync해주면 Sync error가 발생하지 않습니다.

다시 빌드를 하면 정상적으로 빌드됩니다.

하지만, 앱이 실행되면 AdMob이 초기화될 때 아래와 같이 RuntimeException으로 Force Close 처리됩니다.

로그에 보면 AndroidManifest에 App ID를 추가해야 한다고 되어 있습니다.
(https://developers.google.com/admob/android/quick-start#update_your_androidmanifestxml)

이번에 업데이트된 17.0.0 버전부터는 AdMob UI에서 App ID를 찾을 수 있게 하기 위해서 추가해줘야 합니다.

[해결방법]

사이트에 가보면 아래와 같이 추가해줘야 한다고 나옵니다. 

<from Google AdMob site>

여기서 [ADMOB_APP_ID] 부분에 ca-app-pub-3940256099942544~3347511713 와 같은 형식의 App ID를 넣어줍니다.

※App ID는 "AdMob(https://apps.admob.com/) - 앱 - 앱 설정"에 가면 확인할 수 있습니다.


<manifest>
   
<application>
       
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
       
<meta-data
           
android:name="com.google.android.gms.ads.APPLICATION_ID"
           
android:value="[ADMOB_APP_ID]"/>

   
</application>
</manifest>

위에 추가만 해주시면 앱에서 오류 없이 AdMob이 정상적으로 동작하는 것을 확인하실 수 있습니다.

감사합니다.

조금이나마 도움이 되셨으면 아래 공감 버튼을 눌러주세요.
(If this article helps you, please press the button below.)

반응형

안녕하세요. Simple& Happy Dev입니다.

최신 SDK Tool 몇 개 업데이트하고 업그레이드된 라이브러리 몇 개도 업데이트해서 테스트한 후 다시 이전 상태로 돌리고, 클린 빌드를 했는데, Unresolved dependencies (2 errors) 오류가 발생했습니다.

에러 내용은 아래처럼 Failed to resolve: play-services-basement 라고 나오는데, com.google.android.gms:play-services-basement에 문제가 있어서 발생한 현상입니다.

Gradle window(View - Tool windows - Gradle 또는 Tool Buttons가 활성화 되어 있는 경우 오른편 위의 Gradle 아이콘 클릭)에서 androidDependencies를 실행하면 아래와 같이 오류를 확인할 수 있었습니다.

:app:androidDependencies FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:androidDependencies'.
> Could not resolve all artifacts for configuration ':app:debugCompileClasspath'.
   > Could not find play-services-basement.aar (com.google.android.gms:play-services-basement:15.0.1).
     Searched in the following locations:
         https://jcenter.bintray.com/com/google/android/gms/play-services-basement/15.0.1/play-services-basement-15.0.1.aar

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s

이 오류는 jcenter Repository에서 "com.google.android.gms:play-services-basement:15.0.1@aar"를 못 가져와서 오류를 발생시킨 것입니다.

몇 가지 테스트를 해보니 두 가지 방법으로 해결할 수 있었습니다.

#1 gms 상위버전으로 업데이트  

최근에 릴리즈된 gms의 상위 버전으로 라이브러리 업데이트 후 Sync Project with Gradle Files (툴바의 3번째 버튼 or File 메뉴에서 선택)를 실행하고 빌드하면 오류가 발생하지 않습니다.

여기서 주의하실 점은 androidDependencies를 실행하셔서 "com.google.android.gms:play-services-basement:15.0.1@aar"가 존재하는 라이브러리는 모두 상위 버전으로 업그레이드해 주셔야 합니다. 

#2 Repository 조정

gms 상위 버전에서는 문제없는 것으로 보아서 jcenter Repository의 15.0.1을 가져오지 못하는 것으로 보입니다.

Gradle 빌드시 제일 위의 Repository부터 체크하기 때문에 jcenter Repository를 뒤쪽으로 이동하게 해서 Google의 Maven Repository에서 "com.google.android.gms:play-services-basement:15.0.1@aar"를 가져오게 하면 됩니다.

build.gradle (Project) 파일에서 아래 두 가지중 하나를 선택해서 수정하고 Sync Project with Gradle Files를 실행하고 빌드하면 오류가 발생하지 않습니다.


Gradle 버전 4.1 이상


Gradle 버전 4.1 미만


 

※앱에서 상위 버전으로 업데이트를 하면 문제가 될 경우에만 Repository를 조정하는 방법을 이용하세요.
   될 수 있으면 구글에서 권장하는 jcenter를 처음에 두는 것으로 Repository 순서를 유지하고 "상위 버전으로 업데이트"
   하는 방법을 권장해드립니다.

위와 유사한 문제 발생으로 고생하고 계신다면 한 번 참조하시어 테스트해보시길 바랍니다.

조금이나마 도움이 되셨으면 아래 공감 버튼을 눌러주세요.
(If this article helps you, please press the button below.)

반응형

안녕하세요. Simple& Happy Dev입니다.

새벽에 자기 전에 휴대폰 잠금 해제를 했는데, 인터넷 브라우저에 제가 띄운 적이 없는 화면(광고)이 나왔는데, 저번에도 비슷한 현상이 발생한 기억이 있어서 이번에 꼭 어떤 앱이 웹 브라우저에 광고를 띄우는지 찾아보려고 Bug report 실행해서 로그를 저장해두었습니다.

※Bug report 생성 방법
  설정(Settings)-개발자 옵션(Developer options)-버그 보고서 작성(Submit bug report)-대화형 보고서(Interactive report)누르면 알림창에 진행되고 있는걸 확인하실 수 있습니다.
  진행하는 도중에 문제를 일으킨 화면으로 가서 해당 알림창의 스크린샷(Screenshot)을 누르면 현재 화면이 저장됩니다.
  또 알림창의 세부정보(Details)를 누르면 "버그 제목", "버그 요약"을 입력하실 수 있습니다.
  알림창에서 진행이 완료되면, 알림창 화면을 누르면 공유할 수 있다는 메시지가 나옵니다.
  이메일 또는 클라우드에 저장하면 됩니다.

※개발자 옵션 활성화 방법
   설정(Settings)-휴대전화 정보(About phone)-소프트웨어정보(Software Information)-빌드번호(Build number) 항목을 7번 정도 클릭하면 활성화됩니다.

먼저 광고가 띄워진 인터넷 브라우저를 확인해 보니깐 아래처럼 "현대캐피탈 인증중고차"라는 제목의 광고가 있었습니다.

 


분석의 시작은 그 광고의 주소를 찾아서 로그에 존재하는지 여부였습니다.
로그를 확인해보니, 다행히 아래와 같이 Back stack에 해당 주소의 흔적을 확인하였습니다.

ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)
...
Task id #17929
* TaskRecord{e7f0c35d0 #17929 I=com.sec.android.app.sbrowser/.SBrowserLauncherActivity U=0 StackId=1 sz=1}
...
      intent={act=android.intent.action.VIEW dat=https://googleads.g.doubleclick.net/aclk?sa=l&ai=CZTB1k
...
      &client=ca-app-pub4273715512220857&nx=79
...aU0&adurl=https://mcertifiedcar.hyundaicapital.com/hcsfront/ms/carList%3Futm_source%3Dgoogle%26utm_medium%3Dda%26utm_campaign%3Dinfosearch_bizapp%26utm_content%3Ddiy_brand_03_oct%26_AT%3D023E0F3A010E025FCBE9 flg=0x10400000 cmp=com.sec.android.app.sbrowser/.SBrowserLauncherActivity}
...
    * Hist #0: ActivityRecord{b617a81 u0 com.sec.android.app.sbrowser/.SBrowserLauncherActivity t17929}
            packageName=com.sec.android.app.sbrowser processName=com.sec.android.app.sbrowser
            launchedFromUid=10220 launchedFromPackage=com.lunatouch.eyefilter.pro userId=0
            ...
            Intent { act=android.intent.action.VIEW dat=https://googleads.g.doubleclick.net/aclk?sa=l&ai=CZTB1k
            ...
            adurl=https://mcertifiedcar.hyundaicapital.com/...}

삼성 인터넷 브라우저로 구글 ads 광고가 띄워진 것을 확인할 수 있습니다. 

그리고, launchedFromUid=10220 launchedFromPackage=com.lunatouch.eyefilter.pro 라고 되어있습니다.
이는 UID가 10220인 패키지 이름이 "com.lunatouch.eyefilter.pro"인 앱으로부터 호출되었다는 것을 알 수 있습니다.

그럼, 실제 잠금해제 되면서 해당앱에서 웹 브라우저에 광고를 띄운게 맞는지 이벤트 로그를 살펴봅니다.


폰이 잠금해제가 됩니다. 음, 거의 새벽2시네요. :)

10-17 01:57:52.928 10267  4196  4196 I screen_toggled: 3

잠시 후 아래처럼 브라우저로 구글 ads 광고가 만들어지는 것을 확인할 수 있습니다.

10-17 01:57:53.817  1000  3680  4320 I am_create_activity: [0,193338709,17927,com.lunatouch.eyefilter.pro/.MB,
                                                                                    NULL,NULL,NULL,343965696,com.lunatouch.eyefilter.pro]
10-17 01:57:58.707  1000  3680  6368 I am_create_activity: [0,157296164,17927,com.lunatouch.eyefilter.pro/
                                                                                    com.google.android.gms.ads.AdActivity,NULL,NULL,NULL,
                                                                                    276824064,com.lunatouch.eyefilter.pro]
10-17 01:57:58.815  1000  3680  6368 I am_create_activity: [0,162907047,17928,com.sec.android.app.sbrowser/
                                                                                    .SBrowserLauncherActivity,android.intent.action.VIEW,NULL,
                                                                                    https://googleads.g.doubleclick.net/...,268435456,
                                                                                    com.lunatouch.eyefilter.pro]
10-17 01:57:58.981  1000  3680  5436 I am_create_activity: [0,209693346,17927,com.lunatouch.eyefilter.pro/
                                                                                    com.google.android.gms.ads.AdActivity,
                                                                                    NULL,NULL,NULL,281018368,com.lunatouch.eyefilter.pro]
10-17 01:57:59.364  1000  3680  6368 I am_create_activity: [0,221988778,17929,com.sec.android.app.sbrowser/
                                                                                    .SBrowserLauncherActivity,android.intent.action.VIEW,NULL,
                                                                                    https://googleads.g.doubleclick.net/...,268435456,
                                                                                    com.lunatouch.eyefilter.pro]
10-17 01:57:59.516  1000  3680  5486 I am_create_activity: [0,166871407,17927,com.lunatouch.eyefilter.pro/
                                                                                    com.google.android.gms.ads.AdActivity
                                                                                    ,NULL,NULL,NULL,281018368,com.lunatouch.eyefilter.pro]
10-17 01:57:59.614  1000  3680  4320 I am_create_activity: [0,190937729,17929,com.sec.android.app.sbrowser/
                                                                                    .SBrowserLauncherActivity,android.intent.action.VIEW,NULL,
                                                                                    https://googleads.g.doubleclick.net/...,272629760,
                                                                                    com.lunatouch.eyefilter.pro]

그럼, 여기서 패키지 이름이 com.lunatouch.eyefilter.pro인 앱의 정보를 확인해봅니다.
위에서 Back stack 정보 중에 UID 10220 에서 브라우저를 호출(launchedFromUid=10220)했다고 말씀드렸습니다.
아래에 userId=10220이 com.lunatouch.eyefilter.pro라는 것을 확인할 수 있습니다.
현재 설치된 버전은 2.2.1입니다. 그리고, 앱에서 인터넷 접근 권한도 가지고 있습니다.

  Package [com.lunatouch.eyefilter.pro] (2881ad0):
    userId=10220
    pkg=Package{8fefac9 com.lunatouch.eyefilter.pro}
    codePath=/data/app/com.lunatouch.eyefilter.pro-6hXKiw1cg0E0Xn1IsjvHAw==
    resourcePath=/data/app/com.lunatouch.eyefilter.pro-6hXKiw1cg0E0Xn1IsjvHAw==
    legacyNativeLibraryDir=/data/app/com.lunatouch.eyefilter.pro-6hXKiw1cg0E0Xn1IsjvHAw==/lib
    primaryCpuAbi=null
    secondaryCpuAbi=null
    dexMode=success
    dexTimeStamp=2018-08-18 03:27:07
    versionCode=20180528 minSdk=17 targetSdk=25
    versionName=2.2.1
    splits=[base]
    apkSigningVersion=2
    applicationInfo=ApplicationInfo{2e3581a com.lunatouch.eyefilter.pro}
    flags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
    privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION ]
    dataDir=/data/user/0/com.lunatouch.eyefilter.pro
    supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
    timeStamp=2018-05-29 11:43:46
    firstInstallTime=2017-11-22 08:07:35
    lastUpdateTime=2018-05-29 11:45:43
    installerPackageName=com.android.vending
    signatures=PackageSignatures{57035ce [62abd161]}
    installPermissionsFixed=true installStatus=1
    pkgFlags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
    install permissions:
      android.permission.SYSTEM_ALERT_WINDOW: granted=true
      android.permission.RECEIVE_BOOT_COMPLETED: granted=true
      android.permission.EXPAND_STATUS_BAR: granted=true
      android.permission.GET_TASKS: granted=true
      android.permission.INTERNET: granted=true
      android.permission.FLASHLIGHT: granted=true
      android.permission.ACCESS_NETWORK_STATE: granted=true
      android.permission.DISABLE_KEYGUARD: granted=true
      android.permission.VIBRATE: granted=true
      com.android.launcher.permission.INSTALL_SHORTCUT: granted=true
      android.permission.WAKE_LOCK: granted=true
    User 0: ceDataInode=958824 installed=true hidden=false suspended=false stopped=false notLaunched=false enabled=0 instant=false
      gids=[3003]
      runtime permissions:
        android.permission.CAMERA: granted=true
    User 150: ceDataInode=0 installed=false hidden=false suspended=false stopped=false notLaunched=false enabled=0 instant=false
      gids=[3003]


어떤 앱인지 확인할려면, 패키지 이름을 구글플레이 검색창에 입력하면 바로 나옵니다.

검색해보니 "아이필터 PRO - 블루라이트 차단"이라는 앱이었습니다.

이미 버그가 보고되었는지, 아래와 같은 공지가 올라와 있었습니다.

그런데, 구글 플레이에 올라온 최신 버전이 현재 2.2.1인데, 위의 패키지정보에서 버전(versionName=2.2.1)과 동일한 것으로 보아서 공지와 달리 최신버전에도 계속 문제가 발생하는 것으로 보입니다.

아무래도 이 앱은 재수정하거나 수정사항을 Rollback 해서 새로 apk를 등록해야 할 것 같습니다.


결론

갑자기 이상한 광고가 웹 브라우저에 나온다는 생각이 들면, 귀찮더라도 로그를 떠서 여기서 확인한 것처럼 원인이 되는 앱을 찾을 수 있으실 겁니다.

이상으로 웹 브라우저에 광고 띄우는 앱 찾는 방법에 대해서 알아보았습니다.


조금이나마 도움이 되셨으면 아래 공감 버튼을 눌러주세요.
(If this article helps you, please press the button below.)

 

 

+ Recent posts