1. 程式人生 > >Android 7.0 安裝包修改後無法安裝

Android 7.0 安裝包修改後無法安裝

今天在我的Nexus6P(Android7.0)安裝公司最新版App的時候,報錯說“檔案已損壞”。
後來通過命令列adb install嘗試安裝時,報錯如下:

Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl2097371921.tmp/base.apk: META-INF/CERT.SF indicates /data/app/vmdl2097371921.tmp/base.apk is signed using APK Signature Scheme v2, but no such signature was found. Signature stripped?]

經查詢官網說明後得到解釋:
官方文件說明

Android N引入一項新的應用簽名方案 APK Signature Scheme v2 ,它能提供更快的應用安裝時間和更多針對未授權APK檔案更改的保護。在預設情況下,Android Studio 2.2 和Android Gradle
2.2外掛會使用APK Singnature Scheme v2和傳統簽名方案來簽署您的應用。

這種新的簽名規則規定:使用了新的簽名規則簽署的應用,如果對應用apk進行了進一步更改,則應用簽名無效。出於這個原因,請在使用APK Signature Scheme v2之前,而非之後使用ziplign工具。

當然也有關閉這項規則的方法,在build.gradle檔案中新增 v2SigningEnabled false :

android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }

考慮到打包的流程,發現是使用apk中meta-info目錄新增渠道標示檔案的方法打多渠道包,導致簽名後的apk檔案與原始檔不一致導致的。

相關推薦

Android 7.0 安裝修改無法安裝

今天在我的Nexus6P(Android7.0)安裝公司最新版App的時候,報錯說“檔案已損壞”。 後來通過命令列adb install嘗試安裝時,報錯如下: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: F

Eclipse 在Android 7.0的手機上除錯無法輸出logcat解決方案

最近公司很多專案都上了Android 7.0 的系統,因為web 專案的開發並行的原因,所以一直沒有切換到AS 上來,發現使用eclipse 的時候無法輸出logcat ,通過網上google 發現瞭解決方案 需要更新ADT,這個ADT 並不是google 官方的。 下載地址:連結:ht

解決ubuntu 用anaconda 安裝R 語言,無法安裝R語言package的問題

info={ 系統:ubuntu 17.10 } 錯誤提示 * installing *source* package ‘quadprog’ ... ** 成功將‘quadprog’程式包解包並MD5和檢查 ** libs /home/longsent/anaconda3/bin/

android apk安裝修改了之後在安卓7.0系統上無法安裝的解決辦法

我們在開發app的時候,往往在打包完之後還要進行分發。所以需要在安裝包中寫入一定的檔案。比如渠道或者動態新增啟動時預載入的資訊。但是現安卓開發一般用的是Android Studio ,而且Studio 版本一般都是2.2以上。問題的關鍵就是在這裡,在Studio 2.2以後

Android 7.0 下載APK自動安裝

mime 顯示 sse cast works 入口 新的 限制 itl 隨著Android版本越來越高,Android對隱私的保護力度也越來越大。這些隱私權限的更改在為用戶帶來更加安全的操作系統的同時也為開發者帶來了一些新的任務。如何讓你的APP能夠適應這些

android 下載apk安裝apk(適配android 7.0)

    為適配7.0以後系統,首先需要在AndroidManifest.xml檔案中application節點下定義provider,如下:   <provider          android:nam

關於Android 7.0無法進行https抓的問題

在App進行資料請求的時候,如果每次都列印log去判斷是一件很不“人性化”的操作行為,所以一般都會進行抓包分析。   以最常用的軟體Fiddler來說,進行普通的http抓包沒什麼事,但是對https的抓包,要在本地安裝Fiddler 的證書才可以,因為https是加密的。又因為是自己安裝的攔截

Android-7.0系統安裝異常之解析錯誤

關於這個毛茸茸的小錯誤 最新在開發一個新的 APP ,自己手動寫了版本更新,測試發現,覆蓋安裝的時候,在 Android 7.0 系統上出現解析包錯誤。 報錯資訊: 核心報錯資訊: java.lang.SecurityException: P

Android 7.0 app升級內部安裝apk—FileProvider使用

隨著Android 版本升級 Google在保護使用者隱私和安全方面增加了力度 像Android 6.0 細分了普通許可權和高危許可權,涉及到高危許可權則需要及時申請使用者必須感知。Android7.0 增加了 "StrictMode API" 政策即私有目錄限制訪問。本篇講解一下如何在Androi

Android 7.0無法接收網路變化廣播

今天我們的app發現一個問題,就是小米5(android 7.0)手機無法接收到系統網路變化的廣播,而vivo(android 5.0)可以接收到,我將靜態註冊(在manifest中配置)改為動態註冊可以接收到廣播,因此我想可能有2個原因造成了此問題: android 7.0

android 7.0安裝apk失敗

7.0中通過FileProvider 來對Content URI讀取授權處理 可參考谷歌官網對FileProvider的說明點選開啟連結。 1.在AndroidManifest.xml中定義FileProvider: <manifest xmlns:android="http

Android 7.0修改PMS邏輯新增許可權白名單

     今天有任務安排需要實現給任何一個應用在不動態申請許可權的情況下,實現許可權賦予,大體知道應用許可權的賦予邏輯是在PMS中,於是大概研究了下,最終的手段就是在install安裝時,就把應用程式AndroidManifest中請求的許可權賦予它,但是時間有限,跟蹤了下應

Android Studio 打包 release 版本無法安裝的問題

今天在給應用打包的時候碰到一個很詭異的問題,搞了半天仍然沒有解決,最後還是在 stack overflow 上找到了解決辦法。 問題描述:  在 Android Studio 2.3上通過 Generate Signed APK 打包 release 版本,打包過程一切順利

android 7.0 root下靜默安裝

公司產品基於7.0開發,需要實現覆蓋升級。之前的產品覆蓋升級基於5.1系統,在7.0上不起作用。網上參考了許多部落格。最終稀裡糊塗的成功了,簡單記錄。 核心程式碼只有一句 String command

為什麼應用程式在Android 7.0之後安裝和執行都變得更快?

需要了解幾個概念 Dalvik 虛擬機器 負責解釋dex檔案為機器碼,每次執行程式碼,都需要Dalvik將dex程式碼翻譯為微處理器指令,然後交給系統處理,這樣效率不高。 JIT(Just-In-Time) 為了解決上面的問題,Google在2

Android Studio 打包 release 版本無法安裝

今天在給應用打包的時候碰到一個很詭異的問題,搞了半天仍然沒有解決,最後還是在 stack overflow 上找到了解決辦法。 問題描述:  在 Android Studio 2.3上通過 Generate Signed APK 打包 release 版本,打包過程一切順利,正要愉快的

Android Studio 3.0 編譯出來的apk無法安裝問題解決

問題:直接在手機裡跑可以正常跑,但是跑出來的apk傳送給別人安裝的時候提示該安裝包似乎已損壞 使用2.0的時候都是好好的,後來切換到3.0的時候就出現了這個問題 解決:主要是簽名問題,只能勾選V1才行,都不勾或者都勾、只勾V2都是不行的。 也就是說直接運行

android app 更新下載安裝 適配android 7.0

public class UpdataService extends Service { public UpdataService() { } /** * 安卓系統下載類 **/ private DownloadManager manager; /

android 7.0 相機,拍照 調裁切提示 “無法載入此圖片” 解決方案

調起相機拍照之後,在調起裁切之前  加上 這兩句程式碼,,Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); //需要加上這

android 7.0分享朋友圈提示:“獲取資源失敗,僅支援分享照片至朋友圈”或者FileProvider生成的Uri無法識別

需求是把網路圖片地址是string型別,生成圖片,分享到朋友圈,遇到的問題是,7.0之前沒有問題分享朋友圈,順便切上程式碼: Intent intent = new Intent(); Uri uri = null; try { Stri