web-dev-qa-db-ja.com

ActionBarSherlockに関するプロジェクトのAndroid Studioへのインポートに関する問題

ActionBarSherlockを含むプロジェクトのインポートに問題がある人はいますか?合計100個のエラーと17個の警告があります。これはEclipseで完全に機能しました。 Gradle build file を作成する手順に従いました。プロジェクトをビルドしようとするまで、インポートエラーはありませんでした。

また、ABSフレッシュを再ダウンロードして、プロジェクトに置き換えてみました。

ABSとIntelliJに既知の問題がありましたか? (もちろん、これはAndroid Studioがベースになっています)

ここに私が見ているいくつかのエラーがあります:

        Java: ...
        Workspace/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.Java:4: cannot find symbol
        symbol  : class Fragment
        location: package Android.support.v4.app

        Java: ...  Workspace/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.Java:4: cannot find symbol
        symbol  : class ListFragment
        location: package Android.support.v4.app

        Java: ...
        Workspace/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.Java:33:
        package Android.support.v4.widget does not exist

本当に感謝したい

Edit:Standard IntelliJ IDEAを使用しても問題はないようです。 ABSで設定するための多くのオンラインガイド。また、ジェイクが言及したように、彼は実際にIntelliJで物を開発しています

ガイドの例を次に示します。 http://Android-wtf.com/2012/09/how-to-configure-actionbarsherlock-with-intellij-idea/

ただし、なぜAndroid Studioで動作しないのかはまだわかりません

Edit2:以下の回答のソリューション。要するに:(abs最新バージョンをダウンロードし、抽出し、プロジェクトからabsの古いバージョンを削除してから、file > import module...actionbarsherlockディレクトリを既存のプロジェクトにインポートします。 Nb、私の特定のケースでは、junitコンパイルエラーに問題があり、\ test\junit \を削除する必要がありました)

27
wired00

ActionBarSherlockだけでなく、_Android Studio_にモジュールをインポートする際に一般的な問題がたくさんあるようです。この答えはそれらにも対処するかもしれません。 (ただし、junitに関連する最後の手順はabsに固有です)

以下の手順により、ActionBarSherlockを問題なく実行できました。

1)ここから最新のABSをダウンロードします: http://actionbarsherlock.com/

2)「actionbarsherlock」と呼ばれるディレクトリがあるはずです。これをAndroid Studioワークスペースにコピーし、ActionBarSherlock (changed casing)に名前を変更します。->現在、Android Studio Projects under _\*documents*\Android Workspace\_ _\Eclipse Workspace\_とは対照的に

したがって、次のようになります。

_\*documents*\Android Workspace\ActionBarSherlock\_

あなたのメインプロジェクトと一緒に:

_\*documents*\Android Workspace\TestProject\_

3)Open Android StudioがTestProjectを読み込んでから_File> Import Module.._に移動します。 _\*documents*\Android Workspace\ActionBarSherlock\_の下のActionBarSherlockにOkをクリックし、次の最後まで完了します。新しいモジュールに依存関係を設定するかどうかを尋ねます(または、少なくとも私のモジュールでした))[OK]をクリックします

4)この時点でコンパイルすると、Junitについて文句を言う_\ActionBarSherlock\test\_でエラーが発生しました。プロジェクトビューでABSモジュールから_\Test\_ディレクトリを削除しただけです。 _Right click \test\ > Delete..._。あなたもjunit jarファイルを含めることができますが、私はその必要があるとは思わない

5)これでエラーなしでコンパイルできるはずです

うまくいけば、それは誰かを助ける。

基本的には、完全に新しいABSを再ダウンロードし、古いプロジェクトのABS(おそらくかなり古い)を消去してからモジュールをインポートする必要がありました...

26
wired00

これは私のために働く。

最初に、wired00が提供する回答が続きます

ここからいくつかの変更を加えました。

EclipseからGradleビルドファイルを生成することにより、ActionBarSherlockライブラリプロジェクトにbuild.gradleファイルを作成しました。

build.gradleの編集(ActioBarSherlockライブラリプロジェクト用)、依存関係に行を追加{} compile files('libs/Android-support-v4.jar')

build.gradleを編集し(私のプロジェクト用)、compile files('libs/Android-support-v4.jar')を削除し、compile project(':abs')を追加しますabsはActionBarSherlockライブラリプロジェクト名でなければなりません。

settings.gradleを編集し、,':abs'を追加します

actionBarSherlockライブラリプロジェクトのファイルを除くAndroid-support-v4.jarファイルを削除します。

6
Kuool

同様の問題が発生しましたが、別の問題があるため、wired00の説明どおりに最新のActionBarShelockをダウンロードして問題を解決することはできません。

既存のABSバージョンを使用する必要がある場合は、これが適切かどうかを確認してください。

  1. 「ファイル」->「プロジェクト構造」をクリックします。
  2. モジュールリストに「ActionBarSherlock」が表示されたら、それをクリックします。
  3. [依存関係]タブをクリックします。おそらく、Androidサポートライブラリv4がありません。
  4. 下部にある[+]ボタンをクリックし、Android-support-v4を依存関係として追加します。 Eclipseからプロジェクトをインポートした場合、Android StudioはサポートJARファイルをライブラリとして既にインポートしているため、直接使用できます。それ以外の場合は、「jarsまたはディレクトリ」を使用する必要がありますオプションを選択し、ディレクトリからサポートjarファイルを選択します。
  5. メインモジュールまたは他のモジュールもサポートライブラリを使用している場合、「DEX Already Added」エラーが発生した場合は、「Compile」の設定を「Provided」に変更する必要があります。
  6. これで、ABS mobuleをコンパイルできるはずです。 「hamcrest」または「junit」のコンパイルエラーが発生した場合は、wired00で述べたように、ABSプロジェクトの「test」フォルダーを削除できます。
2
azgolfer

私も同じ問題に直面しました。私もABSライブラリのインポートと同様の手順に従います。しかし、私はまだ同じエラーを受け取っていました。最後に、この問題を解決しました。解決策:ABSライブラリのインポートと同様の手順を実行した後、

  1. プロジェクトを再コンパイルします(プロジェクトを右クリックして、「モジュール「YourApp」をコンパイル」をクリックします)
  2. ライブラリプロジェクトを再コンパイルします(ライブラリプロジェクトを右クリックして、「Compile Module "library"」をクリックします)

それでおしまい..

0
Yasir Ali