android大小,Android 获取应用的大小

最近在搭建兼容性性能平台,目前架构图还是内部才能够看到,具体之后做完我会开放出来。

其中一个就是需要去获取Android应用的大小,我们现在自身的apk还是会做的尽量小,但是用了一段时间之后apk的占用量就会越来越大,自然这个也是性能测试需要监控的数据之一。

在这里我们用到了如下的:

android1.png

android1

核心代码:

public class PkgSizeObserver extends IPackageStatsObserver.Stub {

@Override

public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)

throws RemoteException {

// TODO Auto-generated method stub

cachesize = pStats.cacheSize;

datasize = pStats.dataSize;

codesize = pStats.codeSize;

totalsize = cachesize + datasize + codesize;

Log.i(TAG, "cachesize--->" + cachesize + " datasize---->"

+ datasize + " codeSize---->" + codesize);

}

}

以及

public void queryPacakgeSize(String pkgName) throws Exception {

if (pkgName != null) {

PackageManager pm = getPackageManager();

try {

Method getPackageSizeInfo = pm.getClass().getDeclaredMethod(

"getPackageSizeInfo", String.class,

IPackageStatsObserver.class);

getPackageSizeInfo.invoke(pm, pkgName,

, new PkgSizeObserver());

} catch (Exception ex) {

Log.e(TAG, "NoSuchMethodException");

ex.printStackTrace();

throw ex;

}

}

}

接着就发现一个问题,2.3的版本的确可以用。但是4.2以及以上版本就报错了。经过调查发现 PackageManager.getPackageSizeInfo(String packageName, IPackageStatsObserver observer)不可用,改为PackageManager.getPackageSizeInfo(String packageName, int userHandle, IPackageStatsObserver observer)。

所以我们代码需要做如下的修改:

public void queryPacakgeSize(String pkgName) throws Exception {

if (pkgName != null) {

PackageManager pm = getPackageManager();

try {

Method getPackageSizeInfo = pm.getClass().getDeclaredMethod(

- "getPackageSizeInfo", String.class,

+ "getPackageSizeInfo", String.class, int.class,

IPackageStatsObserver.class);

getPackageSizeInfo.invoke(pm, pkgName,

- , new PkgSizeObserver());

+ Process.myUid() / 100000, new PkgSizeObserver());

} catch (Exception ex) {

Log.e(TAG, "NoSuchMethodException");

ex.printStackTrace();

throw ex;

}

}

}

然后我install到了Nexus5 Android5.0上面,点击一个应用之后看到如下Log,说明成功了~~~

android2.png

android2

这个会作为我监听apk中的一个模块存在~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值