앱이 설치되지 않았습니다 삭제 - aeb-i seolchidoeji anh-assseubnida sagje

안드로이드 스튜디오에서 앱의 불편함을 개선 후 테스트 폰을 USB로 연결 후 앱을 테스트하기 위해 빌드 후 앱을 실행하였다. 보통의 경우 앱이 설치되면서 앱이 실행되었지만, 어찌된 영문인지 앱 아이콘만 생성 된 후 앱이 실행되지 않았다. 앱 아이콘을 클릭하면 "앱이 설치되지 않았습니다." 라는 토스트 메세지창이 노출 되었다.

오류 전체 내용은 다음과 같다.

BaseDraggingActivity: Unable to launch. tag=AppInfo( id=-1 type=APP container=prediction targetComponent=ComponentInfo{com.test.bell/com.test.bell.MainActivity} screen=-1 cell(-1,-1) span(1,1) minSpan(1,1) rank=0 user=UserHandle{0} title=스마트 componentName=ComponentInfo{com.test.bell/com.test.bell.MainActivity}) intent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.test.bell/.MainActivity bnds=[843,252][1045,505] } java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.test.bell/.MainActivity bnds=[843,252][1045,505] } from ProcessRecord{d3ee983 2372:com.google.android.apps.nexuslauncher/u0a34} (pid=2372, uid=10034) not exported from uid 10977 at android.os.Parcel.createExceptionOrNull(Parcel.java:2373) at android.os.Parcel.createException(Parcel.java:2357) at android.os.Parcel.readException(Parcel.java:2340) at android.os.Parcel.readException(Parcel.java:2282) at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:3696) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1723) at android.app.Activity.startActivityForResult(Activity.java:5320) at com.android.launcher3.Launcher.startActivityForResult(SourceFile:2) at com.android.launcher3.BaseQuickstepLauncher.startActivityForResult(SourceFile:6) at android.app.Activity.startActivity(Activity.java:5660) at com.android.launcher3.BaseDraggingActivity.startActivitySafely(SourceFile:15) at com.android.launcher3.Launcher.startActivitySafely(SourceFile:7) at com.android.launcher3.uioverrides.QuickstepLauncher.startActivitySafely(SourceFile:3) at com.android.launcher3.touch.ItemClickHandler.startAppShortcutOrInfoActivity(SourceFile:15) at c.a.a.Y0.e.onClick(SourceFile:20) at android.view.View.performClick(View.java:7448) at android.view.View.performClickInternal(View.java:7425) at android.view.View.access$3600(View.java:810) at android.view.View$PerformClick.run(View.java:28305) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) Caused by: android.os.RemoteException: Remote stack trace: at com.android.server.wm.ActivityStackSupervisor.checkStartAnyActivityPermission(ActivityStackSupervisor.java:1032) at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:999) at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:669) at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1100) at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1072)

이런적이 없었기에 또 다시 삽질은 시작 되었다. 안드로이드 스튜디오를 재시작해도 문제는 해결되지 않았다.

픽셀2(pixel 2) 폰의 설정창으로 들어가 Play 프로텍트 설정을 확인했다. Play 프로텍트로 앱 검사 기능은 이미 비활성화 상태였다.

Play 프로텍트 설정 찾아가는 방법

휴대폰 설정 > 보안 > Goole Play 프로텍트 > 상단 톱니바퀴 모양 아이콘 클릭 > Play 프로텍트 설정

보통 구글플레이 스토어가 아닌 다른 곳에서 다운 받은 APK 파일을 설치할 때 앱이 설치 되지 않는 경우에  이기능을 비활성화 하면 해결 된다. 그러나 이 문제도 아니였다.

AndroidManifest.xml 파일 정보에 meta-data 태그 중에 구글맵 API_KEY를 디버깅용이 아닌 릴리즈 버전을 사용해서 그런것일까? 라는 생각에 디버깅용으로 변경 후 빌드해보았으나 여전히 해결되지 않았다.

release버전으로 빌드 후 APK파일을 휴대폰으로 복사 후 설치 후 실행해보았으나 여전히 "앱이 설치되지 않았습니다".

분명히 뭔가 바뀐게 있을텐데...무엇일까... 소스코드와 라이브러리 모두 동일한데, 무엇이 바뀌어서 이러는 것일까???

가장 최근해 빌드해서 구글플레이에 올렸던 버전의 소스로 실행해보아도 동일한 오류가 발생되었다.

컴퓨터를 재부팅해볼까? 몇 시간의 삽질 끝에 원인을 찾았다. 

AndroidManifest.xml 파일 정보의 시작하는 액티비티의 android:exported="false" 속성이 문제를 일으켰다.

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="//schemas.android.com/apk/res/android" xmlns:tools="//schemas.android.com/tools" package="com.test.bell"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" /> <!-- 방해금지모드 --> <application android:name=".common.BearBellApplication" android:allowBackup="false" android:fullBackupContent="false" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" tools:replace="android:allowBackup" android:usesCleartextTraffic="true" android:theme="@style/AppTheme"> <activity android:name=".IntroActivity" android:theme="@style/AppTheme.NoActionBar"/> <activity android:name=".MainActivity" android:label="@string/app_name" android:exported="false" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> .........생략

그렇다면 지난 번 릴리즈 버전의 경우 문제없이 동작하는 것이 왜 지금 발생했을까??

지난 번 릴리즈 버전의 경우 인트로 액티비티를 제거하고 메인 엑티비티를 시작액티비티로 변경하면서 android:exported="false"를 제거하지 않았다. 시작하는 액티비티의 경우 exported="false" 옵션을 설정할 수 없다. 옵션을 제거하거나 android:exported="true"로 속성을 지정해야한다.

[해결]

android:exported="true"로 지정

<activity android:name=".MainActivity" android:label="@string/app_name" android:exported="true" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

또는

android: exported 옵션 제거

<activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

RESOURCE: //stackoverflow.com/questions/4226132/app-not-installed-error-on-android

쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

Toplist

최신 우편물

태그