1プロジェクトで複数apkを吐き出す方法について教えてください

2,153 views
Skip to first unread message

mun

unread,
Oct 2, 2012, 7:25:55 AM10/2/12
to android-...@googlegroups.com
いつも参考にさせてもらっています。 
munともうします。

現在WebViewを利用した、サーバと連携するAndroidのアプリを開発しております。
サーバ側には、開発用、本番用の2つの環境があるので、端末で同時にそれらのアプリを見られるよう、2つのapkファイル
を吐き出しています。
現在はEclipseに2つのプロジェクトを作成し、それぞれの環境用のapkファイルを吐き出しているのですが、
開発用アプリ→運営用アプリ へと手作業でプログラムをマージしている状況です。

現在はアプリはまだ実験段階ですが、今後サービス化する時には「企画用」という環境ができる予定になっていて、3ファイルのapkファイルが必要になってきます。
全て手作業でマージしていてはいつかマージに失敗して事故につながるのではないかと心配です。

どなたか1プロジェクトから3apkファイル(同時にインストール可)を吐き出す方法をご存知の方いらっしゃいませんでしょうか?
もしくは、上記以外によい運営方法をご存知の方がいらっしゃいましたらご教授くださいm(_ _)m

よろしくお願いします。




飯塚康至

unread,
Oct 2, 2012, 7:42:38 AM10/2/12
to android-...@googlegroups.com
状況今ひとつよくわかりませんが、リリースについてはBuildConfigで何とかなりませんでしょうか。
マージについてはsubversion等で管理すればOKだと思うのです。Gitのほうが最近は多いのかもしれません。

2012年10月2日 20:25 mun <st57...@gmail.com>:
> --
> このメールは Google グループのグループ「Android-SDK-Japan」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-sdk-japan/-/Oh6QSUBcLdAJ
> にアクセスしてください。
> このグループに投稿するには、android-...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-sdk-ja...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-sdk-japan?hl=ja
> からこのグループにアクセスしてください。



--
以上、宜しくお願いします。

飯塚 康至

高松奨

unread,
Oct 2, 2012, 8:44:19 AM10/2/12
to android-...@googlegroups.com
飯塚さん

レスありがとうございます!
説明が長くて分かりにくくなってしまいました。
本当に申し訳ありません。。。f(==;

かいつまむと、
1つのプロジェクトで2つのapkファイルを吐き出したいのです。
(ちなみに2つの違いは、あるユーティリティクラスで定義しているURL(定数)が「開発環境用」と「本番環境用」で違うだけです。)
それでapkファイルにする際にユーティリティクラスの値が開発環境用URLのものと、本番用URLの物 2つのapkファイルを吐き出したいと思っています。
しかし、おなじプロジェクトで吐き出されたapkファイルは同じアプリとして端末側で認識されてしまうので、
同時に端末にインストールできなくて困っています。
ちなみにプロジェクトファイルの管理は「開発用」「本番用」ともにSubversionで行っています。

よろしくお願いします。


2012年10月2日 20:42 飯塚康至 <iiz...@aa.mbn.or.jp>:

飯塚康至

unread,
Oct 2, 2012, 9:21:05 AM10/2/12
to android-...@googlegroups.com, android-...@googlegroups.com
お疲れ様です。urlのみ違うということならば、BuildConfigにて自動判定できるのでこれがよいと思います。R.javaと同じように自動生成されます。

2012/10/02 21:44、高松奨 <st57...@gmail.com> のメッセージ:

末広 尚義 / H Suehiro

unread,
Oct 2, 2012, 9:26:52 AM10/2/12
to android-...@googlegroups.com
はじめまして
末広です。

多分、飯塚さんの言ってるのでできると思います。
以下参考URLのように切り替えることができます。
http://neta-abc.blogspot.jp/2012/05/2.html

リリースビルドの作成方は
eclipseの場合は
パッケージ名を右クリックし、[Android Tools]の[Export Unsigned Application Package]を選択
antのビルドツールをお使いでしたらコマンドラインから
ant release

で作成することができます。

eclipseで自動ビルドされる物はdebugビルドです。

ではでは。

2012年10月2日 21:44 高松奨 <st57...@gmail.com>:
--
- 末広 尚義
- twitter @bols_blue
- mail bols...@lnc.jp
- blog http://d.hatena.ne.jp/bols-blue/

mryo826

unread,
Oct 2, 2012, 10:42:01 AM10/2/12
to android-...@googlegroups.com
宮山です。

> 1つのプロジェクトで2つのapkファイルを吐き出したいのです。
> (ちなみに2つの違いは、あるユーティリティクラスで定義しているURL(定数)が「開発環境用」と「本番環境用」で違うだけです。)
> それでapkファイルにする際にユーティリティクラスの値が開発環境用URLのものと、本番用URLの物 2つのapkファイルを吐き出したいと思っています。
> しかし、おなじプロジェクトで吐き出されたapkファイルは同じアプリとして端末側で認識されてしまうので、
> 同時に端末にインストールできなくて困っています。
> ちなみにプロジェクトファイルの管理は「開発用」「本番用」ともにSubversionで行っています。
これは、開発用と本番用でパッケージ名を分ける必要があるということでしょうか?

Androidはパッケージ名でアプリをユニークにしているので、開発用と本番用では実際のアプリの
パッケージ名が違う筈なので前提条件が少々違うような気がするのですが?

ご確認頂けないでしょうか。

以上、よろしくお願い致します。
2012年10月2日 22:21 飯塚康至 <vse...@gmail.com>:

高松奨

unread,
Oct 9, 2012, 6:59:55 AM10/9/12
to android-...@googlegroups.com
munです。

お返事遅くなってしまい 大変申し訳ありませんでした。
急ぎで開発しなければならない案件が入り、手御つけられずにいました。
みなさんレスありがとうございます!

飯塚さん、末広さんの方法で、http://neta-abc.blogspot.jp/2012/05/2.html
を参考にBuildConfigで分岐してみたところ、USB接続してビルドした時はデバッグ用
として動作していることが確認できました。この方法で1つapkファイルを作成しました。
2つ目のapkはAndroidツールからSignedApplicationPacageとしてapkファイルを作成しました。
この両方を同時にインストールしようとしましたが、mryo826さん、しゅうさんのおっしゃるとおり
同時にはインストールできないようです。
なので、しゅうさんがかいてくれた
「共通部分をライブラリプロジェクト化して、さらに、アプリ1とアプリ2で別のプロジェクトを作る」
をやってみようと思います。
(もしこの方法で有益な情報をお持ちでしたら教えてください。割と情報量が少ないので。。。)

できあがったらまたご報告します!

しゅう

unread,
Oct 9, 2012, 12:10:11 PM10/9/12
to android-...@googlegroups.com
munさん、

ライブラリプロジェクトを作る際は、通常のAndroidプロジェクトを作成した後
で、プロジェクト設定Androidタブの「Is Library」をチェックします。

Manifestには、uses-sdkだけ指定しておけば良いです。
パッケージ名は、アプリ側と一致している必要はないです。

アプリプロジェクト側では、Androidタブでライブラリの追加ボタンを押して、
ライブラリ化したプロジェクトをインポートします。その後、Javaビルドパスの
プロジェクトタブへ、ライブラリプロジェクトを追加して下さい。

後は、アプリプロジェクトでビルドすれば、ライブラリプロジェクトのソースと
リソースがインクルードされ、アプリプロジェクトのパッケージ名でapkが作成
されます。

デバッグも単一プロジェクトと同様で、ライブラリプロジェクトのソースで指定
したブレークポイントで、ブレークさせることが可能です。


リファレンスは以下にあります。

Samplesにある、TicTacToeLibとTicTacToeMainも参考にしてみて下さい。

Makoto Yamazaki

unread,
Oct 9, 2012, 1:20:30 PM10/9/12
to android-...@googlegroups.com
zaki です。

> アプリプロジェクト側では、Androidタブでライブラリの追加ボタンを押して、
> ライブラリ化したプロジェクトをインポートします。その後、Javaビルドパスの
> プロジェクトタブへ、ライブラリプロジェクトを追加して下さい。

↑の記述後半部分("その後、"以降)は不要です。

--
YAMAZAKI Makoto

しゅう

unread,
Oct 9, 2012, 3:45:14 PM10/9/12
to android-...@googlegroups.com
村上です。

失礼しました、インポートするところまででOKですね。


2012年10月10日水曜日 2時20分58秒 UTC+9 zaki:

mryo826

unread,
Oct 9, 2012, 10:00:36 PM10/9/12
to android-...@googlegroups.com
宮山です。

自分がやった時にハマった所で言うと、ライブラリプロジェクトで定義したリソースIDと
アプリのプロジェクトで定義したリソースIDがバッティングして動作がおかしくなる事が
ありました。

ライブラリプロジェクトとアプリ側のプロジェクトを分離する時にライブラリプロジェクト側は
IDにプリフィックスをつけるなどされた方が良いかと思います。

あと、自分が以前やった時はライブラリプロジェクトがサポートされる前だったので
Activitiyを使わないようなPureJavaの部分はソースを分離してJavaのプロジェクトで
共通ライブラリとして別に開発してました。
この時はAndroid1.6-2.2対応アプリで2.1以降のマルチタッチのAPIを使いつつ1.6でも
動くようにするため必要でした。
今はこうしたことをやらなくてもいいとは思いますが。

以上、よろしくお願い致します。

2012年10月9日 19:59 高松奨 <st57...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages