【发布时间】:2017-04-01 20:14:55
【问题描述】:
我的 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
这里是记录的 sn-p:
[ 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)
任何人都可以理解这些。我一直在 Google 上搜索如何理解日志文件消息,但收效甚微。
这是来自日志文件的另一个 sn-p:
[ 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)
【问题讨论】:
-
您是否在更容易调试的 PC 上测试了逻辑?
-
事务太大意味着你在 Intent 的 Bundle 中塞入了太多数据。但这看起来更像是次要崩溃日志,而不是主要原因,你确定没有更多吗?
-
这里是包含日志文件其余部分的链接filehosting.org/file/details/653849/game18.txt
-
我已经在 PC 上调试了应用程序,一切正常。唯一真正的问题是使用 Visual Studio 的加载时间非常慢。我正在尝试对此进行优化。但即使我修改程序以便只加载一个纹理,当我将它移植到 Android 时它仍然会崩溃。
-
我的纹理文件是 5.25mb,在我的程序开始时所有的纹理都被加载和初始化。这可能是问题吗?
标签: android c++ ant opengl-es android-ndk