我无法使用
生成签名 APK
应用级别:build.gradle
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 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' } |
消息视图
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | :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\ elease\\classes.jar Information:BUILD FAILED Information:Total time: 7.45 secs Information:1 error Information:0 warnings Information:See complete output in console |
你得到
2 3 4 5 6 7 8 9 10 11 12 | 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 工具,可以在您构建应用程序时减小它的大小。
2 3 4 5 6 7 8 9 10 11 | buildTypes { release { shrinkResources true // This must be first minifyEnabled true // This must be after shrinkResources proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } |
If you haven't already built your app using minifyEnabled for code
shrinking, then try that before enabling shrinkResources, because you
might need to edit your proguard-rules.pro file to keep classes or
methods that are created or invoked dynamically before you start
removing resources.
请阅读有关缩减代码和资源的官方指南
建议
使用最新版本
2 3 4 | buildToolsVersion '25.0.1' targetSdkVersion 25 compile 'com.android.support:appcompat-v7:25.1.0' // set other 25.1.0 |
注意
使用备用最新版本。
首先检查你是否真的需要使用shrinkResources
如果是这样,请按照 IntelliJ Amiya 上面提到的开发者链接 https://developer.android.com/studio/build/shrink-code.html#shrink-resources 中的建议进行操作,您必须像下面这样使用
2 3 4 5 6 7 8 9 10 11 | buildTypes { release { shrinkResources true // -- always add this above minifyEnabled -- minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } |
清理项目并重新开始生成签名的 Build/Apk。
它对我来说工作正常。
尝试使用终端通过 gradle 命令生成签名的 APK,查看堆栈跟踪,它会为你提供详细的日志,哪里有问题。
In Windows
In Ubuntu
如果你在此处发布堆栈跟踪仍然有问题
可能是您的某个库(尤其是可以使用网络的库(
使用 Keytool 二进制或 exe 生成私有密钥库。以下链接中的说明。然后,您可以使用此密钥库为您的应用程序签名。安装 Java 时会安装 Keytool。
http://docs.oracle.com/cd/E19509-01/820-3503/ggfen/index.html
R.raw.Keep(xml 文件)
2 3 | <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。
如果您无法在 Android Studio 中对 apk 进行签名,请使用
手动对其进行签名
如果你没有密钥,用
生成它
您也可以像手册那样手动签名:
2 3 | zipalign -v -p 4 my-app-unaligned.apk my-app.apk apksigner sign --ks my-release-key.jks my-app.apk |
检查签名的apk
这个
请再次进行干净的构建发布以获取所有步骤的完整日志,您可能还希望将
干净的构建还可以解决一些奇怪的问题,即 gradle/other-tool 无法正确更新某些文件并重用旧的不正确的文件 - 很少发生。
还尝试关闭缩小(不是解决方案,只是实验),是否有帮助(定位问题实际上是使用 proguard 缩小而不是其他地方)。
当然,如果在缩小过程中出现与 proguard 相关的错误,请尝试遵循链接答案中的建议。
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file
我是Rails的新手,所以请原谅简单的问题。我正在为一家公司创建一个网站。那家公司想在网站上展示它的客户。我想让客户自己管理这个。我正在为“客户”生成一个表格,我想要的三列是:公司名称、公司描述和Logo。对于名称,我使用的是name:string但不确定如何在脚本/生成脚手架终端命令中最好地创建描述列(因为我打算将其设置为文本区域)和图片。我怀疑描述(我想成为一个文本区域)应该仍然是描述:字符串,然后以实际形式进行调整。不确定如何处理图片字段。那么……说来话长:我在脚手架命令中输入什么来生成描述和图片列? 最佳答案 对于“文本”数
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
有这些railscast。http://railscasts.com/episodes/218-making-generators-in-rails-3有了这个,你就会知道如何创建样式表和脚手架生成器。http://railscasts.com/episodes/216-generators-in-rails-3通过这个,您可以了解如何添加一些文件来修改脚手架View。我想把两者结合起来。我想创建一个生成器,它也可以创建脚手架View。有点像RyanBates漂亮的生成器或web_app_themegem(https://github.com/pilu/web-app-theme)。我
导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri