Không thành công [INSTALL_FAILED_INVALID_APK]


85

Khi tôi nhấp để chạy một dự án tôi vừa tạo trong Android Studio 0.2.10 và chọn Android của tôi (được kết nối bằng USB có bật gỡ lỗi bằng USB), tôi gặp lỗi này:

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]

Bất kỳ ý tưởng về những gì nó có thể là?


Chọn điện thoại của tôi ... !! Ý bạn là giả lập ... ??
Gokul Nath KP

1
Không, Android của tôi có bật gỡ lỗi bằng USB.
RuiG

Bạn có đảm bảo rằng ứng dụng tương thích với thiết bị bạn đang sử dụng không? Kiểm tra các giá trị MinSDKTargetSDKtrong tệp kê khai của bạn. Bạn đã thử cài đặt cái này trong trình giả lập chưa? Điều này sẽ thu hẹp xem vấn đề là với APK hay thiết bị của bạn.
free3dom

Câu trả lời:


153

Tôi đã nhận được điều này trong Android Studio và tất cả những gì tôi đã làm để khắc phục nó là đi đến "Build" > "Clean Project"và nó chỉ hoạt động.


8
Nếu nó vẫn không hoạt động, Build -> Rebuild Project sau khi Clean Project sẽ hoạt động.
Pei

Tôi vừa nhận được điều này với bản cập nhật từ gradle 5.4.1 lên 5.6.1 - không chắc chắn điều gì kỳ lạ đã gây ra nó nhưng các bản nâng cấp lớn chắc chắn có thể. Một giải pháp dòng lệnh thay thế được ./gradlew cleantheo sau bởi lệnh xây dựng bình thường của bạn
Mike Hardy

18

Chỉ cần xóa APK cũ android / app / build / outputs / apk / debug / app-debug.apk trong thư mục. đó là tất cả. thưởng thức mã hóa của bạn ...


Chào mừng @VenkateshMogili
mahendren

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

15

Tôi đã gặp sự cố tương tự một lần, những gì tôi quan sát được là, tên gói trong Androidmanifest.xml của tôi được bắt đầu bằng một ký tự khoảng trống. like " com.example.test" instead of "com.example.test"

Tôi đã xóa tất cả các khoảng trắng không hợp lệ như vậy khỏi tệp kê khai của mình, nó đã giải quyết được vấn đề của tôi

Chỉnh sửa 1 : '-' trong tên gói cũng gây ra vấn đề tương tự trên một số phiên bản Android


1
Chà! Tôi nghĩ rằng invalidate cache and restartsẽ buộc phải xây dựng sạch sẽ, rõ ràng là không.
GabrielOshiro

10

Tôi đã gặp vấn đề tương tự nhưng không có giải pháp nào phù hợp với tôi. Vấn đề là tôi không có . dấu phân cách trong tên gói của tôi.
tức là nếu tên gói của bạn là my.packagename thì nó tốt nhưng nó không thể chỉ là mypackagename Đã
nhận được gợi ý từ báo cáo lỗi này.

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


9

Nếu ai đó vẫn gặp sự cố thì Build-> Clean Project rồi Build-> Rebuild project cuối cùng Đồng bộ hóa dự án với tệp Gradle .


8

Giải quyết vấn đề này như thế nào:

  1. Tải về RootExplorer
  2. Tạo tmpthư mục mới trên thẻ SD
  3. Nhấn và giữ thư mục tmp và chọn Linkthư mục này (tùy chọn cuối cùng trong menu)
  4. Đi tới /data/local/và nhấn vào nút CREATE LINKtừ dưới cùng

8

Tôi gặp sự cố này và không có giải pháp nào ở trên phù hợp với tôi.

Vì một số lý do, các quyền không được đặt chính xác trên /data/local/tmpthư mục của tôi (chỉ root mới có rwx). Tôi đã khắc phục sự cố bằng ADB (bạn sẽ cần một thiết bị đã được root):

  1. Kết nối điện thoại của bạn qua USB
  2. Khởi chạy ADB bằng cách sử dụng adb shell
  3. Chuyển sang /data/localsử dụngcd /data/local
  4. Chuyển sang chế độ gốc bằng cách sử dụng su
  5. Cho phép đọc / ghi / thực thi trên tmpthư mục bằng cách sử dụngchmod 777 tmp
  6. Ngắt kết nối, khởi động lại Android Studio và cắm lại thiết bị

7

Bằng cách tắt Chạy tức thì đã giải quyết được vấn đề của tôi. Không biết bất kỳ lời giải thích cho đến bây giờ. Sau khi chuyển sang android studio 3.0, nó bắt đầu gặp sự cố như thế này. Hy vọng điều này sẽ giúp ai đó trong tương lai.


6

Khi tôi gặp sự cố này, điều đã khắc phục sự cố cho tôi là đảm bảo rằng tên gói AndroidManifest.xml giống với build.grade applicationId.


3

Tôi tìm thấy một lý do khác của lỗi này. Nếu bạn đã root thiết bị của bạn, quyền truy cập của / data / local / tmp có thể bị thay đổi, vì vậy adb không thể truy cập vào tệp tạm thời của nó. Giải pháp là tạo thư mục "tmp" trên sdcard và tạo liên kết tượng trưng cho nó trong / data / local / (thông qua ADB shell hoặc Root Explorer).


Tôi không thể tin được rằng: đã kiểm tra chéo với một thiết bị khác (tất cả các quyền dường như giống hệt nhau, cho đến cấp cơ sở); loay hoay với các quyền (làm cho chúng đồng đều 777) - không có cách nào. Vậy thì mất gì. Đã thử liên kết biểu tượng - wow! Hoạt động (+1). Tôi vẫn muốn biết tại sao và điều gì đằng sau điều đó. Trong trường hợp của tôi, nó không phải do root gây ra mà là làm cho daemon ADB chạy ở "chế độ không an toàn" (tức là với quyền root).
Izzy

3

Nếu bạn viết android:extractNativeLibs="false"trong tệp AndroidManifest. sau đó thay đổi nó thànhandroid:extractNativeLibs="true"


2

Điều này đã giúp trong trường hợp của tôi:

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

Chà. Cảm ơn. Tôi đã tắt GooglePlay và không nhận thấy đây là nguyên nhân gốc rễ của các vấn đề của tôi.
W0rmH0le,

2

Tôi đã thử hầu hết các giải pháp được cung cấp ở trên (những giải pháp đơn giản, không cung cấp chmod và thay đổi thư viện nội bộ) và không có giải pháp nào hoạt động

Cuối cùng những gì làm việc cho tôi là: "Dự án sạch" -> "Dự án xây dựng lại" -> thay đổi tên phiên bản ứng dụng trong mô-đun ứng dụng build.gradle -> Sync Gradle -> Chạy ứng dụng trên thiết bị


2

Tôi gặp phải vấn đề này do có các biến thể xây dựng không khớp. Mô-đun Phân phối động có trên biến thể gỡ lỗi trong khi các mô-đun còn lại được phát hành. Chỉ cần thay đổi mô-đun Phân phối động để phát hành, xây dựng lại và cài đặt, đã khắc phục được sự cố.


2

Đối với các dự án Flutter, với VS Code editor, hãy chuyển đến thư mục nguồn của dự án và xóa thư mục "build" và bắt đầu gỡ lỗi.


2

Tôi gặp sự cố này trong một dự án với Dagger và nhiều mô-đun. Điều phù hợp với tôi (không cách nào ở trên hiệu quả) là 1) làm trống thư mục .gradle 2) làm trống thư mục .idea 3) Trong dự án gradle.properties, hãy đánh dấu org.gradle.caching = false 4) Có thể làm mất hiệu lực bộ nhớ đệm trong AS , dọn dẹp, xây dựng lại

Bạn có thể thoát khỏi chỉ với # 3, dọn dẹp rồi xây dựng.

CHỈNH SỬA: Gần đây, tôi đã có thể giải quyết vấn đề này bằng cách khởi động lại AS, sau đó làm sạch, sau đó cài đặt lại.


kỳ lạ. tôi đã thử một số ở trên. điều này đã làm việc cho tôi Sự phát triển android này đang trở nên điên cuồng. mã cho 30 giây và chờ 5 phút để có được xây dựng
Satyajit

@satyajit. 5 phút!! của tôi mất 10! Đây là cái duy nhất luôn hoạt động cho tôi.
Dan Anderson

tôi có thể làm cho nó hoạt động với ./gradlew installDebugtừ dòng lệnh
satyajit

2

Nguyên nhân của vấn đề này đối với tôi là đã chọn sai biến thể xây dựng cho một trong các mô-đun ứng dụng của tôi. Từ công cụ "Tạo biến thể", tôi đã chọn biến thể mô-đun phù hợp với mô-đun ứng dụng và nó đã khắc phục sự cố cho tôi.


1

Tôi gặp sự cố này trên android Studio vì trong bản dựng Gỡ lỗi của mình, tôi đã thêm hậu tố tên phiên bản -DEBUG- là vấn đề.

Cố gắng chỉ có các chữ cái, số và dấu chấm trên tên phiên bản và id ứng dụng của bạn


1

Hướng đến Run/Debug Configurations

Nhấp vào Chạy từ tab trên cùng> Chỉnh sửa cấu hình

  • Mô-đun: Chọn ứng dụng của bạn
  • Tùy chọn cài đặt: Triển khai APK mặc định
  • Đồng ý

nhập mô tả hình ảnh ở đây


0

Tôi chỉ có cùng một lỗi. Tôi đã có năm 2015 trong id ứng dụng. Tôi đã thay thế 2015 bằng mười lăm và điều đó đã giải quyết được nó.

Ngoài ra, nếu bạn sử dụng Android Studio, bạn có thể thử: Công cụ / Android / Dự án đồng bộ với tệp Gradle


0

Buộc Dừng ứng dụng trong cài đặt thiết bị.


0

Tôi gặp sự cố này và không có giải pháp nào ở trên phù hợp với tôi.

Lý do có lẽ là điện thoại phiên bản gốc có sẵn hạn ngạch hoặc quyền cài đặt apk chỉ ở sdcard.

Tôi đã khắc phục sự cố bằng ADB (bạn sẽ cần một thiết bị đã root):

  1. Kết nối điện thoại của bạn qua USB
  2. Khởi chạy ADB bằng cách sử dụng adb shell
  3. Chuyển sang chế độ gốc bằng su
  4. tạo thư mục tmp trong sdcard: mkdir / sdcard / tmp
  5. cd / data / local
  6. tạo liên kết thư mục trong sdcard: ln -s / sdcard / tmp tmp

0

Có vẻ như có nhiều lý do cho sự thất bại này. Đối với tôi, vấn đề là trong tệp AndroidManifest, tôi đã tham chiếu đến một thư viện không tồn tại (chỉ trong thiết bị cụ thể này) bằng thẻ 'use-library'. Sau khi xóa thư viện mà thiết bị này không có apk đã được cài đặt đúng cách.


0

Tôi đã sử dụng nguyên mẫu maven androidquickstart và gặp phải vấn đề tương tự:

Tên gói của tôi là một androidquickstart duy nhất. Theo lời khuyên trước đây

  1. Tôi đã thay đổi gói thành androidquickstart.test
  2. sau đó trong AndroidManifest.xml Tôi đã thay đổi package="androidquickstart"đến package="androidquickstart.test"và tương ứng loại bỏ kiểm tra từ các bộ phận khác của xml <activity android:name=".test.HelloAndroidActivity" >để<activity android:name=".HelloAndroidActivity" >
  3. và cũng đã khắc phục sự cố gói trong tệp java (được đánh dấu bởi IDE)

0

Tên gói của bạn nên bao gồm các từ được kết hợp bằng dấu chấm như com.example hoặc prashant.mydairy ..... hiện tại nó sẽ hoạt động tốt

các tệp mà bạn phải cập nhật tên gói của mình như sau: 1) Tệp kê khai 2) Tệp Gradle (appp mô-đun): applicationId "package.name"


1
nên được bình luận
Furqan


0

Nếu bạn có quyền truy cập vào bảng điều khiển thiết bị (adb shell), thì hãy thay đổi các quyền sau:

  1. chmod 777 / data /
  2. chmod 777 / data / local /
    Bạn cũng có thể muốn thử sao chép apk vào /data/local/trong trường hợp đó, hãy đảm bảo rằng thiết lập các quyền phù hợp cho apk cũng được.
  3. chmod 777 /data/local/myapk.apk Bây giờ bạn có thể thử cài đặt bằng cách: pm install -r -d /data/local/myapk.apk (lưu ý đường dẫn tuyệt đối)

0

Có vẻ như có một số sau dấu chấm là thủ phạm.

Tôi gặp sự cố tương tự với ứng dụng sau

org.tony.stark.125jarvis

Thay đổi nó thành

org.tony.stark.jarvis

Tôi đã có thể cài đặt ứng dụng cho các thiết bị Android.


0

Bạn có thể nhận được lỗi này nếu minSdkVersiontrong builde.gradlelà lớn hơn so với phiên bản Android của thiết bị. Trong trường hợp đó, bạn phải sửa đổi minSdkVersion.


0

xóa mã trong AndroidManifest.xml:

tools: Replace = "android: appComponentFactory" android: appComponentFactory = ""

nó hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.