2012-06-11 2 views
5

コードの90%をお互いに共有する2つのAndroidアプリケーションがあります。政治的理由から(技術的理由もあると思われます)別々のパッケージ名を使用する必要があります(Google Playの異なるURLの下に表示されます)Androidで何とかRの別名を付けることはできますか?

gitを各アプリケーションに2つのブランチで使用し、各リリース前に2つのブランチを手動で同期します。 2つのブランチのdiffコマンドを実行すると、私のファイルの多くは異なっていますが、唯一の違いは、自動生成されるファイルRのパッケージ名です。したがって、最初のアプリケーションの場合、15ファイルあります。

や他のアプリ

import pkg.name.two.R; 

のために私は何とか両方のクラスのために同じようにRをインポートしたいです。

私はそうのようなRをラップしようとした:

パッケージthescene。

public class RWrapper { 

    public class R extends pkg.name.one.R {} 

} 

RWrapperソースまたはRに関して、これらの二つの枝の間だけ別のファイルを作ることになる)が、R悲しいかな、最終的なクラスである(と私はとにかく、これが働いてきただろうにもわからないんだけど)

それで、どういうわけか、Rクラスをエイリアス化して、import pkg.name.one.R;/import pkg.name.two.R;を統一インポートステートメントに置き換えることができるようにする方法がありますか?私も、私の同期の苦境を解決する他の提案:)

+0

渡っRを共有容認いないよO' –

+0

あなたの質問への答えは実際にはありませんが、各アプリケーションから参照するライブラリプロジェクトに重複コードを入れましたか、完全に分離された2つのアプリケーションが同じコードを90%持っていますか?そして、Rファイルはそのままで、両方のプロジェクトで同じものを使用しないでください。 – banzai86

+3

共有コードをアンドロイドライブラリに移動します。次に、両方のアプリケーションに組み込みます。 – pawelzieba

答えて

0

に開いている

は、あなたの代わりに、クラスのR静的フィールドを作るためにRWrapperを変更することができませんでしたか?あなたのコードは、あなたがしてRフィールドにアクセスしたい例

public class RWrapper 
{ 
    public static pkg.name.one.R R; 
} 

public class RWrapper 
{ 
    public static pkg.name.two.R R; 
} 

RWrapper.RClass...経由 Rにアクセスします。

RWrapper.R.<blah> 
+0

それは動作しませんでした、それは私に値にアクセスできません... – daniel

0

seggyは、それはほとんど右持っていました、個々のR.classを個別に公開する必要があります。サブモジュールに独自の名前空間がある場合、クラス名Rを再利用することができ、サブモジュール内の何かを変更する必要はありません。

package the.submodule.package; 

public final class R { 
public static the.app.package.R.string string; 
public static the.app.package.R.drawable drawable; 
public static the.app.package.R.id id; 
//public static the.local.appPackage.R.anythingElse anythingElse; 
} 

注:私は、インポートstatement`で `Rをインポートし、` CTRL +シフト+を使用して不必要なパッケージを削除するために、その優れたプロジェクトが、時には時間の制約など

関連する問題