サンプルプログラム工場

AAKAKA Appで使われているプログラムのサンプルコードをそのまま公開!

サンプルプログラム工場 > android > [Android]有料版 無料版をプロジェクトで分けるサンプル#tryFreeOrPay00
Google Play AAKAKAxSOFTへ

[Android]有料版 無料版をプロジェクトで分けるサンプル#tryFreeOrPay00

実行ファイル(APK)やサンプル(zip)をダウンロードする
tryFreeOrPay00の実行イメージtryFreeOrPay00の実行イメージ

無料版と有料版をなるべく楽に作れるようにする。
ソースを共有するようにして、2つのパッケージを1カ所だけ修正で済ませるようにする。
tryFreeOrPay00FreeからtryeFreeOrPay00のソースを参照するようにする。

tryFreeOrPay00をライブラリプロジェクトとして参照する
tryFreeOrPay00Freeを無料版として作る(AndroidManifest.xml以外はほぼ触らない)
tryFreeOrPay00Paidを有料版として作る(AndroidManifest.xml以外はほぼ触らない)

tryFreeOrPay00のプロジェクトのプロパティの[Android]→ライブラリの[ライブラリ]にチェックを入れる。
tryFreeOrpay00Freeのプロジェクトのプロパティの[Android]→ライブラリの[参照]にtryFreeOrPay00を加える。
tryFreeOrpay00Paidのプロジェクトのプロパティの[Android]→ライブラリの[参照]にtryFreeOrPay00を加える。

tryFreeOrPay00を有料版として作ろうとしたんだけど、ライブラリプロジェクトにしないといけないのでAPK作るときにエクスポートできないといわれた。
tryFreeOrPay00のライブラリのチェックを外せばエクスポートできると思うけど、手間に思えるので別にPaidプロジェクトを作ってやる方が楽でいいと思う。

検索した事
 android 無料版 有料版

開発環境
 Eclipse IDE バージョン: 4.2.1

ActivityFreeOrPayプロジェクトに以下のようなソースを用意する

package com.example.tryfreeorpay00;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class ActivityFreeOrPay extends Activity {

	// 有料版のパッケージ名
	private static final String PAY_VER_PACKAGE = "com.example.tryfreeorpay00paid";
	
	// ______________________________________________________________________________
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_free_or_pay);
		
		// コントロールを取り出す
		View view = this.findViewById(R.id.view1);
		TextView textView = (TextView)this.findViewById(R.id.textView1);
		
		//__________________________________________________________
		// 有料版?
		if (this.isPayVersion()) {
			view.setBackgroundColor(0xff7fffff);
			textView.setText("有料ですよ!");
		//__________________________________________________________
		// フリー版?
		} else {
			view.setBackgroundColor(0xffffff7f);
			textView.setText("無料ですよ!");
		}
	}

	// ______________________________________________________________________________
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_free_or_pay, menu);
		return true;
	}
	
	// ______________________________________________________________________________
	/**
	 * 有料版かどうか調べる
	 * @return true:有料版
	 */
	private boolean isPayVersion() {
		
		// パッケージ名を取り出す
		String packageName = this.getPackageName();
		
		// フリーの証がついてた
		if (packageName.equals(PAY_VER_PACKAGE)) {
			return true;
		}
		return false;
	}

}

基本的な表示のレイアウト

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:tools="http://schemas.android.com/tools"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:paddingBottom="@dimen/activity_vertical_margin"
	android:paddingLeft="@dimen/activity_horizontal_margin"
	android:paddingRight="@dimen/activity_horizontal_margin"
	android:paddingTop="@dimen/activity_vertical_margin"
	tools:context=".ActivityFreeOrPay" >

    <View
    	android:id="@+id/view1"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:layout_alignParentLeft="true"
    	android:layout_alignParentTop="true" />

    <TextView
    	android:id="@+id/textView1"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:layout_centerHorizontal="true"
    	android:layout_centerVertical="true"
    	android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

フリー版用のプロジェクト(ActivityFreeOrPay00Free)
AndroidManifest.xmlだけ変更する。
ビルドをこちらからするとフリー用のAPKファイルができあがる。
メインのプロジェクトへの参照を忘れないようにする。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.example.tryfreeorpay00free"
	android:versionCode="1"
	android:versionName="1.0" >

	<uses-sdk
		android:minSdkVersion="8"
		android:targetSdkVersion="17" />

	<application
		android:allowBackup="true"
		android:icon="@drawable/ic_launcher"
		android:label="@string/app_name"
		android:theme="@style/AppTheme" >
		<!-- Activityなどはすべてtryfreeorpay00を参照するようにする -->
		<!-- このプロジェクトはパッケージ名だけを提供する、後の処理はすべてtryfreeorpay00に回す -->
		<activity
			android:name="com.example.tryfreeorpay00.ActivityFreeOrPay"
			android:label="@string/app_name" >
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />

				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>
	</application>

</manifest>

有料版用のプロジェクト(ActivityFreeOrPay00Free)
AndroidManifest.xmlだけ変更する。
ビルドをこちらからすると有料版用のAPKファイルができあがる。
メインのプロジェクトへの参照を忘れないようにする。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.example.tryfreeorpay00paid"
	android:versionCode="1"
	android:versionName="1.0" >

	<uses-sdk
		android:minSdkVersion="8"
		android:targetSdkVersion="17" />

	<application
		android:allowBackup="true"
		android:icon="@drawable/ic_launcher"
		android:label="@string/app_name"
		android:theme="@style/AppTheme" >
		<activity
			android:name="com.example.tryfreeorpay00.ActivityFreeOrPay"
			android:label="@string/app_name" >
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />

				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>
	</application>

</manifest>

何かの機能を追加したい場合はメインプロジェクトをいじるようにする。
ただ、ライブ壁紙のような無料版では設定できない、有料版では設定できる風にするには、有料、無料プロジェクトのほうで設定画面を作って呼び出すようにするとうまくいく。

サンプルプロジェクトをダウンロード

, , , , ,

[Android]スクラッチのように画面をこすると下の画像が浮き出てくるサンプ... [Android]ライブ壁紙(LiveWallPaper)のサンプル#tryLiveWallPaper00

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>