2012-09-18 5 views
8

私はActionBarSherlockをライブラリとして使用しています。私たちはレポジトリにABSを含めていないので、参加するすべての人がour projectをダウンロードして別途インストールする必要があります。 ActioBarSherlockはAndroidのライブラリプロジェクトです。同じEclipseのワークスペースでプロジェクトとプロジェクトを開いて実行しています(どちらもワークスペースにコピーされていますが、別のフォルダにあります) Referencing a library projectEclipse:project.propertiesに定義されたライブラリパスをオーバーライドします

参照パスは相対パスであり、誰もが別のフォルダにABSを持つ可能性があるため、ファイルのパスはそれぞれandroid.library.reference.1となります。 リポジトリ内にproject.propertiesを持つことができるようにローカルにライブラリパスをオーバーライドする方法はありますか?Eclipseはローカルで別のパスを使用しますか?現在、パスが異なるために私たちのレポから引き出すたびに、手動でそのパスを修正する必要があります。

ありother *.properties filesを存在しますが、Eclipseはそれを無視します。

local.propertiesビルドシステムのための

カスタマイズコンピュータ固有のプロパティ。 Antを使用してプロジェクトをビルドする場合、これにはSDKのインストールパスが含まれます。ファイルの内容はSDKのローカルインストールに固有のものであるため、local.propertiesをソースリビジョン管理システムで管理しないでください。 Eclipseを使用する場合、このファイルは使用されません。

ant.propertiesビルドシステムのための

カスタマイズ可能なプロパティ。このファイルを編集して、Antで使用されるデフォルトのビルド設定をオーバーライドし、キーストアとキーエイリアスの場所を指定して、ビルドツールがリリースモードでビルドするときにアプリケーションに署名できるようにすることができます。このファイルはプロジェクトに不可欠なので、ソースリビジョン管理システムで管理してください。 Eclipseを使用する場合、このファイルは使用されません。

答えて

0

各人にprojectroot/libsを入れてもらいます。 ADTの新しい(ADT 17以上、IIRC)バージョンは、自動的にそれを取得し、あなたのアプリにコンパイルします。フォルダがlibsで、sであり、libではないことに注意してください。 /libを使用しても動作しません。

+0

複数のプロジェクトで同じライブラリを使用したい場合、この方法では同じファイルを複数の場所にコピーする必要があります。ハードドライブ内の単一の場所にインストールされたライブラリを複数のプロジェクトに同時に使用できる他のオプションはありますか? – Kuitsi

+0

私は気づいていません。 project.propertiesを変更すると、次回プロジェクトをビルドするときにeclipseがファイルを上書きします。 –

+3

ActionBarSherlockはJARではないため、 'libs /'には入りません。これはAndroidライブラリプロジェクトです。 – CommonsWare

0

オプション:

  • project.properties:あなたはproject.properties内のすべてのユーザのホームフォルダ、libsにリンクを作成し、パスを持っている可能性が~/libs共通の使い方

  • を参照してください。ライブラリ: "common"という名前のライブラリプロジェクトを作成します。設定では、jarをエクスポートします。 Androidアプリケーションで、jarをインポートします。

個人的に私はmavenで設定するのが一番良いと思いますが、2番目のオプションは最も速かったと思います。

+0

オプション私はEclipseが見つけられる限り、ユーザーがソースコードをどこに保存しているのかをユーザーに決定させたいので、私の質問の目的を破ることができます。 AFAIK Eclipseには、同じプロジェクト内のソースが同じハードドライブ上に置かれていなければならないコードロケーションの他の制限はありません(参照は絶対パスではなく相対パスで行われます)。オプション2:私たちはすでにライブラリプロジェクトとしてABSを持っています。なぜ私たちはそれのコピーを作るべきですか?第三に、Mavenは少し過度のものかもしれません。 – Kuitsi

+0

オプション2:その後、libを "エクスポート"するようにABSを設定すると、最終結果になります。あなたが実際に大会を使いたくない場合は、自分自身でもっと難しくするために、 'find -iname 'magical.jar' -print >> local.properties'を実行するantタスクを作成してください。ほとんどの人は、物事を成し遂げ、慣例を超えて構成を犠牲にしたいと思うでしょうなぜいくつかの設定を維持することを選択します... – bgs

0

レポのproject.propertiesを無視するとどうなりますか?こうすることで、各ユーザーは自分のものを保持することができ、常に上書きする必要はありません。私はあなたがそれをローカルに上書きできるとは思わない。

もう1つの選択肢として、プロジェクトをライブラリプロジェクトとして参照する代わりに、JARファイルとしてエクスポートすることができます。 ABSコードを変更する必要がない場合は、プロジェクト - > java - > jarファイルを右クリックすることができ、すべての開発者が簡単にするため同じ場所に置くことができます。

+1

これはどうですか?**元の互換性ライブラリは.jarだけですが、ActionBarSherlockはなぜライブラリプロジェクトですか?** _ ActionBarSherlock内のカスタムアクションバーの実装は、スタイル、テーマ、レイアウト、適切に表示するためにドロアブルを使用します。 Androidと.jarファイルの制限のため、これは他の方法では実現できません。_出典:[ABS FAQ](http://actionbarsherlock.com/faq.html) – Kuitsi

+0

私はプロジェクトを続けたいと思います。リポジトリのプロパティはEclipseで必要とされているので、クローン作成後にユーザーが手間をかけずにプロジェクトをコンパイルできるようにしたいと考えています。そのファイルがすでに追跡されているため、.hgignoreを無視しても機能しません。 .hg/hgrcにはいくつかのオプションがありますが(http://stackoverflow.com/a/3615771/262462)、それらはプロジェクトのすべてのフォークにも設定する必要があります。 – Kuitsi

+1

@Kuitsi私は分かりませんでした!それを共有してくれてありがとう!また、repoにproject.propertiesを保存しないと大した問題にはなりません。プロジェクトをインポートする代わりに、Eclipse上に既存のソースを持つ新しいプロジェクトを作成するだけで、そのファイルが生成されます。私はそれが最良の選択肢ではないことを知っていますが、他に何も持っていない場合に役立ちます! – caiocpricci2

0

編集:EclipseからAndroid StudioとGradleビルドシステムに移行して以来、この質問は私たちのプロジェクトにはもう必要なくなりました。 @bgsが示唆しているように、MavenのEclipseも機能するはずです。

我々の以前のアプローチ:

はまだ良い代替を探しているが、これまでのところ、我々は我々のレポでproject.propertiesを維持することになりました。 project.propertiesは、プルするときに変更がなければオーバーライドされません。また、ユーザーが誤って、そのファイルの変更をコミット防ぐために、彼らの.hg/hgrc設定ファイルにこの

[alias] 
commit = commit -X project.properties 

を追加し、当社のREADMEに示唆しています。

この方法には、少なくとも1つの欠点があります。マージするときに、hg commit -m 'merge'でマージした場合でも、abort: cannot partially commit a merge (do not specify files or patterns)のようなエラーが発生する可能性があります。このような場合は、そのエイリアスを一時的に無効にしてください。

関連する問題