小编the*_*ace的帖子

Android PackageStats提供负值

我正在使用PackageStats并在打印PackageStats的codeSize,cacheSize,dataSize时,一些数据将变为负数.

几个问题:

  • 这怎么可能?
  • 考虑到apk大小约为50MB,codeSize可能是负面的情况是什么?
  • 可以可靠地用于提取上述信息的任何其他方式?

另外,对于Android N,它给了我"NoSuchMethodException".所以,

  • 它是为Android N删除还是有某种方式使用它?
  • 任何可以帮助我计算上述尺寸的替代品?

码:

PackageManager packageManager = context.getPackageManager();
Method myUserId = UserHandle.class.getDeclaredMethod("myUserId");
int userID = (Integer) myUserId.invoke(packageManager);

Method getPackageSizeInfo = packageManager.getClass().getDeclaredMethod("getPackageSizeInfo", String.class, int.class,
IPackageStatsObserver.class);
getPackageSizeInfo.invoke(packageManager, context.getPackageName(), userID, new IPackageStatsObserver.Stub() {

    @Override
    public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {
        long codeSize = pStats.codeSize / MB; //long MB = 1024*1024;
        long cacheSize = pStats.cacheSize / MB;
        long dataSize = pStats.dataSize / MB;
        long appSize = codeSize + cacheSize + dataSize;
    };
}
Run Code Online (Sandbox Code Playgroud)

java android android-7.0-nougat

39
推荐指数
1
解决办法
685
查看次数

导入期间自动附加源

我有一个包含多个模块的项目,一个模块使用其他模块功能.因此,具有依赖项的模块具有编译依赖项中的jar文件.因此,当我尝试转到源代码时,它会转到jar中的.class文件.相反,我希望它转到依赖模块的.java文件.

一种方法是手动执行AttachSources.

因为,我有多个具有多个依赖关系的模块;

  • 有没有办法在导入过程中通过某种方式执行它,比如在每个模块下都有一个源位置的sourcePath.txt.

项目结构:

项目A:

  • ModuleAA(取决于ModulesAB)
  • ModuleAB(取决于ModulesAC)
  • ModuleAC

还有更多模块.

android android-studio android-gradle-plugin

6
推荐指数
1
解决办法
91
查看次数

Android应用程序因ResourceNotFoundException而崩溃

我最近检查了我的GP崩溃日志,我经常收到这个callstack.请你帮助我好吗.

一些东西:

  • failed to add asset path有时可见/data/app/com.xxx.xxx.xxx-x/base.apk,有时/mnt/asec/com.xxx.xxx.xxx-x/base.apk.
  • 设备Android版本(报告的地方)与Android 4.4不同.到Android 7.0
  • 在GP控制台中,Android version显示Android 7.0所有崩溃,但设备列表包含Android version6.0,5.0等设备,目前还不清楚.
  • 我有两个共享用户ID的应用程序,比如包名P1,P2.对于P1,failed to add asset path有时显示/data/app/P2,有时/mnt/asec/P1.这不正确,是什么原因造成的?

调用堆栈:

java.lang.RuntimeException: Unable to create BackupAgent android.app.backup.FullBackupAgent: android.content.res.Resources$NotFoundException: failed to add asset path data/app/com.P2.xxx/base.apk
    at android.app.ActivityThread.handleCreateBackupAgent(ActivityThread.java:3452)
    at android.app.ActivityThread.-wrap5(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1796)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6688)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Caused by: android.content.res.Resources$NotFoundException: failed to add asset path /data/app/com.P2.xxx/base.apk
    at …
Run Code Online (Sandbox Code Playgroud)

crash android callstack android-resources

6
推荐指数
1
解决办法
4507
查看次数

Apk的Aapt转储标记未列出活动别名的任何可启动活动

我最近通过以下更改更改了AndroidManifest.xml:

  • 将我的主启动器活动的名称更改为NewMainActivity。
  • 添加了活动别名,其中旧活动名称指向新活动。

现在,当我这样做时aapt dump badging <apk-path>| grep launchable-activity,没有输出。在上述更改之后发生了这种情况。

  <activity
        android:name="com.a.b.NewMainActivity"
        ....
        android:launchMode="singleTask" >
   </activity>
   <activity-alias
        android:name="com.a.b.OldMainActivity"
        android:launchMode="singleTask" 
        android:targetActivity="com.a.b.NewMainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity-alias>
Run Code Online (Sandbox Code Playgroud)
  • 我如何解决它?
  • 是否有aapt的任何新版本(我正在使用Android Asset Packaging Tool,v0.2-3051502)来解决此问题?

android aapt android-activity-alias

5
推荐指数
1
解决办法
242
查看次数