Android Studio 生成apk安裝失敗 Run app : Installation error code: -15 / INSTALL_FAILED_TEST_ONLY

寫在前面


最近又在使用Windows系統了。操作系統變了,環境也變了,問題也隨之而來哦~

用AS Run了一個代碼,生成了apk進行安裝。但是不幸的事情是,我的小米手機提示,未安裝(也就是安裝失敗了)。

查看logcat 提示:Installation error code: -15 意思是:INSTALL_FAILED_TEST_ONLY


問題分析


各種查詢資料之後,發現並不是偶現。下面描述一下環境和各種配置。

環境:

軟件:Android Studio 3.0.1

gradle:4.1

jdk:1.8

清單文件中有一個不太常用的屬性,testOnly。

android:testOnly:應用是否是爲了測試,它可能向外暴露數據,引發安全漏洞,如果爲true,應用只能通過adb安裝。一般來說,項目中manifest不會去設置這個屬性,所以會默認爲false。


問題解決


1) 檢查Android Studio和gradle版本是否爲alpha版本,換爲穩定版本

2)檢查是否打開了Instant run功能,如果打開了關閉。

3)△ 檢查\app\src\main\AndroidMainfest.xml中是否有testOnly屬性爲true,如果有去掉或者改爲false

4)△ 運行生成安裝包的方式是Run app的話,試下Build apk(s)

(可能Google對AS3.0的又做了處理?Run app會將testOnly默認設置成true)

Make Project

編譯Project下所有Module,一般是自上次編譯後Project下有更新的文件,不生成apk。
Make Selected Modules

編譯指定的Module,一般是自上次編譯後Module下有更新的文件,不生成apk。
Clean Project

刪除之前編譯後的編譯文件,並重新編譯整個Project,比較花費時間,不生成apk。
Rebuild Project

先執行Clean操作,刪除之前編譯的編譯文件和可執行文件,然後重新編譯新的編譯文件,不生成apk,這裏效果其實跟Clean Project是一致的
Build APK

前面4個選項都是編譯,沒有生成apk文件,如果想生成apk,需要點擊Build APK。
Generate Signed APK

生成有簽名的apk(一般項目嵌入第三方,生成release包時必須混淆,否則無法生成apk)。


Run ‘app’是需要連接設備的。查了下國內和國外的關於Android Studio Build Apk(s)和Run ‘app’的區別:首先如果沒有關閉Instant Run情況下,Run ‘app’優先會使用Instant Run。


寫在後面

1、apk安裝錯誤代碼對應信息

錯誤提示信息列表一覽

INSTALL_FAILED_ALREADY_EXISTS: 程序已經存在
INSTALL_FAILED_INVALID_APK: 無效的APK
INSTALL_FAILED_INVALID_URI: 無效的鏈接
INSTALL_FAILED_INSUFFICIENT_STORAGE: 沒有足夠的存儲空間
INSTALL_FAILED_DUPLICATE_PACKAGE: 已存在同名程序
在 INSTALL_FAILED_UPDATE_INCOMPATIBLE: 版本不能共存
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: 需求的共享用戶
簽名錯誤INSTALL_FAILED_MISSING_SHARED_LIBRARY: 需求的共享庫已丟失
INSTALL_FAILED_DEXOPT: dex優化驗證失敗
INSTALL_FAILED_OLDER_SDK : 系統版本過舊
INSTALL_FAILED_TEST_ONLY: 調用者不被允許測試的測試程序
CPU_ABIINSTALL_FAILED_MISSING_FEATURE: 使用了一個無效的特性
INSTALL_FAILED_INVALID_INSTALL_LOCATION: 無效的安裝路徑
INSTALL_FAILED_MEDIA_UNAVAILABLE: SD卡不存在
INSTALL_FAILED_INTERNAL_ERROR: 系統問題導致安裝失敗
​DEFAULT: 未知錯誤

2、Instant Run

Instant Run,是android studio2.0新增的一個運行機制,在你編碼開發、測試或debug的時候,它都能顯著減少你對當前應用的構建和部署的時間。 當我們第一次點擊run、debug按鈕的時候,它運行時間和我們往常一樣。但是接下去的時間裏,你每次修改代碼後點擊run、debug按鈕,對應的改變將迅速的部署到你正在運行的程序上,傳說速度快到你都來不及把注意力集中到手機屏幕上,它就已經做好相應的更改。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章