[英]My app has successfully been installed on Android, but crashes as soon as it loads
我的apk被成功推送到我的Android设备上,这是华为Y6。 我的ant构建是成功的,就像我的ndk-build一样。 当我按下我的应用程序图标时,黑屏将被加载到手机上。 这会在撞击前持续几秒钟。 这是我的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文件夹中的drawable文件中。 我在此文件中插入了尺寸为500 x 726的图标。 现在,即使您的图像在Android设备上显示为图标,这实际上会导致应用程序崩溃 - 因此显示黑页。 实际上有五种尺寸的发射器图标,48×48(mdpi)72×72(hdpi)96×96(xhdpi)144×144(xxhdpi)192×192(xxxhdpi)512×512(Google Play商店)请注意,两者都有宽度和高度必须相同。 Anway在可绘制文件中放置了具有正确尺寸的图标,导致我的应用程序在几秒钟后不再崩溃。 但它并没有解决整个问题! 更多调试要做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.