我的应用已成功安装在 Android 上,但加载后立即崩溃

My app has successfully been installed on Android, but crashes as soon as it loads

本文关键字:加载 崩溃 应用 成功 安装 Android 我的      更新时间:2023-10-16

我的apk已成功推送到我的Android设备上,这是华为Y6。我的蚂蚁构建成功了,我的 ndk 构建也是如此。当我按下我的应用程序图标时,手机上会加载黑屏。这在崩溃之前持续几秒钟。这是我的AndroidManifest的副本.xml

  <?xml version="1.0" encoding="utf-8"?>
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.tutorial.game"
            android:versionCode="1"
            android:versionName="1.0"
            android:installLocation="auto">
  <!-- Android 2.3.3 -->
  <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="25" />
  <!-- OpenGL ES 3.0 -->
  <uses-feature android:glEsVersion="0x00030000" />
  <!-- Allow writing to external storage -->
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application android:label="@string/app_name"
             android:icon="@drawable/ic_launcher"
             android:allowBackup="true"
             android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
             android:debuggable="true"
             android:hardwareAccelerated="true" >
    <activity android:name="HelloSDL2Activity"
              android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                    android:configChanges="orientation|keyboard|keyboardHidden|screenLayout"
              android:screenOrientation="sensorLandscape"
              android:launchMode="singleTask" android:hardwareAccelerated="true" android:enabled="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
     </activity>
  </application>
</manifest> 

我从命令行运行它来创建日志文件:

adb logcat -V long *:W *:E *:F > log.txt

以下是记录的内容片段:

  [ 03-31 20:32:36.129   820:28542 W/ActivityManager ]
  Force finishing activity 1 com.tutorial.game/.HelloSDL2Activity

  [ 03-31 20:32:36.239   820:28542 W/ActivityManager ]
  Exception thrown during pause
  android.os.TransactionTooLargeException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:496)
at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:715)
at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:1012)
at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:3393)
at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:3223)
at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:3026)
at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:12440)
at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:12337)
at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:13066)
at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:12547)
at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86)

谁能理解这些。我一直在谷歌上搜索如何理解日志文件消息,但收效甚微。

这是日志文件中的另一个片段:

 [ 03-31 20:37:05.049   820:29426 W/ActivityManager ]
 Exception thrown during pause
android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:496)
at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:715)
at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:1012)
at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:3393)
at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:3223)
at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:3026)
at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:12440)
at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:12337)
at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:13066)
at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:12547)
at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86)

您正在获得TransactionTooLargeException,这可能是因为您正在尝试加载5.25mb的数据。

通过意图/捆绑包共享数据使用绑定器,其实例上的最大限制为 1mb。

您的屏幕变黑,因为您可能在创建应用程序时尝试执行繁重的任务。

因此,我设法解决的第一个错误与图标有关。 icon.png 位于 JNI 文件夹中的可绘制文件中。我在此文件中插入了一个尺寸为 500 x 726 的图标。现在,即使您将图像显示为Android设备上的图标,这实际上也会导致应用程序崩溃 - 因此显示黑页。实际上有五种大小的启动器图标,48 × 48 (MDPI(72 × 72 (HDPI(96 × 96 (xhdpi(144 × 144 (xxhdpi(192 × 192 (xxxhdpi(512 × 512(谷歌播放商店(请注意,宽度和高度的大小必须相同。安利在可绘制文件中放置了一个尺寸正确的图标,导致我的应用程序在几秒钟后不再崩溃。然而,它并没有解决整个问题!更多调试工作要做。