前几天我正在检查" App Info"从我开发的应用程序开始,我惊讶地发现大量的Mb被用作"缓存" (应用程序还没有下载任何内容,它只是一个模型)。起初我以为我可能会加入一些重型图书馆(壁画......)所以我决定创建一个空白项目,试图找出问题所在。
我尝试过2种情景:棒棒糖前和棒棒糖。有了这个,我发现他们处理的方式有一些不同,数据"但整体apk大小是一样的。虽然在这里,在棒棒糖前(4.4.4),在棒棒糖中几乎没有"缓存"(第一图像)... 8 mb"缓存"。
所有这些都不够,因为我在棒棒糖及其以上开发的其他应用程序已经减少了"缓存"。我开始思考可能有什么区别,最后我想我已经找到了一些东西,gradle版本!
使用gradle 1.5构建的项目具有较小的apk大小,几乎没有"缓存" (棒棒糖和前棒棒糖)
我有什么遗失的东西吗?为什么突然增加"缓存"大小。
使用最新的gradle版本时有什么方法可以避免这种情况吗?
答案 0 :(得分:1)
Instant Run随附了您应用的增量块,反映您对代码所做的更改。这些东西仍然需要由您的应用程序加载,因此他们显然将这些信息放在某个位置,这些位置被计为"缓存" (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本身会更大一些,因为它必须包含一大块代码,知道如何加载这些动态变化的位。
如果您需要测量这些值,请禁用“即时运行”,或运行版本构建(自动为非即时运行)。