我正在尝试使用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
为空。在Errors控制台中我有这个......
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
完全是空的。但这必须每次都发生,因为我已尝试在终端上使用PhoneGap create
命令重建此项目100次。为什么会这样?
编辑 - 好的,现在我通过下载中的复制和粘贴直接添加cordova jar
,但现在当我尝试从现有源创建android项目时,没有任何反应。该文件夹甚至没有显示在包资源管理器中。那么为什么PhoneGap命令行创建工具创建一个空AndroidManifest.xml
和空cordova jar
的项目,我甚至无法打开它?
编辑 - 好吧,我认为至少部分问题是我在某些环境变量中使用了空格,特别是Program Files
。我现在用%PROGRAMFILES%
变量来处理它,并且PhoneGap生成的目录现在有一个有效的cordova jar和{4}的AndroidManifest.xml
文件。以下是使用PhoneGap创建命令行工具后AndroidManifest.xml
的内容...
<?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,就像它应该的那样。现在这是奇怪的部分。在我使用现有代码创建Android项目之后,正如PhoneGap文档所指定的那样,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
编辑 - 好的,所以我创建项目的确切顺序(如果有帮助的话)如下......
导航至phonegap*/lib/android/bin
并运行命令./create PhoneGapTest com.gsu.PhoneGapTest PhoneGapTest
。此步骤的输出如下......
创建新的android项目...... 复制模板罐... 复制js,jar和config.xml文件...... 复制cordova命令工具...... 更新AndroidManifest.xml和MainActivity ...
使用Android ADT启动Eclipse并导航至New > Project > Android > Android Project from Existing Code
浏览到我在步骤1中创建PhoneGapTest项目的工作区,选中copy project into workspace
复选框(如果我不这样做,我会看到一个阅读invalid project description
的消息框),点击完成。
现在,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,因为它是emtpy。这似乎是问题的根源。当我从现有源构建Android项目时,AndroidManifest.xml会以某种方式变空。
答案 0 :(得分:4)
好的,明白了。我正在使用我的Eclipse工作区内的PhoneGap create
实用程序创建项目。显然,当你这样做,然后从现有的源eclipse副本和一个新的空AndroidManifest.xml
文件创建项目,这是问题所在。我在我的文件系统中的其他位置使用create
实用程序创建了项目,从Eclipse中的现有源创建项目并且不选择copy project into workspace
复选框,现在一切似乎都很好,原AndroidManifest.xml
被保留。
答案 1 :(得分:0)
在Mac OS上,您应该使用
sudo ./create ....