好的,所以我在这里看到了关于这个臭名昭着的问题的10个其他线程,并尝试了所有可能的解决方案 - 没有任何运气。
我有几个月前工作的Phonegap项目,现在必须创建一个新版本。所以,在我的新Mac上 - 我不再使用旧的Mac了,我查看了我之前构建的代码(因此实际代码没有任何问题,因为它没有改变)。由于我的新Mac没有安装Eclipse,我下载了Android SDK并发现它附带了一个预配置版本的Eclipse,因此我使用了它。
为了安全起见,我安装了所有SDK版本。遗憾的是,我必须针对Android 2.3.3,最低版本为2.1。我确保在项目中正确配置了它。
“res”文件夹下的所有.xml和.png文件都有有效的小写名称。 XML文件中没有错误,至少Eclipse不会抱怨它们中的任何内容 - 就像我上面所说的那样,自上次成功构建应用程序以来,XML文件没有改变。
我确保Android开发者工具的权限是正确的(每个人都有读取权限)。
我删除了“gen”文件夹并尝试重新构建。我无数次地做了“干净”。我无数次重启了Eclipse。
我确保包名称在任何地方同步。我已经确定我没有“import android.R”。
每次Eclipse尝试构建时都会创建“gen”文件夹,但它不包含R.java文件,它只包含文件BuildConfig.java,除了包声明之外还包含:
public final class BuildConfig {
public final static boolean DEBUG = true;
}
我的res / values / strings.xml文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World</string>
<string name="app_name">My App Name</string>
</resources>
我的res / xml / plugins.xml文件包含:
<?xml version="1.0" encoding="utf-8"?>
<plugins>
<plugin name="App" value="com.phonegap.App"/>
<plugin name="Geolocation" value="com.phonegap.GeoBroker"/>
<plugin name="Device" value="com.phonegap.Device"/>
<plugin name="Accelerometer" value="com.phonegap.AccelListener"/>
<plugin name="Compass" value="com.phonegap.CompassListener"/>
<plugin name="Media" value="com.phonegap.AudioHandler"/>
<plugin name="Camera" value="com.phonegap.CameraLauncher"/>
<plugin name="Contacts" value="com.phonegap.ContactManager"/>
<plugin name="Crypto" value="com.phonegap.CryptoHandler"/>
<plugin name="File" value="com.phonegap.FileUtils"/>
<plugin name="Network Status" value="com.phonegap.NetworkManager"/>
<plugin name="Notification" value="com.phonegap.Notification"/>
<plugin name="Storage" value="com.phonegap.Storage"/>
<plugin name="Temperature" value="com.phonegap.TempListener"/>
<plugin name="FileTransfer" value="com.phonegap.FileTransfer"/>
<plugin name="Capture" value="com.phonegap.Capture"/>
<plugin name="EncapPlugin" value="no.encap.securitytoken.phonegap.plugin.EncapPlugin" />
</plugins>
我的res / layout / main.xml文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>
我尝试将fill_parent
更改为上面的match_parent
,因为我在其中一个答案中读到了它已经重命名为API的第8版 - 但这没有用。无论如何,我还需要支持API的第7版。为了以防万一,我尝试按照规定更改名称并将最低版本设置为8,但这没有用。
Eclipse在尝试构建时不会产生任何其他错误,只会产生一个良性和无关的警告。
我的AndroidManifest.xml文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="no.encap.securitytoken.phonegap"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" /><supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true" />
<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.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<application
android:icon="@drawable/icon"
android:label="@string/app_name" >
<activity
android:name="EncapMain"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity><activity
android:name="com.phonegap.DroidGap"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name" >
<intent-filter>
</intent-filter>
</activity>
</application>
</manifest>
由于这是一个PhoneGap应用程序,因此XML文件实际上只包含启动和运行WebView所需的最低要求。
任何人都知道这里有什么问题吗?对于Android Developer Tools来说,这个R.java实际上似乎是一个非常弱点 - 并且改进了与此相关的构建错误的处理(解释什么是错误的)似乎可以从优先级中获益。无论如何 - 我希望有人可以提供帮助!
更新:问题是由Subversion引起的。我不确定Subversion正在做什么导致这种情况,但每当我创建一个新项目并导入我的文件以使Eclipse编译项目时,一切正常。然后,每当我在Subversion中执行某些操作时,例如添加/删除/提交/更新HTML,CSS或Javascript文件(在assets文件夹中),此错误将返回,我必须再次创建一个新项目。
答案 0 :(得分:1)
原因可能是
提示:查看控制台中的错误并查看它引用的位置,这是唯一的潜在客户!!
事实:清理项目并不能解决问题
答案 1 :(得分:1)
我认为你在构建gen时犯了一点错误。所以检查你的xml文件或生成的文件是否存在任何错误..
清洁和构建后,如果它不工作,那么做简单的工作..
创建新项目复制代码和布局以及.png xml插件等甚至不删除gen文件夹
在清理和构建运行项目之后,它将起作用
查看此link以获取更多帮助
答案 2 :(得分:1)
我对所有sdk进行了更新,然后我得到了着名的“R不能......”。 事实证明,在更新sdk期间已删除所有构建工具。 检查“SDk Manager”是否已安装所有工具。