1. 程式人生 > 程式設計 >Android adb安裝apk時提示Invalid APK file的問題

Android adb安裝apk時提示Invalid APK file的問題

今天在使用adb命令安裝apk時,無法安裝成功,進入到android sdk 下的platform_tools下也是無法安裝成功:

先貼一下我的呼叫過程

xu:~ xiaokai$ adb devices
List of devices attached
0123456789ABCDEF device

xu:~ xiaokai$ adb shell
shell@T36DH_CM3:/ $ pm install /Users/xiaokai/Downloads/app-release.apk 
 pkg: /Users/xiaokai/Downloads/app-release.apk
Failure [INSTALL_FAILED_INVALID_URI]
1|shell@T36DH_CM3:/ $ adb install /Users/xiaokai/Downloads/app-release.apk 
Invalid APK file: /Users/xiaokai/Downloads/app-release.apk
255|shell@T36DH_CM3:/ $ exit
xu:~ xiaokai$ adb install /Users/xiaokai/Downloads/app-release.apk 
[100%] /data/local/tmp/app-release.apk
 pkg: /data/local/tmp/app-release.apk
Success

adb devices

首先呼叫了adb devices,檢視有沒有可用的手機,`0123456789ABCDEF device`說明有可用的手機,

adb shell

然後進入手機,安裝apk,

pm install /Users/xiaokai/Downloads/app-release.apk

發現出現問題,

exit

退出前手機 ,進入root目錄

adb install /Users/xiaokai/Downloads/app-release.apk

進行安裝,發現安裝成功,網上查了一下,下面這篇文章介紹了一些這方面的問題

補充上面文章:adb安裝apk報錯Failure [INSTALL_FAILED_INVALID_URI]

今天在使用adb命令安裝一個apk時,遇到一個問題,記錄如下:

1、下載了一個demo.apk,放在D:\A_Download目錄下。

2、手機連上電腦,開啟USB除錯許可權。然後在電腦端啟動cmd,輸入以下命令:

C:\Users\leon>adb devices
List of devices attached
0123456789ABCDEF device

可以看出,手機已經成功連上。

3、輸入adb shell命令,進入shell模式。然後使用install命令安裝上述apk檔案。但是提示失敗:

C:\Users\leon>adb shell
shell@android:/ $ install D:\A_Download\demo.apk
BusyBox v1.20.2-jb bionic (2012-11-25 17:47 +0100) multi-call binary.

Usage: install [-cdDsp] [-o USER] [-g GRP] [-m MODE] [SOURCE]... DEST

Copy files and set attributes

 -c Just copy (default)
 -d Create directories
 -D Create leading target directories
 -s Strip symbol table
 -p Preserve date
 -o USER Set ownership
 -g GRP Set group ownership
 -m MODE Set permissions

分析了一下,原來是忘記使用pm字首(關於install命令要加pm字首的分析,請參見另一篇文章:安卓adb命令中pm工具的作用及用法詳解)。於是修改命令:

shell@android:/ $ pm install D:\A_Download\demo.apk
 pkg: D:A_Downloaddemo.apk
Failure [INSTALL_FAILED_INVALID_URI]

仍然提示失敗!

經過反覆的分析,我認為應該是因為adb命令下,無法識別windows目錄資訊導致。也就是說,adb命令無法識別此處的“D:\A_Download\demo.apk”目錄。也正是因為這樣,所以它給出的失敗原因是INVALID_URI。

為了解決這個問題,其實辦法很簡單,只要退出adb shell的環境就好。於是輸入exit命令回退到windows的cmd環境下,然後使用adb install命令,果然就成功了。

shell@android:/ $ exit

C:\Users\leon>adb install D:\A_Download\demo.apk
[100%] /data/local/tmp/demo.apk
 pkg: /data/local/tmp/demo.apk
Success

當然,上述思路只是我自己想當然的,必須驗證一下是否真是這麼回事。怎麼驗證呢?

如上所述,根據我的猜測,上述安裝方式之所以會失敗,是因為adb環境無法識別windows系統的目錄格式。所以,如果我們提前把檔案拷貝到手機中,然後再進入adb shell環境並install,免去shell環境識別windows目錄格式的步驟,應該就能成功。

於是,我直接在cmd環境下把apk檔案push到手機中,然後進入adb shell環境,執行pm install命令,果然成功了!

C:\Users\leon>adb push D:\A_Download\demo.apk sdcard/demo.apk
[100%] sdcard/demo.apk

C:\Users\leon>adb shell
shell@android:/ $ cd sdcard/
shell@android:/sdcard $ pm install demo.apk
 pkg: demo.apk
Success

所以,總之一句話,adb shell環境下,系統無法識別windows的目錄格式,要麼就退回到cmd環境下,要麼就提前把windows的檔案拷貝到手機中。類似的問題就不會再出現了!

搞定,收工!

以上這篇Android adb安裝apk時提示Invalid APK file的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。