●Activityの回転時の再生成への対応

①再起動させなければいいので、onConfigurationChanged() メソッドをオーバーライド

②Activityのマニフェストに android:configChanges="orientation|keyboardHidden"
@Override
   public void onConfigurationChanged(Configuration newConfig) {
   	super.onConfigurationChanged(newConfig);
   }

(Softbank 005SHでは、keyboardHiddenが必要だった。)


●Eclipseの入力補完(オートコンプリート)が遅い件
バージョン3.62にすれば問題ないらしい

●アップデート後など、eclipseが起動しなくなった場合
eclipse\configuration\jp.sourceforge.mergedoc.pleiades フォルダを削除したらOKだった

●Android アプリ開発時、有料・無料の2種プロジェクトを作るTips
(ソースを2プロジェクトで共有する方法)

こちらを参考にさせてもらいました。
(Androidの無料アプリ・有料アプリを切り替えてビルドする方法)
http://d.hatena.ne.jp/eaglesakura/20100629/1277832265

上記URLで書いてあった方法は、部分的に、自分のアプリでは対応できない部分があったので、自分のやった方法で、全体名流れを補足。


  • まず2つプロジェクトを普通に作る。(基本app-freeと派生app-paid)

  • 2つのパッケージ名はそれぞれ、
com.appli.free
com.appli.paid
など、最後の1段落のみ変えたりするとわかりやすいかも。
プロジェクト名は、ここでは「app-free」「app-paid」としてみる。


  • 派生プロジェクトpaidでは、src、assets、resディレクトリを、
リンクしたディレクトリとする。

  • 派生プロジェクトapp-paidでは、基本プロジェクトapp-free内の自動生成ファイルR.javaが必要になる。
手動で毎回やるのは酷なので、派生プロジェクトapp-paidビルド時に毎回app-free側のR.javaが自動でコピーされるよう、バッチファイルを作成、プロジェクトのプロパティ、ビルダー、で、ビルド時に毎回実行されるようにする。初回はプロジェクトのクリーンを実行で、×マーク消える。
${build_project}\rcopy.bat
${build_project}

上記サイトを参考にさせていただきました。
rcopy.bat
::--------------------------------
@echo off
SET PARENT_PROJECT=app-free
SET CURRENT_PROJECT=app-paid
REM 定義ファイルをコピーする
cd ..\%PARENT_PROJECT%\
REM genフォルダをコピーする
xcopy /s /e /y .\gen ..\%CURRENT_PROJECT%\gen
cd ..\CURRENT_PROJECT\
::--------------------------------

  • リソースを共有するので、有料版、無料版をそれぞれリソースに含めるので、容量はダブって損となる。気にする人は気にするかも?でも自分は利便性を取りました。

@string/app_name
@string/app_name_paid

@drawable/icon
@drawable/icon_paid

  • AndroidManufest.xmlは、アプリそれぞれに設定する。
(パッケージ名、label )
アクティビティ名を、省略名ではなく、<activity android:name="light.diary.plus.EditWindow"
などにする必要があるかも



これらの結果、
  • app-freeプロジェクト、はほかの通常のプロジェクトとなんら変わりない
  • app-paidプロジェクトは、res, asset, srcがリンクフォルダであり、src内パッケージは「com.appli.free」がある状態。
  • ×印が消えない場合は、プロジェクトのクリーン&eclipseの再起動、F5キーによるリフレッシュなどをトライ。
  • (必要に応じて、import light.diary.plus.R; ?)
  • 有料・無料の処理切り分けは、getPackageName()で行う。



●プログレスダイアログProgress Dialog
既に動いているサンプルをそのまま使うのが吉。
スレッド以外でGUI操作するとメモリエラーとなる。


引用


   ProgressDialog progressDialog;
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       progressDialog = new ProgressDialog(this);
       /*progressDialog.setTitle("処理中");
       progressDialog.setMessage("処理を実行中です");
       progressDialog.setIndeterminate(false);        progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
       progressDialog.show();*/
       Thread thread = new Thread(this);
       thread.start();
   }
   public void run() {
       // 時間のかかる処理をここに記述。
       try {
           progressDialog.setTitle("処理中");
           progressDialog.setMessage("処理を実行中です");
           progressDialog.setIndeterminate(false);           progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
           handler.post(new Runnable() {
               @Override
               public void run() {
                   progressDialog.show();
               }
           });
           Thread.sleep(5000);
       } catch (InterruptedException e) {
           // TODO 自動生成された catch ブロック
           e.printStackTrace();
       }
       handler.sendEmptyMessage(0);
   }
   private Handler handler = new Handler() {
       public void handleMessage(Messa

●ADTアップデート等エラーのときのEclipse クリーン
http://www.hlplus.jp/php/blog/index.php?UID=1298450960



名前:
コメント:
最終更新:2012年05月07日 13:13