Приложение PhoneGap падает при установке на Android, но работает на iOS
Я создал ключ для Android и подписал свое приложение с ним через сборку phonegap. Когда я пытаюсь запустить его, приложение вылетает. Из logcat я обнаружил, что существует некоторая проблема с правами доступа на уровне системы:
07-12 17:04:34.495 2714-3126/? W/ActivityManager﹕ Permission Denial: getCurrentUser() from pid=15691, uid=10194 requires android.permission.INTERACT_ACROSS_USERS
Вот полный logcat моего приложения:
07-12 17:04:34.360 15691-15691/? I/SELinux﹕ Function: selinux_android_load_priority [0], There is no sepolicy file.
07-12 17:04:34.360 15691-15691/? I/SELinux﹕ Function: selinux_android_load_priority [1], There is no sepolicy version file.
07-12 17:04:34.360 15691-15691/? I/SELinux﹕ Function: selinux_android_load_priority , priority version is VE=SEPF_SM-T800_4.4.2_0018
07-12 17:04:34.360 15691-15691/? I/SELinux﹕ selinux_android_seapp_context_reload: seapp_contexts file is loaded from /seapp_contexts
07-12 17:04:34.360 15691-15691/? E/SELinux﹕ [DEBUG] seapp_context_lookup: seinfoCategory = default
07-12 17:04:34.365 15691-15691/? E/dalvikvm﹕ >>>>> Normal User
07-12 17:04:34.365 15691-15691/? E/dalvikvm﹕ >>>>> com.phonegap.helloworld [ userId:0 | appId:10194 ]
07-12 17:04:34.365 15691-15691/? E/SELinux﹕ [DEBUG] seapp_context_lookup: seinfoCategory = default
07-12 17:04:34.385 15691-15691/? I/dalvikvm﹕ Enabling JNI app bug workarounds for target SDK version 7...
07-12 17:04:34.495 2714-3126/? W/ActivityManager﹕ Permission Denial: getCurrentUser() from pid=15691, uid=10194 requires android.permission.INTERACT_ACROSS_USERS
07-12 17:04:34.515 15691-15691/? I/PersonaManager﹕ getPersonaService() name persona_policy
07-12 17:04:34.545 15691-15691/? I/CordovaLog﹕ Changing log level to DEBUG(3)
07-12 17:04:34.545 15691-15691/? W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x416eac08)
07-12 17:04:34.550 15691-15691/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.phonegap.helloworld, PID: 15691
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.phonegap.helloworld/com.phonegap.helloworld.ICT}: java.lang.NumberFormatException: Invalid long: ""
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2404)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2464)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5653)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NumberFormatException: Invalid long: ""
at java.lang.Long.invalidLong(Long.java:124)
at java.lang.Long.decode(Long.java:142)
at org.apache.cordova.CordovaPreferences.copyIntoIntentExtras(CordovaPreferences.java:142)
at org.apache.cordova.CordovaActivity.loadConfig(CordovaActivity.java:235)
at org.apache.cordova.CordovaActivity.onCreate(CordovaActivity.java:202)
at com.phonegap.helloworld.ICTSandBox.onCreate(ICTSandBox.java:30)
at android.app.Activity.performCreate(Activity.java:5539)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2368)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2464)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5653)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
07-12 17:04:36.345 15691-15691/? I/Process﹕ Sending signal. PID: 15691 SIG: 9
07-12 17:04:36.360 2714-3506/? I/ActivityManager﹕ Process com.phonegap.helloworld (pid 15691) (adj 9) has died.
Вот мой config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
id = "com.phonegap.helloworld"
versionCode=""
version = "1.0.0">
<name>ICT Sand Box</name>
<description>
ICT </description>
<author href="http://phonegap.com" email="support@phonegap.com">
PhoneGap Team
</author>
<preference name="phonegap-version" value="3.7.0" />
<preference name="orientation" value="default" />
<preference name="fullscreen" value="true" />
<preference name="target-device" value="universal" />
<preference name="webviewbounce" value="true" />
<preference name="prerendered-icon" value="true" />
<preference name="stay-in-webview" value="true" />
<preference name="ios-statusbarstyle" value="black-opaque" />
<preference name="detect-data-types" value="true" />
<preference name="exit-on-suspend" value="true" />
<preference name="show-splash-screen-spinner" value="true" />
<preference name="auto-hide-splash-screen" value="true" />
<preference name="EnableViewportScale" value="true" />
<preference name="MediaPlaybackRequiresUserAction" value="true" />
<preference name="AllowInlineMediaPlayback" value="true" />
<preference name="BackupWebStorage" value="cloud" />
<preference name="TopActivityIndicator" value="gray" />
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
<preference name="HideKeyboardFormAccessoryBar" value="true" />
<preference name="SuppressesIncrementalRendering" value="true" />
<preference name="android-minSdkVersion" value="7" />
<preference name="android-installLocation" value="auto" />
<preference name="SplashScreenDelay" value="5000" />
<preference name="ErrorUrl" value=""/>
<preference name="BackgroundColor" value=""/>
<preference name="KeepRunning" value="true"/>
<preference name="DisallowOverscroll" value="true"/>
<preference name="LoadingDialog" value=","/>
<preference name="LoadUrlTimeoutValue" value="20000" />
<preference name="disable-cursor" value="true" />
<gap:platform name="ios" />
<gap:platform name="android" />
<gap:platform name="winphone" />
<gap:plugin name="org.apache.cordova.battery-status" />
<gap:plugin name="org.apache.cordova.camera" />
<gap:plugin name="org.apache.cordova.console" />
<gap:plugin name="org.apache.cordova.contacts" />
<gap:plugin name="org.apache.cordova.device" />
<gap:plugin name="org.apache.cordova.device-orientation" />
<gap:plugin name="org.apache.cordova.device-motion" />
<gap:plugin name="org.apache.cordova.dialogs" />
<gap:plugin name="org.apache.cordova.file-transfer" />
<gap:plugin name="org.apache.cordova.geolocation" />
<gap:plugin name="org.apache.cordova.globalization" />
<gap:plugin name="org.apache.cordova.inappbrowser" />
<gap:plugin name="org.apache.cordova.media" />
<gap:plugin name="org.apache.cordova.media-capture" />
<gap:plugin name="org.apache.cordova.network-information" />
<gap:plugin name="org.apache.cordova.splashscreen" />
<gap:plugin name="org.apache.cordova.vibration" />
<icon src="icon.png" />
<gap:splash src="splash.png" />
<access origin="*" />
<!--gap:plugin name="com.moust.cordova.videoplayer" version="1.0.0" />
<gap:plugin name="com.sharinglabs.cordova.plugin.cache" version="1.0.0" /-->
</widget>
Есть идеи, как справиться с этой проблемой?
1 ответ
Хорошо. спасибо всем, кто понизил этот вопрос, так как я уверен, что вы все знали ответ: следующая строка в config.xml:
<preference name="BackgroundColor" value=""/>
Должен был быть опущен.
Нет точного объяснения от команды разработчиков, но это то, что они нашли. Обратите внимание, что этот параметр по умолчанию пуст.
Кстати, даже если вы используете утилиту configGap, она не удаляет этот параметр.