我无法使用minifyEnabled true
和shrinkResources true
App Level: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 :(得分:10)
您正在
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.
使用备用最新版本。
答案 1 :(得分:2)
首先检查您是否确实需要使用 shrinkResources
如果是这样,请按照 IntelliJ Amiya 上面提到的开发人员链接 http://www.pydev.org/manual_101_project_conf2.html 进行建议,您必须使用如下所示
android { buildTypes { release { shrinkResources true // -- always add this above minifyEnabled -- minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
答案 2 :(得分:0)
此:app:proguardRelease UP-TO-DATE
..使此日志不够完整,无法说明this answer是否有帮助。
请再次执行clean + build release以获得包含所有步骤的完整日志,您可能还需要将--info
添加到gradle选项,甚至--debug
以在gradle构建日志中获取更多诊断消息。
Clean + build还可以修复一些奇怪的问题,即gradle / other-tool没有正确更新某些文件并重用较旧的错误文件 - 很少发生。
还尝试关闭缩小(不是解决方案,只是实验),是否有帮助(本地化问题 确实与proguard缩小而不是其他地方)。
当然,如果在缩小期间存在与proguard相关的错误,请尝试遵循链接答案中的建议。
答案 3 :(得分: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
答案 4 :(得分:0)
尝试使用终端通过gradle命令生成已签名的APK,查看您的堆栈跟踪,它将为您提供详细的日志问题。
在Windows中
$gradle clean
$ gradle --stacktrace assembleRelease
在Ubuntu中
$./gradlew clean
$./gradlew --stacktrace assembleRelease
如果您仍然有问题,请在此处堆叠跟踪
答案 5 :(得分:0)
R.raw.Keep(xml文件)
<?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。
答案 6 :(得分:0)
使用Keytool binary或exe生成私钥库。以下说明链接。然后,您可以使用此密钥库对您的应用进行签名。安装Java时会安装Keytool。
http://docs.oracle.com/cd/E19509-01/820-3503/ggfen/index.html
答案 7 :(得分:0)
清理项目,然后再次开始生成签名的Build / Apk。 对我来说很好。
答案 8 :(得分:0)
可能是您的一个库(尤其是可以使用网络(httpClient
,okHttp
等的库))冲突。请尝试将所有库添加到新项目中(不要添加任何代码或组件。)如果该项目中也发生了错误,那么问题出在其中一个库中。请尝试逐个取消注释库。