2017-04-21 29 views
5

Zajmuję grę używając cocos2d-x mam powodzeniem grać go na iOS, MacOS i win32 ale w tej chwili mam problem próbuje go uruchomić na Androidzie. Kompilacja i instalacja zostały zakończone Po prostu nie mogę go uruchomić z powodu problemu, którego nie rozumiem/nie widzę. Czy ktoś mógłby mi pomóc lub wskazać na ten problem?Cocos2d-x zainstalowana aplikacja nie może zostać uruchomiony na android

Informacje: testowanie na prawdziwym urządzeniu, wersja 4.4.4. Systemu Android, cocos2d-x-3.13.1, C++, target 4.4.2, eclipse Neon.1a Release (4.6.1), mac os.

Jeśli wymagane są dodatkowe informacje, mogę je podać.

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.companyName.gameName" 
    android:versionCode="1" 
    android:versionName="1.0" 
    android:installLocation="auto"> 

<uses-sdk android:minSdkVersion="19"/> 
<uses-feature android:glEsVersion="0x00020000" /> 

<application android:label="@string/app_name" 
      android:icon="@drawable/icon"> 

    <!-- Tell Cocos2dxActivity the name of our .so --> 
    <meta-data android:name="android.app.lib_name" 
       android:value="MyGame" /> 

    <activity android:name="org.cocos2dx.cpp.AppActivity" 
       android:label="@string/app_name" 
       android:screenOrientation="landscape" 
       android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
       android:configChanges="orientation|keyboardHidden|screenSize"> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

<supports-screens android:anyDensity="true" 
        android:smallScreens="true" 
        android:normalScreens="true" 
        android:largeScreens="true" 
        android:xlargeScreens="true"/> 

<uses-permission android:name="android.permission.INTERNET"/> 
<permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature"/> 

LogCat (ostrzegam, błąd, twierdzą):

04-21 09:49:49.917: E/Watchdog(596): [email protected] 1245 
04-21 09:49:52.780: W/AlarmManager(596): Set alarm: type= 3 triggerAtTime= 143810266 , called by : com.google.android.gms, intent:Intent { cmp=com.google.android.gms/.lockbox.LockboxAlarmReceiver } 
04-21 09:49:59.997: W/AlarmManager(596): Set alarm: type= 3 triggerAtTime= 143817481 , called by : android, intent:Intent { act=android.intent.action.TIME_TICK flg=0x50000000 } 
04-21 09:50:00.157: W/ResourceType(2304): Failure getting entry for 0x010400da (t=3 e=218) in package 0 (error -75) 
04-21 09:50:00.157: E/accuweather(2304): [AccuTab_Magagine]>>> UIMK:1463 [0:0] time : 08:50 
04-21 09:50:00.177: W/ResourceType(2304): Failure getting entry for 0x010400da (t=3 e=218) in package 0 (error -75) 
04-21 09:50:19.917: E/Watchdog(596): [email protected] 1246 
04-21 09:50:36.803: W/ContextImpl(25935): Calling a method in the system process without a qualified user: android.app.ContextImpl.startActivity:1255 android.content.ContextWrapper.startActivity:330 android.content.ContextWrapper.startActivity:330 com.samsung.android.MtpApplication.MtpReceiver$3.handleMessage:786 android.os.Handler.dispatchMessage:102 
04-21 09:50:36.813: W/ContextImpl(25935): Calling a method in the system process without a qualified user: android.app.ContextImpl.startActivity:1267 android.app.ContextImpl.startActivity:1256 android.content.ContextWrapper.startActivity:330 android.content.ContextWrapper.startActivity:330 com.samsung.android.MtpApplication.MtpReceiver$3.handleMessage:786 
04-21 09:50:37.033: W/ActivityManager(596): mDVFSHelper.acquire() 
04-21 09:50:37.043: E/MTPRx(25935): started activity for popup 
04-21 09:50:37.154: W/ApplicationPackageManager(25935): getCSCPackageItemText() 
04-21 09:50:37.204: E/SettingsReceiverActivity(25935): PREF_DONT_ASK_AGAIN : true 
04-21 09:50:37.214: W/InputMethodManagerService(596): Window already focused, ignoring focus gain of: [email protected] attribute=null, token = [email protected] 
04-21 09:50:38.084: W/ApplicationPackageManager(596): getCSCPackageItemText() 
04-21 09:50:40.036: W/ActivityManager(596): mDVFSHelper.release() 
04-21 09:50:49.916: E/Watchdog(596): [email protected] 1247 
04-21 09:50:52.789: W/AlarmManager(596): Set alarm: type= 3 triggerAtTime= 144530276 , called by : android, intent:Intent { act=android.net.ConnectivityService.action.PKT_CNT_SAMPLE_INTERVAL_ELAPSED flg=0x4000000 } 
04-21 09:50:52.849: W/AlarmManager(596): Set alarm: type= 3 triggerAtTime= 143870336 , called by : com.google.android.gms, intent:Intent { cmp=com.google.android.gms/.lockbox.LockboxAlarmReceiver } 
04-21 09:50:59.996: W/AlarmManager(596): Set alarm: type= 3 triggerAtTime= 143877482 , called by : android, intent:Intent { act=android.intent.action.TIME_TICK flg=0x50000000 } 
04-21 09:51:00.076: W/ResourceType(2304): Failure getting entry for 0x010400da (t=3 e=218) in package 0 (error -75) 
04-21 09:51:00.076: E/accuweather(2304): [AccuTab_Magagine]>>> UIMK:1463 [0:0] time : 08:51 
04-21 09:51:00.096: W/ResourceType(2304): Failure getting entry for 0x010400da (t=3 e=218) in package 0 (error -75) 
04-21 09:51:03.719: E/memtrack(26128): Couldn't load memtrack module (No such file or directory) 
04-21 09:51:03.719: E/android.os.Debug(26128): failed to load memtrack module: -2 
04-21 09:51:03.900: W/ActivityManager(596): No content provider found for permission revoke: file:///data/local/tmp/MyGame.apk 
04-21 09:51:19.915: E/Watchdog(596): [email protected] 1248 
04-21 09:51:30.275: W/ApplicationPackageManager(25304): getCSCPackageItemText() 
04-21 09:51:42.527: W/ActivityManager(596): No content provider found for permission revoke: file:///data/local/tmp/MyGame.apk 
04-21 09:51:43.588: E/PackageManager(596): parse pkg : /data/app/vmdl276537072.tmp 
04-21 09:51:43.618: E/PackageManager(596): dexopt start 
04-21 09:51:44.980: E/PackageManager(596): dexopt end 
04-21 09:51:49.915: E/Watchdog(596): [email protected] 1249 
04-21 09:51:53.068: W/AlarmManager(596): Set alarm: type= 3 triggerAtTime= 143930557 , called by : com.google.android.gms, intent:Intent { cmp=com.google.android.gms/.lockbox.LockboxAlarmReceiver } 
04-21 09:51:56.111: W/PackageManager(596): verifying app can be installed or not 
04-21 09:51:56.331: W/PackageManager(596): Not granting permission android.permission.INSTALL_LOCATION_PROVIDER to package com.companyName.GameName (protectionLevel=18 flags=0x8be46) 
04-21 09:51:56.511: W/ApplicationPackageManager(596): getCSCPackageItemText() 
04-21 09:51:56.561: W/ApplicationPackageManager(596): getCSCPackageItemText() 
04-21 09:51:56.771: W/ApplicationPackageManager(596): getCSCPackageItemText() 
04-21 09:51:56.781: W/ApplicationPackageManager(930): getCSCPackageItemText() 
04-21 09:51:56.781: W/ApplicationPackageManager(930): getCSCPackageItemText() 
04-21 09:51:56.781: E/SamsungIME(1471): mOCRHelper is null 
04-21 09:51:56.941: W/ApplicationPackageManager(951): getCSCPackageItemText() 
04-21 09:51:58.343: W/ApplicationPackageManager(1195): getCSCPackageItemText() 
04-21 09:51:58.453: E/EdmStorageProvider(596): Admin not in database, something went wrong 
04-21 09:51:59.103: W/AlarmManager(596): Set alarm: type= 0 triggerAtTime= 1492761134119 , called by : com.android.vending, intent:Intent { cmp=com.android.vending/com.google.android.finsky.services.ContentSyncService } 
04-21 09:51:59.344: W/IcingInternalCorpora(1352): getNumBytesRead when not calculated. 
04-21 09:51:59.354: E/memtrack(26153): Couldn't load memtrack module (No such file or directory) 
04-21 09:51:59.354: E/android.os.Debug(26153): failed to load memtrack module: -2 
04-21 09:51:59.504: E/Finsky(25304): [1] com.google.android.finsky.wear.bl.a(847): onConnectionFailed: ConnectionResult{statusCode=API_UNAVAILABLE, resolution=null, message=null} 
04-21 09:51:59.814: W/ActivityManager(596): mDVFSHelper.acquire() 
04-21 09:51:59.994: W/AlarmManager(596): Set alarm: type= 3 triggerAtTime= 143937482 , called by : android, intent:Intent { act=android.intent.action.TIME_TICK flg=0x50000000 } 
04-21 09:52:00.215: W/ActivityManager(596): Permission Denial: getCurrentUser() from pid=26179, uid=10129 requires android.permission.INTERACT_ACROSS_USERS 
04-21 09:52:00.245: W/ApplicationPackageManager(26179): getCSCPackageItemText() 
04-21 09:52:00.275: W/ActivityManager(596): Permission Denial: getCurrentUser() from pid=26179, uid=10129 requires android.permission.INTERACT_ACROSS_USERS 
04-21 09:52:00.615: E/JniHelper(26179): Failed to find static java method. Class name: (null), method name: getCocos2dxPackageName, signature:()Ljava/lang/String; 
04-21 09:52:00.615: W/ResourceType(2304): Failure getting entry for 0x010400da (t=3 e=218) in package 0 (error -75) 
04-21 09:52:00.625: A/libc(26179): Fatal signal 11 (SIGSEGV) at 0xfffffff4 (code=1), thread 26179 (peFromTheIsland) 
04-21 09:52:00.635: E/accuweather(2304): [AccuTab_Magagine]>>> UIMK:1463 [0:0] time : 08:52 
04-21 09:52:00.645: W/ResourceType(2304): Failure getting entry for 0x010400da (t=3 e=218) in package 0 (error -75) 
04-21 09:52:00.865: W/SQLiteConnectionPool(1352): A SQLiteConnection object for database '+data+data+com_google_android_gms+databases+metrics_db' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed. 
04-21 09:52:00.875: W/SQLiteConnectionPool(1352): A SQLiteConnection object for database '+data+data+com_google_android_gms+databases+help_responses_db_18' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed. 
04-21 09:52:00.875: W/SQLiteConnectionPool(1352): A SQLiteConnection object for database '+data+data+com_google_android_gms+databases+auto_complete_suggestions_db' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed. 
04-21 09:52:00.875: W/ApplicationPackageManager(1352): getCSCPackageItemText() 
04-21 09:52:01.165: W/ActivityManager(596): Force finishing activity com.companyName.GameName/org.cocos2dx.cpp.AppActivity 
04-21 09:52:01.206: W/ApplicationPackageManager(596): getCSCPackageItemText() 
04-21 09:52:01.216: W/ApplicationPackageManager(596): getCSCPackageItemText() 
04-21 09:52:01.516: E/android.os.Debug(596): [email protected] > dumpstate -k -t -z -d -m 26179 -o /data/log/dumpstate_app_error 
04-21 09:52:01.596: W/ContextImpl(596): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1372 com.android.server.analytics.data.collection.application.CrashAnrDetector.broadcastEvent:296 com.android.server.analytics.data.collection.application.CrashAnrDetector.processDropBoxEntry:254 com.android.server.analytics.data.collection.application.CrashAnrDetector.access$100:60 com.android.server.analytics.data.collection.application.CrashAnrDetector$1.onReceive:102 
04-21 09:52:01.716: W/ActivityManager(596): Activity pause timeout for ActivityRecord{425a2d00 u0 com.companyName.GameName/org.cocos2dx.cpp.AppActivity t89 f} 
04-21 09:52:01.906: W/ActivityManager(596): mDVFSHelper.release() 
04-21 09:52:02.577: W/ApplicationPackageManager(596): getCSCPackageItemText() 

LogCat (filtrowane dla aplikacji (Full)):

04-21 09:52:00.185: D/ActivityThread(26179): handleBindApplication:com.companyName.gameName 
04-21 09:52:00.245: W/ApplicationPackageManager(26179): getCSCPackageItemText() 
04-21 09:52:00.265: D/DisplayManager(26179): DisplayManager() 
04-21 09:52:00.305: D/dalvikvm(26179): Trying to load lib /data/app-lib/com.companyName.gameName-1/libMyGame.so 0x41ccab70 
04-21 09:52:00.615: E/JniHelper(26179): Failed to find static java method. Class name: (null), method name: getCocos2dxPackageName, signature:()Ljava/lang/String; 
04-21 09:52:00.625: A/libc(26179): Fatal signal 11 (SIGSEGV) at 0xfffffff4 (code=1), thread 26179 (peFromTheIsland) 
+0

dzwonisz 'metoda getCocos2dxPackageName' z C++ poprzez JNI? – Aryan

+0

@AbhishekAryan Nie sądzę, że to nazywam. – Darvydas

+0

@AhhishekAryan Nie napisałem tego. Czy to możliwe, ponieważ używam sqlite lub czegoś z nazwą pakietu? – Darvydas

Odpowiedz

0

Kwestia ta była spowodowane przez externUserdefaults w Constants. Aby rozwiązać to zmieniłem (Constants.cpp):

cocos2d::UserDefault *userDefaults = cocos2d::UserDefault::getInstance(); 

Constants.hpp:

extern cocos2d::UserDefault *userDefaults; 

do:

Constants.cpp

cocos2d::UserDefault *userDefaults; 

oraz (AppDelegate.cpp)

userDefaults = cocos2d::UserDefault::getInstance(); 

nie zrobiliśmy żadnych zmian do Constants.hpp. Uprawnienia nie są wymagane, a także nie było problemu z nazwą pakietu.

wiadomości logcat nie był pomocny ...

+0

Czy wiesz, jaki jest problem w 'extern cocos2d :: UserDefault * userDefaults;' – Aryan

+0

chcesz usunąć 'INSTALL_LOCATION_PROVIDER' i dodanie uprawnienia' INTERACT_ACROSS_USERS_FULL' nie jest dla ciebie przydatne? – Aryan

+0

@AbhishekAryan Śledziłem ten problem w nowym projekcie bez tych uprawnień i zadziałało. Właśnie powiedziałem, że błędy LogCat nie były w ogóle pomocne. Problem był z ** cocos2d :: UserDefault :: getInstance(); ** w pliku ** Constants.cpp **, więc po prostu przeniosłem go do ** AppDelegate **, ale nie wiem, dlaczego tak się stało. – Darvydas

1
<uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER"/> 

usuń to uprawnienie z pliku Manifest. możesz używać tylko uprawnień: normal i Dangerous.

Zewnętrzny programista nie może udzielić swojemu wnioskowi zgody wymaganej do zainstalowania nowego dostawcy lokalizacji (android.permission.INSTALL_LOCATION_PROVIDER). Tylko producenci OEM mogą instalować nowego dostawcę lokalizacji.

EDIT

<permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature"/> 

EDIT

check nazwa pakietu widzę com.companyName.gameName w AndroidManifest.xml, używasz aplikacji przy użyciu pakietu com.companyName.GameName i AppActivity jest org.cocos2dx.cpp

+0

Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została [przeniesiona na czat] (http://chat.stackoverflow.com/rooms/143612/discussion-on-answer-by-abhishek-aryan-cocos2d-x-installed-application-cant-be). –