質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1332閲覧

Android Flavorについて

sanapapa

総合スコア30

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2016/07/27 02:34

AとBという2つのアプリを作成したい。
また、それぞれのアプリを会社Zと会社Yに向けて作成したい。
(つまりA-Z, A-Y, B-Z, B-Yという4つのアプリが作成したい)
こういった場合に、flavor機能を利用すると良いとの記事を見たので使ってみたのですが
なかなか上手く行かないのでご教示ください。

それぞれのアプリにはLoginActivityを実装しており、ログイン後遷移するActivityをアプリ毎に分けるつもりでいます。
イメージとしては以下のようになります。

src AZ res 略... layout activity_main.xml AY res 略... layout activity_main.xml BZ res 略... layout activity_main.xml BY res 略... layout activity_main.xml main res 略... layout activity_login.xml java jp.co.test.testApp(パッケージ) LoginActivity AMainActivity(Aアプリのログイン後アクティビティ) BMainActivity(Bアプリのログイン後アクティビティ)

flavorを以下のように設定しました。

productFlavor { AZ { } AY { } BZ { } BY { } }

この状況でBuildVariantsより、例えばAZを選択した場合、BMainActivityでエラーが発生します。
内容は「シンボルを見つけられません」というエラーで、BMainActivityがコンパイルされてAのレイアウトファイルの中からリソースを探しているためだと思われます。

AZを選択した場合はBMainActivityをコンパイルしない、またはBMainActivityのコンパイル時にBのリソースを見る
など、このエラーの回避方法はありますでしょうか。

共通処理が多いため、APKビルド時にのみアプリを分け、ソースは一か所管理としたいため、このような状況になっております。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

resファイルと同階層にjavaフォルダを作り、そこにAMainActivityとBMainActivityを配置する必要があります。

ただ、共通処理を一ヶ所にまとめたいからflavorで解決するのは誤りな気がします。
共通処理をモジュール化してインポートすべきではないでしょうか。

投稿2016/07/27 02:45

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sanapapa

2016/07/27 02:52

Androidモジュールというものを使ったことがなかったため、思いつきませんでした。 今回の例でいくと、LoginActivityやそのレイアウトファイル等をモジュール化する、ということでしょうか。
yona

2016/07/27 03:11

LoginActivityの抽象クラスはモジュール化の対象になりますが、実装クラスは各アプリ毎に用意すべきだとおもいます。 ただ、これはプロジェクト開始時にすることなのでリリース直前ならオススメできないですね。 今回の場合はモジュール化では無くjavaフォルダを作成することで解決した方が良さそうです。
sanapapa

2016/07/27 04:49

ご教示ありがとうございます。その方向性で再度調査してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問