OK、それで私はこの悪名高い問題に関してここで他の10のスレッドのようなものを読み、提供されたすべての可能な解決策を試しました-運がなかった。
数か月前に取り組んだPhonegapプロジェクトがあり、今すぐ新しいバージョンを作成する必要があります。だから、私の新しいMacでは-古いMacはもう利用できません、私は以前のビルドを作成するために使用したコードをチェックしました(したがって、実際のコードは変更されていないので、何も問題はありません)。新しいMacにはEclipseがインストールされていなかったので、Android SDKをダウンロードして、構成済みのバージョンのEclipseが付属していることを発見したので、それを使用しました。
安全のために、すべてのSDKバージョンをインストールしました。残念ながら、Android 2.3.3をターゲットにする必要があり、バージョンは2.1以上です。これがプロジェクトで正しく構成されていることを確認しました。
「res」フォルダの下にあるすべての.xmlファイルと.pngファイルには、有効な小文字の名前が付いています。XMLファイルにエラーはありません。少なくともEclipseは、XMLファイルに何も文句を言いません。そして、前述のように、前回アプリを正常にビルドしてからXMLファイルは変更されていません。
Androidデベロッパーツールの権限が正しいことを確認しました(全員が読み取りアクセス権を持っています)。
「gen」フォルダを削除して、もう一度ビルドしてみました。私は何度も「クリーン」なことをしました。Eclipseを何度も再起動しました。
パッケージ名がどこでも同期されていることを確認しました。「importandroid.R」がどこにもないことを確認しました。
「gen」フォルダーは、Eclipseがビルドを試みるたびに作成されますが、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>
APIのバージョン8で名前が変更されたという回答の1つを読んだので、上記で変更fill_parent
してみましmatch_parent
たが、それは役に立ちませんでした。とにかく、APIのバージョン7もサポートする必要があります。念のため、記載されているように名前を変更し、最小バージョンを8に設定しようとしましたが、それは役に立ちませんでした。
Eclipseは、ビルドしようとしたときに、他のエラーを生成せず、良性で無関係な警告を1つだけ生成します。
私の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を起動して実行するために必要な最低限のものしか含まれていません。
誰かがここで何が間違っている可能性があるか考えていますか?このR.javaは、Android Developer Toolsにとって非常に弱い点のように見えます。また、これに関連するビルドエラーの処理の改善(何が悪いのかを説明する)は、優先順位を付けることでメリットが得られるようです。とにかく-誰かが助けてくれることを願っています!
更新:問題はSubversionが原因です。Subversionが何をしているのか正確にはわかりませんが、新しいプロジェクトを作成し、ファイルをインポートしてEclipseにプロジェクトをコンパイルさせると、すべてが正常に機能します。次に、HTML、CSS、またはJavascriptファイル(アセットフォルダー内)の追加/削除/コミット/更新など、Subversionで何かを行うと、このエラーが返され、新しいプロジェクトを再度作成する必要があります。