Failed to install app first time in the device I got java.io.IOException: Failed to load asset path

问题描述 投票:0回答:2

每次我第一次安装应用程序时(我的意思是之前没有安装在设备中或卸载它并重新安装它时)我得到这个错误

E  Failed to open APK '/data/app/~~DMnzdQrGgYoMVn5mnSazHA==/com.mml.dummyapp_kotlin-7QhJglvK4ZbYX3k1LhSksg==/base.apk' I/O error
2022-09-26 16:12:40.817  8427-8606  android.vendin   pid-8427  E  Failed to open APK '/data/app/~~DMnzdQrGgYoMVn5mnSazHA==/com.mml.dummyapp_kotlin-7QhJglvK4ZbYX3k1LhSksg==/base.apk' I/O error
2022-09-26 16:12:40.821  8427-8606  ResourcesManager pid-8427  E  failed to add asset path '/data/app/~~DMnzdQrGgYoMVn5mnSazHA==/com.mml.dummyapp_kotlin-7QhJglvK4ZbYX3k1LhSksg==/base.apk'
java.io.IOException: Failed to load asset path /data/app/~~DMnzdQrGgYoMVn5mnSazHA==/com.mml.dummyapp_kotlin-7QhJglvK4ZbYX3k1LhSksg==/base.apk
 at android.content.res.ApkAssets.nativeLoad(Native Method)
 at android.content.res.ApkAssets.<init>(ApkAssets.java:291)
 at android.content.res.ApkAssets.loadFromPath(ApkAssets.java:140)
 at android.app.ResourcesManager.loadApkAssets(ResourcesManager.java:374)
 at android.app.ResourcesManager.access$000(ResourcesManager.java:67)
 at android.app.ResourcesManager$ApkAssetsSupplier.load(ResourcesManager.java:146)
 at android.app.ResourcesManager.createAssetManager(ResourcesManager.java:451)
 at android.app.ResourcesManager.createResourcesImpl(ResourcesManager.java:538)
 at android.app.ResourcesManager.findOrCreateResourcesImplForKeyLocked(ResourcesManager.java:587)
 at android.app.ResourcesManager.createResources(ResourcesManager.java:866)
 at android.app.ResourcesManager.getResources(ResourcesManager.java:938)
 at android.app.ActivityThread.getTopLevelResources(ActivityThread.java:2225)
 at android.app.ApplicationPackageManager.getResourcesForApplication(ApplicationPackageManager.java:1672)
 at android.app.ApplicationPackageManager.getDrawable(ApplicationPackageManager.java:1437)
 at android.app.ApplicationPackageManager.loadUnbadgedItemIcon(ApplicationPackageManager.java:2950)
 at android.app.ApplicationPackageManager.loadItemIcon(ApplicationPackageManager.java:2929)
 at android.content.pm.PackageItemInfo.loadIcon(PackageItemInfo.java:271)
 at android.app.ApplicationPackageManager.getApplicationIcon(ApplicationPackageManager.java:1501)
 at fva.a(PG:5)
 at fvg.l(PG:1)
 at qt.aci(PG:46)
 at fuj.k(PG:3)
 at fua.f(PG:3)
 at fua.i(PG:3)
 at fve.i(Unknown Source:0)
 at fvh.d(Unknown Source:10)
 at fvh.e(PG:3)
 at ftr.apply(PG:168)
 at ahmn.e(PG:2)
 at ahmo.run(PG:9)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 at jjd.run(PG:17)
 at java.lang.Thread.run(Thread.java:923)
2022-09-26 16:14:08.111 13577-13577 studio.deploy  pid-13577   E  InstallClient: Could not copy '/data/local/tmp/.studio/tmp/31c79e06/install_server' to '/data/data/com.mml.dummyapp_kotlin/code_cache/install_server-31c79e06: out='', err='run-as: unknown package: com.mml.dummyapp_kotlin
run-as: unknown package: com.mml.dummyapp_kotlin                     '
2022-09-26 16:14:08.129 13577-13577 studio.deploy  pid-13577     E  run-as: unknown package: com.mml.dummyapp_kotlin
2022-09-26 16:14:08.158 13577-13577 studio.deploy  pid-13577     E  Could not get package user id: run-as: unknown package: com.mml.dummyapp_kotlin
2022-09-26 16:14:08.181 13577-13577 studio.deploy  pid-13577     E  Could not find apks for this package: com.mml.dummyapp_kotlin

清单.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:name=".BaseApplication"
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:hardwareAccelerated="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="false"
        android:theme="@style/Theme.DummyAppKotlin"
        android:usesCleartextTraffic="true"
        tools:targetApi="33">
        <activity android:name=".ui.DetailsActivity" />
        <activity
            android:name=".ui.MainActivity"
            android:configChanges="orientation|screenSize"
            android:exported="true">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service
            android:name="com.mml.dummyapp_kotlin.util.MyFirebaseMessagingService"
            android:enabled="true"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>
        <!--
 Set custom default icon. This is used when no icon is set for incoming notification messages.

        -->
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_icon"
            android:resource="@drawable/activity_feed" />

        <!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-6982469603053718~7540735179" />

    </application>

</manifest>

然后当我打开应用程序菜单时它正常工作

android android-studio apk android-manifest ioexception
2个回答
3
投票

好吧,我没有找到这个错误的原因,但以下步骤帮助我修复了它

  1. 我按照这个答案中的步骤完全卸载AS

  2. 我还发现我使用了两个版本的 ADB,这可能会在安装应用程序时造成冲突,所以我决定卸载这两个版本(然后安装 android studio 中包含的最新版本)

注意: 旧的 ADB 路径在 %SystemDrive% db

  1. 重启windows后我安装了新版本的AS


0
投票

只是想在这里插话,几个月后虽然我当然是。在我自己的测试中,我发现我肯定认为是问题所在,尽管我也遵循上面@Dr Mido 提出的解决方案。

根本原因似乎源于以下一种或两种情况:

  1. 在模拟器之间切换(例如,Pixel 4 到 Pixel 6)而不让第一个完全停止。似乎有一些它正在尝试加载的基础 apk 的缓存版本,但已被重新启动破坏。我认为不明显的原因是缓存位于“设备”上,而不是系统硬盘上。

“废话!”我能听到一些说法。 “我从来没有切换过模拟器,但它仍然发生在我身上!”

  1. 好吧,首先,你真的应该在多个设备上进行测试。但搁置这一点,改变 BRANCHES 似乎具有相同的净效果。如果您正在使用某种版本控制,那么这与切换模拟器的行为相同(如果您没有使用任何形式的版本控制,那么我很抱歉:您无能为力)。还是有疑问?在模拟器上做一个完整的擦除数据,完全关闭它,冷启动它,然后重新安装。

据我所知,错误并没有造成任何伤害(除了 yanno,在产品演示期间展示了一堵红色文字墙),但是如果有人完全关闭他们的模拟器,请遵循上面 Mido 博士的出色建议,并且确保模拟器的所有后续执行都有时间完全上下假脱机,它应该停止出现(或者至少,根据我自己的测试,它是如何计算出来的)。

希望这对某人有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.