2012年6月23日土曜日

Androidアプリ開発小ネタ




(絵と本文に関係はありません)
ちなみに「これ、羊なの」だ、そうです


さて、Androidアプリの世界では
  • 無償版。Free。機能制限 and 広告有り
  • 有償版。Full機能 and 広告無し
というのは結構定番ですよね

今回は、アプリ開発の観点から、上記をスマートに実現する方法を考えます
(ググっても良いやり方が買いてあるブログ、サイトが見つけられなかったので・・・)

通常、これらのアプリは別アプリとしてMarketに置かれています
よってPackageとしては別になります
そのため物理的に一つのソースコード(.javaファイル)を共通して持つ事はできません。Javaは実装毎に自分がどのパッケージに含まれるのか明記が必要だからです(という理解です)

一方、有償、無償、双方に共通の機能は共通の(ひとつの)実装にしたいと普通は考えます
Java、Android開発の経験が浅かった事もあり、また実質開発終了していたため、以前は真面目に考えずコピーして済ませてしまいました

今回はまだ公開前という事あり、ちゃんと考えてみました

ちなみに現時点ではまだ机上検討レベルで未確認です
実装してみて課題や解法見えたら、またここに追記したいと思っています

ポイントは継承です(今考えるとすげー普通)

その1
  1. 有償版(広告無し)を実装
  2. 無償版は有償版のMainActivityを継承 (importで有償版のパッケージを指定する事で可能になるはず)
  3. 無償版Activityで広告viewの追加およびlistener回りの処理を追加。また機能制限されているものは蓋をする(この仕組みは有償版に入れておく必要あり)
その2
  1. 無償版(広告有り)を実装
  2. その1同様、有償版は無償版のActivityを継承する
  3. 有償版のActivityでは広告表示を停止する。また必要な追加機能等をactivateする(同じく無償版は有償版限定機能も実装しておき、蓋をしておく必要がある)
ただし上記その1、その2では親クラスとなるActivity(およびパッケージ)が、本来そのパッケージには関係の無い機能を(蓋をするなりして)有しているという事になり、デザイン上はあまり好ましく無さそうです(まあ、個人開発のレベルでは問題にならないと思いますが)

よって、理想的には
  1. 無償、有償で共通な機能をcommon packageで実装する
  2. 無償、有償それぞれがcommon packageを継承したactivityを作成
  3. 無償、有償それぞれにそれぞれ必要な機能を追加する
ですね。common packageはいわゆる.apkを生成する必要はなく、未公開という事になります。

まずはこれで今作ってるやつ実装してみます



0 件のコメント:

コメントを投稿