실패 [INSTALL_FAILED_INVALID_APK]


85

방금 Android Studio 0.2.10에서 만든 프로젝트를 클릭하여 실행하고 Android (USB로 디버그를 켜고 USB로 연결됨)를 선택하면 다음 오류가 발생합니다.

Waiting for device.
Target device: 0123456789ABCDEF
Uploading file
    local path: /Users/Rui/AndroidStudioProjects/FirstAppProject/FirstApp/build/apk/FirstApp-debug-unaligned.apk
    remote path: /data/local/tmp/rui.firstapp
Installing rui.firstapp
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/rui.firstapp"
pkg: /data/local/tmp/rui.firstapp
Failure [INSTALL_FAILED_INVALID_APK]

그것이 무엇인지에 대한 아이디어가 있습니까?


내 휴대폰 선택 ... !! 에뮬레이터 ... ??
Gokul Nath KP 2013

1
아니요, USB로 디버그가 설정된 Android입니다.
RuiG 2013 년

앱이 사용중인 장치와 호환되는지 확인 했습니까? 매니페스트에서 MinSDKTargetSDK값을 확인 하세요. 에뮬레이터에 설치해 보셨습니까? 이렇게하면 문제가 APK 또는 기기에 있는지 여부를 좁힐 수 있습니다.
free3dom 2013 년

답변:


153

나는 이것을 Android Studio에서 얻었고 내가 그것을 고치기 위해 한 모든 "Build" > "Clean Project"것은 그냥 작동했습니다.


8
여전히 작동하지 않는 경우 Build-> Rebuild Project after Clean Project가 작동합니다.
Pei

나는 방금 gradle 5.4.1에서 5.6.1로 업데이트하여 이것을 얻었습니다-어떤 이상 함이 원인인지 확실하지 않지만 큰 gradle 업그레이드는 확실히 할 수 있습니다. 또 다른 명령 줄 솔루션이되어 ./gradlew clean정상적인 빌드 명령 다음
마이크 하디를

18

폴더에서 오래된 APK android / app / build / outputs / apk / debug / app-debug.apk를 제거하십시오. 그게 다야. 코딩을 즐기십시오 ...


@VenkateshMogili에 오신 것을 환영합니다
mahendren

1
rm -fr android/app/build/outputs/apk/debug/
felansu

15

한 번 비슷한 문제가 발생했습니다. 내 Androidmanifest.xml의 패키지 이름이 하나의 빈 공백 문자로 시작되었습니다. like " com.example.test" instead of "com.example.test"

내 매니페스트 파일에서 잘못된 공간을 모두 제거하여 문제를 해결했습니다.

편집 1 : 패키지 이름의 '-'도 일부 Android 버전에서 동일한 문제를 일으킴


1
와! 나는 invalidate cache and restart깨끗한 빌드를 강요 할 것이라고 생각 했지만 분명히 그렇지 않습니다.
GabrielOshiro

10

나는 같은 문제가 있었지만 어떤 해결책도 나를 위해 일하지 않았습니다. 문제는 . 내 패키지 이름의 구분 기호.
즉, 패키지 이름이 my.packagename이면 괜찮지 만 mypackagename 일 수는 없습니다
.이 버그 보고서에서 힌트를 얻었습니다.

https://code.google.com/p/android/issues/detail?id=55841


9

누군가 여전히 문제가있는 경우 Build-> Clean Project 다음 Build-> Rebuild project 마지막으로 Sync project with Gradle file .


8

이 문제를 해결하는 방법 :

  1. 설치 RootExplorer
  2. tmpSD 카드에 새 폴더 만들기
  3. tmp 폴더를 길게 누르고이 폴더를 선택 Link합니다 (메뉴의 마지막 옵션).
  4. 아래에서 /data/local/버튼으로 이동하여 누릅니다.CREATE LINK

8

나는이 문제가 있었고 위의 해결책 중 어느 것도 나를 위해 일하지 않았습니다.

어떤 이유로 권한이 내 /data/local/tmp디렉토리에 올바르게 설정되지 않았습니다 (루트에만 rwx가 있음). ADB를 사용하여 문제를 해결했습니다 (루팅 된 장치가 필요합니다).

  1. USB를 통해 휴대폰 연결
  2. 다음을 사용하여 ADB 시작 adb shell
  3. 로 이동 /data/local하여cd /data/local
  4. 다음을 사용하여 루트 모드로 전환하십시오. su
  5. 다음을 tmp사용하여 디렉토리 에서 읽기 / 쓰기 / 실행 허용chmod 777 tmp
  6. 연결을 끊고 Android Studio를 다시 시작한 다음 장치를 다시 연결하십시오.

7

Instant Run을 끄면 문제가 해결되었습니다. 지금까지 어떤 설명도 모릅니다. android studio 3.0으로 마이그레이션하면 다음과 같은 문제가 시작됩니다. 이것이 미래의 누군가에게 도움이되기를 바랍니다.


6

이 문제가 발생했을 때 해결 된 것은 AndroidManifest.xml 패키지 이름이 build.grade applicationId와 동일한 지 확인하는 것이 었습니다.


3

이 오류의 또 다른 이유를 찾았습니다. 루팅 한 경우 / data / local / tmp의 액세스 권한이 변경 될 수 있으므로 adb가 임시 파일에 액세스 할 수 없습니다. 해결책은 sdcard에 "tmp"폴더를 만들고 / data / local / (ADB 셸 또는 루트 탐색기를 통해)에 심볼릭 링크를 만드는 것입니다.


믿을 수 없었습니다. 다른 장치와 교차 확인했습니다 (모든 권한이 루트 수준까지 동일 해 보였습니다). 권한을 넘겨서 777을 만들었습니다. 절대 안됩니다. 그래서 잃을 것. 심볼릭 링크를 시도했습니다 –와! 작동합니다 (+1). 나는 여전히 그 이유와 그 뒤에 무엇이 있는지 알고 싶습니다. 내 경우에는 루팅이 아니었지만 ADB 데몬을 "안전하지 않은 모드"(즉, 루트 권한으로)에서 실행하게했습니다.
Izzy

3

android:extractNativeLibs="false"AndroidManifest 파일에 쓰는 경우 . 다음으로 변경android:extractNativeLibs="true"


2

이것은 내 경우에 도움이되었습니다.

Settings -> Apps -> Google Play Store -> Click "Enable" button.

와. 감사. GooglePlay를 비활성화했는데 이것이 내 문제의 근본 원인임을 알지 못했습니다.
W0rmH0le

2

위의 대부분의 솔루션 (chmod를 제공하고 내부 라이브러리를 변경하는 것이 아닌 간단한 솔루션)을 시도했지만 아무것도 작동하지 않습니다.

결국 나를 위해 일한 것은 : "Clean Project"-> "Rebuild Project"-> build.gradle 앱 모듈에서 앱 versionName 변경-> Sync Gradle-> 기기에서 앱 실행


2

빌드 변형이 일치하지 않아이 문제가 발생했습니다. Dynamic Delivery 모듈은 디버그 변형에 있었고 나머지 모듈은 릴리스에있었습니다. Dynamic Delivery 모듈을 릴리스, 재 구축 및 설치로 변경하기 만하면 문제가 해결되었습니다.


2

Flutter 프로젝트의 경우 VS Code 편집기를 사용하여 프로젝트 소스 폴더로 이동하여 "build"폴더를 삭제하고 디버깅을 시작합니다.


2

Dagger와 여러 모듈이있는 프로젝트에서이 문제가 발생했습니다. 나를 위해 일한 것은 (위의 어느 것도 작동하지 않음) 1) .gradle 폴더를 비우는 것 2) .idea 폴더를 비우는 것입니다. 3) 프로젝트 gradle.properties에서 org.gradle.caching = false를 표시하십시오. 4) AS에서 캐시를 무효화 할 수 있습니다. , 청소, 재 구축

당신은 단지 # 3으로 도망 칠 수 있을지도 모른다.

편집 : 최근에 AS를 다시 시작한 다음 청소 한 다음 다시 설치하여이 문제를 해결할 수있었습니다.


이상하게. 나는 위의 일부를 시도했습니다. 이것은 나를 위해 일했습니다.이 안드로이드 개발은 미쳐 가고 있습니다. 5 분 30 초에 대한 코드와 대기 빌드 얻을
사티 야지 트

@satyajit. 5 분 !! 내겐 10이 걸린다! 이것은 나를 위해 일관되게 작동하는 유일한 것입니다.
Dan Anderson 19

나는이 작업을 할 수 있어요 ./gradlew installDebug명령 줄에서
사티 야지 트

2

이 문제의 원인은 내 앱 모듈 중 하나에 대해 잘못된 빌드 변형을 선택했기 때문입니다. "Build Variants"도구에서 앱 모듈과 일치하는 모듈 변형을 선택하여 문제를 해결했습니다.


1

내 디버그 빌드에서 버전 이름 접미사 -DEBUG를 추가 하고 - 문제가 있었기 때문에 Android Studio 에서이 문제 가 발생했습니다.

버전 이름과 애플리케이션 ID에는 문자, 숫자, 점만 사용하세요.


1

로 이동 Run/Debug Configurations

상단 탭에서 실행> 구성 편집을 클릭합니다.

  • 모듈 : 앱 선택
  • 설치 옵션 : 기본 APK 배포
  • 확인

여기에 이미지 설명 입력


0

나는 단지 같은 오류가 있었다. 앱 ID에 2015 년이있었습니다. 나는 2015를 15로 대체했고 그게 해결되었습니다.

또한 Android Studio를 사용하는 경우 도구 / Android / Gradle 파일과 프로젝트 동기화를 시도 할 수 있습니다.


0

장치 설정에서 응용 프로그램을 강제 종료 합니다.


0

나는이 문제가 있었고 위의 해결책 중 어느 것도 나를 위해 일하지 않았습니다.

그 이유는 아마도 sdcard에서만 사용 가능한 할당량 또는 apk 설치 권한이있는 루트 버전 전화 일 것입니다.

ADB를 사용하여 문제를 해결했습니다 (루팅 된 기기가 필요합니다).

  1. USB를 통해 휴대폰 연결
  2. adb 셸을 사용하여 ADB 시작
  3. su를 사용하여 루트 모드로 전환
  4. sdcard에 tmp 폴더를 만듭니다. mkdir / sdcard / tmp
  5. cd / 데이터 / 로컬
  6. sdcard의 폴더에 링크를 만듭니다. ln -s / sdcard / tmp tmp

0

이 실패에는 여러 가지 이유가있는 것 같습니다. 나에게 문제는 AndroidManifest 파일에서 'uses-library'태그를 사용하여 존재하지 않는 라이브러리 (이 특정 장치에서만)를 참조했다는 것입니다. 이 장치에없는 라이브러리를 제거한 후 apk가 제대로 설치되었습니다.


0

androidquickstart maven archetype을 사용했으며 동일한 문제에 직면했습니다.

내 패키지 이름은 유일한 androidquickstart였습니다. 이전의 조언에 따르면

  1. 패키지를 androidquickstart.test로 변경했습니다.
  2. 다음의 AndroidManifest.xml에서 나는 변경 package="androidquickstart"package="androidquickstart.test"상응하게 XML의 다른 부분에서 테스트를 제거 <activity android:name=".test.HelloAndroidActivity" >하는<activity android:name=".HelloAndroidActivity" >
  3. Java 파일의 수정 된 패키지 문제 (IDE에서 강조 표시)

0

패키지 이름에는 com.example 또는 prashant.mydairy .....와 같은 점으로 결합 된 단어가 포함되어야합니다. 이제 정상적으로 작동합니다.

패키지 이름을 업데이트해야하는 파일은 다음과 같습니다. 1) Manifest 파일 2) Gradle 파일 (모듈 appp) : applicationId "package.name"


1
의견해야
Furqan

0

taskAffinity 이름에는 '.'가 하나 이상 있어야합니다. 분리 기호


0

기기 콘솔 (adb 셸)에 대한 액세스 권한이있는 경우 다음 권한을 변경합니다.

  1. chmod 777 / 데이터 /
  2. chmod 777 / data / local /
    APK를 복사 해 볼 수도 있습니다 /data/local/.이 경우 apk에 올바른 권한을 설정했는지 확인하십시오 .
  3. chmod 777 /data/local/myapk.apk 이제 다음 방법으로 설치를 시도 할 수 있습니다. pm install -r -d /data/local/myapk.apk (절대 경로에 유의하십시오)

0

뒤에 숫자 가있는 것이 범인 인 것 같습니다.

다음 applicationId와 동일한 문제가 발생했습니다.

org.tony.stark.125jarvis

그것을 다음으로 변경

org.tony.stark.jarvis

안드로이드 기기에 앱을 설치할 수있었습니다.


0

minSdkVersionin builde.gradle이 기기의 Android 버전보다 큰 경우이 오류가 발생할 수 있습니다 . 이 경우 minSdkVersion.


0

AndroidManifest.xml에서 코드를 삭제합니다.

tools : replace = "android : appComponentFactory"android : appComponentFactory = ""

효과가있다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.