2017-04-01 17 views
1

My apkがHuawei Y6のAndroidデバイスに正常にプッシュされました。私のantビルドは成功しています。私のndk-buildもそうです。私のアプリのアイコンを押すと、黒い画面が電話機にロードされます。これはクラッシュする前に数秒間続きます。ここで私は、ログファイルを作成するには、コマンドラインからこれを走った私のAndroidManifest.xml私のアプリはAndroidに正常にインストールされましたが、ロードされるとすぐにクラッシュします

<?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) 

誰もがこれを理解することができます。私はログファイルのメッセージを理解する方法をGoogleから探してきましたが、ほとんど成功しませんでした。ここで

は、ログファイルから別の抜粋です:

[ 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) 
+0

デバッグしやすい場所でロジックをテストしましたか? – user4581301

+0

トランザクションが大きすぎると、Intent's Bundleにあまりにも多くのデータを詰め込んだことを意味します。しかし、これは主な原因よりも二次的なクラッシュログのように見えますが、それ以上はないのでしょうか? –

+0

ここに、残りのログファイルを含むリンクhttp://www.filehosting.org/file/details/653849/game18.txt –

答えて

0

あなたがデータの5.25メガバイトをロードしようとしているので、可能性がありTransactionTooLargeExceptionを得ています。

インテント/バンドルを介してデータを共有すると、インスタンスの最大限度が1MBのバインダーが使用されます。

アプリケーションが作成されている間に大量のタスクを実行しようとしている可能性があるため、画面が黒くなっています。

+0

このデータを共有できる別の方法がありますか、またはlazy_initializationを使用してプログラムをロードするのに必要な時間と作業を減らした方が良いでしょうか? –

+0

私のAPKのサイズは私のアンドロイドデバイスにプッシュされます12.87メガバイトです。バインダーが対応できないデータである可能性がありますか? –

0

私が解決できた最初のバグは、アイコンと関係することです。 icon.pngは、jniフォルダにある描画可能ファイルにあります。このファイルに500×726の寸法のアイコンを挿入しました。今ではあなたのイメージがあなたのAndroidデバイス上にアイコンとして表示されても、実際にはアプリがクラッシュするため、黒いページが表示されます。ランチャーアイコンの5つのサイズ、 48×48(MDPI) 72×72(hdpi) 96×96(xhdpi) 144×144(xxhdpi) 192×192(xxxhdpi) 512×512(Googleが実際に存在しますPlayストア) 幅と高さが同じサイズでなければならないことに注意してください。アンウェイで図面ファイルに正しい次元のアイコンを配置すると、数秒後に私のアプリがクラッシュすることはなくなりました。それはしかし、全体の問題を解決していない!より多くのデバッグ

関連する問題