2

Eclipse と PhoneGap を使用して Android アプリをビルドしようとしていますが、エラーが発生し続けます

[2013-05-21 17:47:39 - PhoneGapTest] Project has no target set. Edit the project properties to set one.
[2013-05-21 17:47:50 - PhoneGapTest] Parser exception for /PhoneGapTest/AndroidManifest.xml: Premature end of file.

...プロジェクトを開くとき。プロジェクトのプロパティを開いてターゲットを設定しましたが、xml 例外が引き続き発生します。プロジェクトをクリーンアップしてビルドし、Android SDK をアンインストールして再ダウンロードし、ADT を更新しましたが、すべて役に立ちませんでした。はAndroidManifest.xmlです。エラーコンソールにはこれがあります...

Archive for required library: 'E:/AndroidProjects/workspace/PhoneGapTest/libs/cordova-2.7.0.jar' in project 'PhoneGapTest' cannot be read or is not a valid ZIP file    Build Path Problem

ああ、cordova jarプロジェクトの が完全に空になっていることがわかりました。createしかし、端末でPhoneGapコマンドを使用してこのプロジェクトを100回再構築しようとしたため、これは毎回発生しているに違いありません。なぜこうなった?

編集 - ダウンロードからコピー アンド ペーストして直接追加してcordova jarいますが、既存のソースから Android プロジェクトを作成しようとしても何も起こりません。このフォルダーは、パッケージ エクスプローラーにも表示されません。では、PhoneGap コマンド ライン作成ツールが、開くことさえできない空AndroidManifest.xmlと空のプロジェクトを作成するのはなぜですか?cordova jar

編集 - わかりました、問題の少なくとも一部は、環境変数の一部、特にProgram Files. 私は今、%PROGRAMFILES%変数でそれを処理しました。また、PhoneGap が生成するディレクトリには、AndroidManifest.xml4KB の有効なコルドバ jar とファイルがあります。AndroidManifest.xmlこれは、PhoneGap create コマンド ライン ツールを使用した後の内容です...

<?xml version="1.0" encoding="utf-8"?>
<!--
       Licensed to the Apache Software Foundation (ASF) under one
       or more contributor license agreements.  See the NOTICE file
       distributed with this work for additional information
       regarding copyright ownership.  The ASF licenses this file
       to you under the Apache License, Version 2.0 (the
       "License"); you may not use this file except in compliance
       with the License.  You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing,
       software distributed under the License is distributed on an
       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
       KIND, either express or implied.  See the License for the
       specific language governing permissions and limitations
       under the License.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:windowSoftInputMode="adjustPan"
      package="com.gsu.PhoneGapTest" android:versionName="1.0" android:versionCode="1" android:hardwareAccelerated="true">
    <supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:xlargeScreens="true"
        android:resizeable="true"
        android:anyDensity="true"
        />

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.RECORD_VIDEO"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />   
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />   
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />


    <application android:icon="@drawable/icon" android:label="@string/app_name"
        android:hardwareAccelerated="true"
        android:debuggable="true">
        <activity android:name="PhoneGapTest" android:label="@string/app_name"
                android:theme="@android:style/Theme.Black.NoTitleBar"
                android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="17"/>
</manifest> 

...そして、cordova jar は 251 KB です。ここが奇妙な部分です。PhoneGap ドキュメントで指定されているように、既存のコードを使用して Eclipse で Android プロジェクトを作成した後、AndroidManifest.xml の内容が削除され、0 KB に戻り、生成された .project ファイルも空になります。それだけでなく、まだ同じエラーが発生しています。コンソール上のこれら...

[2013-05-21 18:27:13 - PhoneGapTest] Project has no target set. Edit the project properties to set one.
[2013-05-21 18:27:14 - PhoneGapTest] Parser exception for /PhoneGapTest/AndroidManifest.xml: Premature end of file.

..(AndroidManifest が EMTPY であるため意味があります)、これらはエラー ダイアログに表示されます...

Description Resource    Path    Location    Type
Archive for required library: 'E:/AndroidProjects/workspace/PhoneGapTest/libs/cordova-2.7.0.jar' in project 'PhoneGapTest' cannot be read or is not a valid ZIP file    PhoneGapTest        Build path  Build Path Problem

Parser exception for /PhoneGapTest/AndroidManifest.xml: Premature end of file.  PhoneGapTest        line 1  Android ADT Problem

The project cannot be built until build path errors are resolved    PhoneGapTest        Unknown Java Problem

Premature end of file.  AndroidManifest.xml /PhoneGapTest   line 1  Android XML Format Problem

編集 - わかりました、プロジェクトを作成するための私の正確な順序は、これが役立つ場合は次のとおりです...

  1. commandに移動phonegap*/lib/android/binして実行します./create PhoneGapTest com.gsu.PhoneGapTest PhoneGapTest。このステップの出力は次のとおりです...

    新しい Android プロジェクトの作成... テンプレート jar のコピー... js、jar、config.xml ファイルのコピー... cordova コマンド ツールのコピー... AndroidManifest.xml と MainActivity の更新...

  2. Android ADT で Eclipse を起動し、次の場所に移動します。New > Project > Android > Android Project from Existing Code

  3. 手順 1 で PhoneGapTest プロジェクトを作成したワークスペースを参照し、copy project into workspaceチェックボックスを選択して (これを行わないと、メッセージ ボックスの読み取りが表示されますinvalid project description)、[完了] をクリックします。

  4. これで、PhoneGapTest が Project Explorer に表示され、これらのエラーが表示されます...

    [2013-05-22 15:36:10 - PhoneGapTest] プロジェクトにはターゲット セットがありません。プロジェクト プロパティを編集して設定します。[2013-05-22 15:36:31 - PhoneGapTest] /PhoneGapTest/AndroidManifest.xml のパーサー例外: ファイルの終わりが早すぎます。

...だから私はプロジェクトをクリックしてproperties > Android > Project Build Target選択しますAndroid 4.2.2(これは唯一の他のオプションですGoogle APIs)

ここでは、AndroidManifest が空であるため、どうすればよいかわかりません。これが私にとって問題の根本のようです。既存のソースから Android プロジェクトをビルドすると、どういうわけか AndroidManifest.xml が空になります。

4

2 に答える 2

4

はい、わかった。Eclipse ワークスペースで PhoneGapcreateユーティリティを使用してプロジェクトを作成していました。どうやらそれを行ってから、既存のソースEclipseコピーと新しい空のファイルからプロジェクトを作成すると、これが問題になります。ファイル システムの別の場所にユーティリティを使用してプロジェクトを作成し、Eclipse 内の既存のソースからプロジェクトを作成し、チェックボックスを選択しなかったため、元のファイルは保持されていました。AndroidManifest.xmlcreatecopy project into workspaceAndroidManifest.xml

于 2013-05-22T20:05:38.113 に答える