2017-04-01 1 views
1

내 APK가 Huawei Y6 인 Android 기기에 성공적으로 푸시되었습니다. 내 개미 빌드가 성공한 것처럼 내 개미 빌드입니다. 내 앱 아이콘을 누르면 검정색 화면이 휴대 전화에로드됩니다. 이것은 충돌하기 몇 초간 지속됩니다. 여기내 앱이 Android에 성공적으로 설치되었지만로드하자마자 충돌합니다.

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) 
는 여기가 로그 파일을 작성하려면 명령 줄에서이 작업을 실행

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

내 AndroidManifest.xml에의 복사본입니다

아무도 이것에 대해 이해할 수 있습니까? Google에서 로그 파일 메시지를 이해하는 방법을 찾고 있었지만 거의 성공하지 못했습니다. 당신은 데이터의 5.25mb를로드하려고하기 때문에 될 수 TransactionTooLargeException을 받고

[ 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

디버깅하기 쉬운 PC에서 로직을 테스트 해 보셨습니까? – user4581301

+0

거래가 너무 너 Int다는 것은 Intent 's Bundle에 너무 많은 데이터를 채웠다는 것을 의미합니다. 그러나 이것은 기본 원인보다 2 차 충돌 로그와 비슷해 보이지만 더 많지는 않을까요? –

+0

여기에 나머지 로그 파일이 포함 된 링크 http://www.filehosting.org/file/details/653849/game18.txt –

답변

0

: 여기

는 로그 파일에서 다른 조각이다.

인 텐트/번들을 통한 데이터 공유는 최대 한도가 1MB 인 바인더를 사용합니다.

애플리케이션이 생성되는 동안 과중한 작업을 수행하려고 할 수 있으므로 화면이 검게 나타납니다.

+0

확인. 이 데이터를 공유 할 수있는 다른 방법이 있습니까? 아니면 lazy_initialization을 사용하여 프로그램을로드하는 데 필요한 시간과 작업을 줄이는 것이 더 좋을까요? –

+0

안드로이드 장치에 푸시되는 apk의 크기는 12.87MB입니다. 바인더가 처리 할 수없는 데이터 일 수 있습니까? –

0

그래서 내가 해결할 수 있었던 첫 번째 버그는 아이콘과 관련이 있습니다. icon.png는 jni 폴더에있는 드로어 블 파일에 있습니다. 이 파일에 500 x 726 크기의 아이콘이 삽입되었습니다. 이제 이미지가 Android 기기의 아이콘으로 표시 되더라도 앱이 실제로 중단되어 검정 페이지가 표시됩니다. 런처 아이콘의 다섯 개 크기, 48 × 48 (MDPI) 72 × 72 (hdpi에) 96 × 96 (xhdpi) 144 × 144 (xxhdpi) 192 × 192 (xxxhdpi) 512 × 512 (구글은 실제로있다 Play 스토어) 너비와 높이가 모두 같은 크기 여야합니다. 어웨이가 드로어 블 파일에 올바른 크기의 아이콘을 배치하면 몇 초 후에 내 앱이 더 이상 충돌하지 않게됩니다. 그러나 전체 문제를 해결하지는 못했습니다! 더 많은 디버깅이 필요합니다.

관련 문제