运行cordova app

时间:2016-10-08 10:36:31

标签: android cordova crosswalk-runtime crosswalk apache-cordova

我在模拟器和Android设备上运行cordova应用程序时遇到问题。这是一个使用phonegap-template-react-hot-loader模板创建的应用程序。

这是一个adb日志:

E/AndroidRuntime( 2704): FATAL EXCEPTION: main
E/AndroidRuntime( 2704): Process: com.cphoto.pl, PID: 2704
E/AndroidRuntime( 2704): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cphoto.pl/com.cphoto.pl.MainActivity}: java.lang.StringIndex
OutOfBoundsException: length=0; index=0
E/AndroidRuntime( 2704):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
E/AndroidRuntime( 2704):        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
E/AndroidRuntime( 2704):        at android.app.ActivityThread.access$800(ActivityThread.java:135)
E/AndroidRuntime( 2704):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
E/AndroidRuntime( 2704):        at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 2704):        at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime( 2704):        at android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime( 2704):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 2704):        at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime( 2704):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime( 2704):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime( 2704):        at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 2704): Caused by: java.lang.StringIndexOutOfBoundsException: length=0; index=0
E/AndroidRuntime( 2704):        at org.apache.cordova.ConfigXmlParser.setStartUrl(ConfigXmlParser.java:139)
E/AndroidRuntime( 2704):        at org.apache.cordova.ConfigXmlParser.handleStartTag(ConfigXmlParser.java:116)
E/AndroidRuntime( 2704):        at org.apache.cordova.ConfigXmlParser.parse(ConfigXmlParser.java:75)
E/AndroidRuntime( 2704):        at org.apache.cordova.ConfigXmlParser.parse(ConfigXmlParser.java:63)
E/AndroidRuntime( 2704):        at org.apache.cordova.CordovaActivity.loadConfig(CordovaActivity.java:158)
E/AndroidRuntime( 2704):        at org.apache.cordova.CordovaActivity.onCreate(CordovaActivity.java:111)
E/AndroidRuntime( 2704):        at com.cphoto.pl.MainActivity.onCreate(MainActivity.java:30)
E/AndroidRuntime( 2704):        at android.app.Activity.performCreate(Activity.java:5231)
E/AndroidRuntime( 2704):        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
E/AndroidRuntime( 2704):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
E/AndroidRuntime( 2704):        ... 11 more
D/dalvikvm( 2563): DexOpt: couldn't find static field Landroid/os/Build;.SUPPORTED_ABIS
W/dalvikvm( 2563): VFY: unable to resolve static field 2750 (SUPPORTED_ABIS) in Landroid/os/Build;
D/dalvikvm( 2563): VFY: replacing opcode 0x62 at 0x0008
D/dalvikvm( 2563): GC_CONCURRENT freed 532K, 18% free 5407K/6528K, paused 12ms+9ms, total 39ms
E/MDM     ( 2563): [120] pwk.a: Couldn't connect to Google API client: ConnectionResult{statusCode=API_UNAVAILABLE, resolution=null, message=null}
W/ActivityManager( 1817):   Force finishing activity com.cphoto.pl/.MainActivity

的AndroidManifest.xml

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="com.cphoto.pl" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden" android:exported="false" android:name="com.google.zxing.client.android.CaptureActivity" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden">
            <intent-filter>
                <action android:name="com.phonegap.plugins.barcodescanner.SCAN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/share_name" android:name="com.google.zxing.client.android.encode.EncodeActivity">
            <intent-filter>
                <action android:name="com.phonegap.plugins.barcodescanner.ENCODE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/share_name" android:name="com.google.zxing.client.android.HelpActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
</manifest>

config.xml中

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.cphoto.pl" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0">
    <name>Cphoto</name>
    <description>
      Cordova Photo React Hot Reloader
  </description>
    <author email="kmiasko@gmail.com" href="https://github.com/kmiasko">
      Kmiasko
  </author>
    <preference name="permissions" value="none" />
    <preference name="orientation" value="default" />
    <preference name="target-device" value="universal" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="detect-data-types" value="true" />
    <preference name="android-minSdkVersion" value="19" />
    <preference name="android-installLocation" value="auto" />
    <platform name="android">
...icons
    </platform>
    <platform name="ios">
...icons
    </platform>
    <platform name="wp8">
...icons
    </platform>
    <platform name="windows">
...icons
    </platform>
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <content src="" />
        <allow-intent href="market:*" />
        <allow-navigation href="*" />
    </platform>
    <plugin name="cordova-plugin-whitelist" version="1" />
    <plugin name="cordova-plugin-statusbar" spec="~2.1.0" />
    <plugin name="cordova-plugin-console" spec="~1.0.4" />
    <plugin name="cordova-plugin-crosswalk-webview" spec="~2.1.0">
        <variable name="XWALK_VERSION" value="21+" />
        <variable name="XWALK_LITEVERSION" value="xwalk_core_library_canary:17+" />
        <variable name="XWALK_COMMANDLINE" value="--disable-pull-to-refresh-effect" />
        <variable name="XWALK_MODE" value="embedded" />
        <variable name="XWALK_MULTIPLEAPK" value="true" />
    </plugin>
    <plugin name="cordova-plugin-camera" spec="~2.3.0" />
    <engine name="android" spec="~5.2.2" />
</widget>

1 个答案:

答案 0 :(得分:0)

问题是来自模板的npm脚本修改了 config.xml 并将<content src="index.html" />更改为<content src="http://10.0.2.2:8080" />,因此android设备/模拟器没有与index.html文件一起提供。