0

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で何かを行うと、このエラーが返され、新しいプロジェクトを再度作成する必要があります。

4

3 に答える 3

1

R.javaが欠落している理由は次のとおりです。

  • ドローアブルに適切な名前を付けない場合
  • レイアウトに問題がある場合
  • AndroidManifestファイルに登録するのを忘れた場合(アクティビティなど)
  • マニフェストと他の場所でパッケージ名に矛盾がある場合
  • 複数のパッケージがこの問題を引き起こすことがあります

ヒント:コンソールでエラーを確認し、それがどこを参照しているかを確認してください。これが唯一のリードです。

事実:プロジェクトをクリーンアップしても、常に問題が解決するわけではありません

于 2013-01-22T10:52:38.450 に答える
1

gen ..の構築にほとんど間違いがなかったと思いますので、xmlファイルまたは生成されたファイルに何らかの間違いがないか確認してください。

クリーンアップした後、動作しない場合もビルドして、簡単な作業を行います。

新しいプロジェクトを作成し、コードとレイアウトをコピーします。.pngxmlプラグインなどは、genフォルダーを削除しません。

プロジェクトをクリーンアップしてビルドした後、それは機能します

詳細については、このリンクを確認してください

于 2013-01-22T10:54:13.107 に答える
1

すべてのSDKを更新した後、有名な「Rcannot...」を入手しました。SDKの更新中にすべてのビルドツールが削除されたことが判明しました。すべてのツールがインストールされていることを「SDkManager」で確認してください。

于 2013-05-21T08:31:25.013 に答える