gradle v1.x与v2.x之间的巨大Apk差异

时间:2016-05-19 19:57:00

标签: android apk

前几天我正在检查" App Info"从我开发的应用程序开始,我惊讶地发现大量的Mb被用作"缓存" (应用程序还没有下载任何内容,它只是一个模型)。起初我以为我可能会加入一些重型图书馆(壁画......)所以我决定创建一个空白项目,试图找出问题所在。

我尝试过2种情景:棒棒糖前和棒棒糖。有了这个,我发现他们处理的方式有一些不同,数据"但整体apk大小是一样的。虽然在这里,在棒棒糖前(4.4.4),在棒棒糖中几乎没有"缓存"(第一图像)... 8 mb"缓存"。

lollipop vs pre-lollipop - gradle 2.1

所有这些都不够,因为我在棒棒糖及其以上开发的其他应用程序已经减少了"缓存"。我开始思考可能有什么区别,最后我想我已经找到了一些东西,gradle版本!

lollipop vs pre-lollipop - gradle 1.5

使用gradle 1.5构建的项目具有较小的apk大小,几乎没有"缓存" (棒棒糖和前棒棒糖) 我有什么遗失的东西吗?为什么突然增加"缓存"大小。
使用最新的gradle版本时有什么方法可以避免这种情况吗?

1 个答案:

答案 0 :(得分:1)

Instant Run随附了您应用的增量块,反映您对代码所做的更改。这些东西仍然需要由您的应用程序加载,因此他们显然将这些信息放在某个位置,这些位置被计为&#34;缓存&#34; (import json import requests from create_account import templates import logging logger = log.logging.getLogger(__name__) # logging helpers def log_request_for(request, name): if logger.isEnabledFor(logging.DEBUG): logger.debug('%s request: url %s headers %s body %s', name, request.url, request.headers, request.body) def log_response_for(response, name): if logger.isEnabledFor(logging.DEBUG): logger.debug('%s response: status %s body %s', name, response.status_code, response.json()) def log_error_for(error, name): logger.error('%s: (%s)', name, error) def log_json_error_for(error_json, name): logger.error('%s: (%s)', name, json.dumps(error_json)) # Client for making API requests class Client(object): _api_url = 'https://[redacted]' _authenticated = False <snip> def create_account(self, account_name=None, realm=None, timezone=None): verb = 'put' account = self._account_id endpoint = None headers = None template = 'new_account' variables = dict(account_name=account_name, realm=realm, timezone=timezone) req = self._api_request(verb, self._account_id, endpoint=endpoint, headers=headers, template=template, variables=variables) log_request_for(req.request, 'create_account') import pdb; pdb.set_trace() # test status_code (if) log_response_for(req, 'create_account') if req.status_code >= 400: if req.json().get('data'): edata = req.json()['data'] log_json_error_for(edata, 'create_account') else: log_error_for(req.json(), 'create_account') else: # handle error <snip> ?)。

同样,你的应用程序的主要APK本身会更大一些,因为它必须包含一大块代码,知道如何加载这些动态变化的位。

如果您需要测量这些值,请禁用“即时运行”,或运行版本构建(自动为非即时运行)。