2016-12-25 78 views
5

我無法使用minifyEnabled trueshrinkResources true簽署了產生APK:錯誤,同時建立APK安卓工作室

應用級生成簽名APK:的build.gradle

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.1.0' 
    } 
} 
apply plugin: 'com.android.application' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 23 
    buildToolsVersion '22.0.1' 

    defaultConfig { 
     applicationId "......." 
     minSdkVersion 14 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     debug { 
      minifyEnabled true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 

     release { 
      minifyEnabled true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    configurations { 
     compile.exclude group: "org.apache.httpcomponents", module: "httpclient" 
    } 
} 

dependencies { 
    compile 'com.android.support:design:23.0.1' 
    compile 'com.android.support:cardview-v7:23.0.1' 
    compile 'com.android.support:recyclerview-v7:23.0.1' 
    compile 'com.android.support:appcompat-v7:23.0.1' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    compile 'com.google.apis:google-api-services-youtube:v3-rev149-1.20.0' 
    compile 'com.google.http-client:google-http-client-android:1.20.0' 
    compile 'com.google.api-client:google-api-client-android:1.20.0' 
    compile 'com.google.api-client:google-api-client-gson:1.20.0' 
    compile files('libs/YouTubeAndroidPlayerApi.jar') 
    compile 'com.github.clans:fab:1.6.2' 
} 

消息查看

Information:Gradle tasks [:app:assembleRelease] 
:app:preBuild UP-TO-DATE 
:app:preReleaseBuild UP-TO-DATE 
:app:checkReleaseManifest 
:app:preDebugBuild UP-TO-DATE 
:app:prepareComAndroidSupportAppcompatV72301Library UP-TO-DATE 
:app:prepareComAndroidSupportCardviewV72301Library UP-TO-DATE 
:app:prepareComAndroidSupportDesign2301Library UP-TO-DATE 
:app:prepareComAndroidSupportRecyclerviewV72301Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportV42301Library UP-TO-DATE 
:app:prepareComGithubClansFab162Library UP-TO-DATE 
:app:prepareReleaseDependencies 
:app:compileReleaseAidl 
:app:compileReleaseRenderscript 
:app:generateReleaseBuildConfig 
:app:generateReleaseAssets UP-TO-DATE 
:app:mergeReleaseAssets 
:app:generateReleaseResValues UP-TO-DATE 
:app:generateReleaseResources 
:app:mergeReleaseResources 
:app:processReleaseManifest 
:app:processReleaseResources 
:app:generateReleaseSources 
:app:processReleaseJavaRes UP-TO-DATE 
:app:compileReleaseJavaWithJavac 
Note: .....YouTubeRecyclerViewFragment.java uses or overrides a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 
Note: ....GetPlaylistAsyncTask.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details. 
:app:compileReleaseNdk UP-TO-DATE 
:app:compileReleaseSources 
:app:proguardRelease UP-TO-DATE 
:app:dexRelease 
:app:shrinkReleaseResources 
Removed unused resources: Binary resource data reduced from 741KB to 402KB: Removed 45% 
Note: If necessary, you can disable resource shrinking by adding 
android { 
    buildTypes { 
     release { 
      shrinkResources false 
     } 
    } 
} 
:app:validateExternalOverrideSigning 
:app:packageRelease FAILED 
Error:Execution failed for task ':app:packageRelease'. 
> Unable to compute hash of ....\app\build\intermediates\classes-proguard\release\classes.jar 
Information:BUILD FAILED 
Information:Total time: 7.45 secs 
Information:1 error 
Information:0 warnings 
Information:See complete output in console 
+0

你能在'YouTubeRecyclerViewFregment'源代碼編輯你的答案?似乎你正在使用一些不贊成使用的API –

回答

0

This :app:proguardRelease UP-TO-DATE ..使這個日誌不夠完整,說如果this answer會有幫助與否。

請再次清理+生成版本以便完成所有步驟的日誌記錄,您可能還需要將--info添加到gradle選項,或者甚至是--debug以在gradle生成日誌中獲取更多診斷消息。

Clean + build還可以修復一些Gradle/other-tool的一些奇怪問題,它們沒有正確更新某個文件並重新使用舊的不正確的文件 - 很少發生。

也儘量縮小開關關閉(不解決方案,只是實驗),是否有利於(本地化問題真正與proguard的縮小而不是其他地方)。

當然,如果在縮小過程中有與proguard相關的錯誤,請嘗試遵循關聯答案的建議。

0

如果您無法登錄Android Studio中的APK,手動

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name 

簽署它,如果你沒有鑰匙,用keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000產生它

您也可以手動爲manual簽署做到:

keytool -genkey -v -keystore my-release-key.jks-keyalg RSA -keysize 2048 -validity 10000 -alias app 
zipalign -v -p 4 my-app-unaligned.apk my-app.apk 
apksigner sign --ks my-release-key.jks my-app.apk 

檢查簽名的apk

apksigner verify my-app.apk 
6

你得到

Removed unused resources: Binary resource data reduced from 741KB to 402KB: Removed 45% 
Note: If necessary, you can disable resource shrinking by adding 
android { 
    buildTypes { 
     release { 
      shrinkResources false 
     } 
    } 
} 
:app:validateExternalOverrideSigning 
:app:packageRelease FAILED 
Error:Execution failed for task ':app:packageRelease'. 

資源只有在與代碼結合萎縮萎縮作品。

minifyEnabled是一款Android工具,可用於在構建應用程序時縮小應用程序的大小。

android { 

    buildTypes { 
     release { 
      shrinkResources true // This must be first 
      minifyEnabled true // This must be after shrinkResources 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 
        'proguard-rules.pro' 
     } 
    } 
} 

如果您還沒有已建成使用minifyEnabled代碼 萎縮您的應用程序,然後嘗試,啓用shrinkResources之前,因爲你 可能需要編輯您的proguard-rules.pro文件,以保持類或在啓動 刪除資源之前動態創建或調用的方法。

請仔細閱讀官方指南約Shrink Your Code and Resources

諮詢

使用最新版本

compileSdkVersion 25 
buildToolsVersion '25.0.1' 
targetSdkVersion 25 
compile 'com.android.support:appcompat-v7:25.1.0' // set other 25.1.0 

注意

YouTubeRecyclerViewFragment.java uses or overrides a deprecated API. 

使用備用最新版本。

0

嘗試使用終端通過gradle命令生成簽名APK查看您的堆棧跟蹤,它會給你詳細的日誌哪裏有問題。

在Windows

$gradle clean

$ gradle --stacktrace assembleRelease 

在Ubuntu中

$./gradlew clean

$./gradlew --stacktrace assembleRelease 

,如果你有還是問題後您堆棧跟蹤這裏

1

首先檢查你是否真的需要使用shrinkResources

如果是這樣,如建議在開發人員鏈接https://developer.android.com/studio/build/shrink-code.html#shrink-resources通過的IntelliJ上述Amiya,你必須像下面一樣使用

 
android { 

    buildTypes { 
     release { 
      shrinkResources true // -- always add this above minifyEnabled -- 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 
        'proguard-rules.pro' 
     } 
    } 
} 
0

R.raw.Keep(xml fil e)

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:tools="http://schemas.android.com/tools" 
    tools:shrinkMode="strict" /> 

不要忘記從.java源文件引用此資源。欲瞭解更多詳情,請參見https://developer.android.com/studio/build/shrink-code.html

如果你擔心你的APK文件的大小,那麼它的很好的做法,縮小圖像的文件。這是將RGB通道轉換爲索引通道,這可以節省高達50%的空間。

注:..... YouTubeRecyclerViewFragment.java使用或覆蓋一個過時的API。

相關問題