JAD(バージョン158g)とJD(0.3.0)を使用して自作のプログラムをデコンパイルしてみました。
・class及びjarをデコンパイル
JAD、JDどちらもソースをほぼ復元。
容易に改ざん&再コンパイルできてしまう。
・apkをdex2jar0.9.Xでデコンパイル+(JAD または JD)
JADの場合はループ内処理が複雑だとエラーコメント入りスキップされるが、処理を読めば復元できる。
JDの場合はエラーコメントは無くソースがバラバラになってしまうので復元は難しい。
どちらにも言える事はCASE文を復元できない(ラベルとGOTO文になる)
apkファイルのデコンパイル技術はまだ発展段階なので、解析するにはアセンブラの知識が必須。
他にapkをデコンパイルするツール(dedex)がありますが今回は検証しませんでした。
2012年3月11日日曜日
2012年3月8日木曜日
開発メモ④端末ごとの挙動の違い
実機テストの際にスマホとタブレットの両方で検証しています。
端末ごとの動作の違いの中でも、ヒープ領域とタッチイベントが少々引っかかります。
・タッチイペントの違い
操作の際にタッチイペントが連続して発生し易い端末とそうでない端末があるので、イベントの制御処理が必要です。
タッチ開始時刻+コンマ数秒 > 現在時刻 など
・ヒープ領域の違い
root権限がないとヒープ領域は増やせないようです。
画像を使う処理なら端末性能に合わせてメモリ消費を抑える必要があります。
端末ごとの動作の違いの中でも、ヒープ領域とタッチイベントが少々引っかかります。
・タッチイペントの違い
操作の際にタッチイペントが連続して発生し易い端末とそうでない端末があるので、イベントの制御処理が必要です。
タッチ開始時刻+コンマ数秒 > 現在時刻 など
・ヒープ領域の違い
root権限がないとヒープ領域は増やせないようです。
画像を使う処理なら端末性能に合わせてメモリ消費を抑える必要があります。
2012年3月7日水曜日
パソコン知識②安全なインターネット
安全にインタネットを使うには
1、ウイルス対策ソフト
ウイルス対策ソフトが入っていないならavastがお勧め
http://www.avast.co.jp/free-antivirus-download
無料な上に有料ソフト以上の性能です。
2、拡張子について知る
拡張子はファイルとアプリの関連付けをするためにある
ファイル名右端の半角英数です。
ファイル名.拡張子
拡張子はデフォルトでは見えないので見えるようにします。
エクスプローラの「ツール」→「フォルダオプション」→「表示」
→「登録されている拡張子は表示しない」のチェックを外す
jpgやmp4など画像や動画ファイルは安全ですが
.exeなどの実行ファイルはウイルスやアドウェアが仕組まれている場合があります。
危険性の高いファイルは信頼性の高いサイトのものだけ実行しましょう。
1、ウイルス対策ソフト
ウイルス対策ソフトが入っていないならavastがお勧め
http://www.avast.co.jp/free-antivirus-download
無料な上に有料ソフト以上の性能です。
2、拡張子について知る
拡張子はファイルとアプリの関連付けをするためにある
ファイル名右端の半角英数です。
ファイル名.拡張子
拡張子はデフォルトでは見えないので見えるようにします。
エクスプローラの「ツール」→「フォルダオプション」→「表示」
→「登録されている拡張子は表示しない」のチェックを外す
jpgやmp4など画像や動画ファイルは安全ですが
.exeなどの実行ファイルはウイルスやアドウェアが仕組まれている場合があります。
危険性の高いファイルは信頼性の高いサイトのものだけ実行しましょう。
開発メモ④データベースの違い
SQL ServerとOracleでトランザクション分離レベルが異なる
オラクルのトランザクション分離レベルはオラクル独自のものなので注意が必要。
SQLServer READ_COMMITTED_SNAPSHOT
||
Oracle READ_COMMITTED
オラクルには標準のREAD_COMMITTEDが存在しないため
プログラムをSQLServer→Oracleに変更するときには要注意。
オラクルのトランザクション分離レベルはオラクル独自のものなので注意が必要。
SQLServer READ_COMMITTED_SNAPSHOT
||
Oracle READ_COMMITTED
オラクルには標準のREAD_COMMITTEDが存在しないため
プログラムをSQLServer→Oracleに変更するときには要注意。
お勧め①ノベルゲーム
お勧めノベルゲーム
機種:PC、PS2、PSP、XBOX360
どこかが壊れている人々の物語。
コメディ&シリアスの中に高度な伏線が潜む感動作。
機種:PC、PS2、PSP、XBOX360
刑罰について色々考えさせられる物語。
ミスリードとカタルシスをたっぷり味わえます。
機種:PC
物語らしい物語。
とても読みやすくて安らぎます。
一般的な学園物に飽きた方にお勧めです。
機種:PC、PS2、PSP、XBOX360
どこかが壊れている人々の物語。
コメディ&シリアスの中に高度な伏線が潜む感動作。
機種:PC、PS2、PSP、XBOX360
刑罰について色々考えさせられる物語。
ミスリードとカタルシスをたっぷり味わえます。
機種:PC
物語らしい物語。
とても読みやすくて安らぎます。
一般的な学園物に飽きた方にお勧めです。
開発メモ③メモリリーク
・以下のエラーの原因と対処法
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
allocation too large for this process.
・アクティビティを別のクラスへ参照渡ししている場合
原因
画面遷移などでアクティビティが破棄されてしまうため
対処法
アクティビティの参照渡しを
this→getApplication またはgetApplicationContextに変更する
・ImageButtonやImageViewなどからメンバ変数のBITMAPを使用している場合
原因
内部的な描画処理(Drawable)がBITMAPを参照しているため
対策
明示的にBITMAPを解放する
setImageDrawable(null);
BITMAP.recycle();
BITMAP=null;
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
allocation too large for this process.
・アクティビティを別のクラスへ参照渡ししている場合
原因
画面遷移などでアクティビティが破棄されてしまうため
対処法
アクティビティの参照渡しを
this→getApplication またはgetApplicationContextに変更する
・ImageButtonやImageViewなどからメンバ変数のBITMAPを使用している場合
原因
内部的な描画処理(Drawable)がBITMAPを参照しているため
対策
明示的にBITMAPを解放する
setImageDrawable(null);
BITMAP.recycle();
BITMAP=null;
2012年3月5日月曜日
開発メモ②表示を端末のサイズに合わせる
☆画面を端末のサイズに合わせる
マニュフェストXMLに以下を追記
<manifest>
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
</manifest>
2012年3月4日日曜日
パソコン知識①ショートカットキー
パソコンを使用するならショートカットキーを一通り覚えておくと便利です。
使用頻度の高い個所を緑にしました。
押すキー
|
操作
|
---|---|
Ctrl + C
|
選択した項目をコピーする
|
Ctrl + X
|
選択した項目を切り取る
|
Ctrl + V
|
選択した項目を貼り付ける
|
Ctrl + Z
|
操作を元に戻す
|
Ctrl + Y
|
元に戻した操作を元に戻す
|
Ctrl + F
|
指定した文字を検索する
|
F2
|
選択した項目の名前を変更する
|
Ctrl + →
|
次の単語の先頭にカーソルを移動する
|
Ctrl + ←
|
前の単語の先頭にカーソルを移動する
|
Ctrl + ↓
|
次の段落の先頭にカーソルを移動する
|
Ctrl + ↑
|
前の段落の先頭にカーソルを移動する
|
Ctrl + Shift + 方向キー
|
テキストのブロックを選択する
|
Shift + 任意の方向キー
|
ウィンドウ内またはデスクトップ上の複数の項目を選択する、またはドキュメント内のテキストを選択する
|
Ctrl + A
|
ドキュメントまたはウィンドウ内の項目をすべて選択する
|
F3
|
ファイルやフォルダを検索する
|
Alt + Enter
|
選択した項目のプロパティを表示する
|
Alt + F4
|
アクティブな項目を閉じる、またはアクティブなプログラムを終了する
|
Alt + Space
|
作業中のウィンドウのショートカット メニューを開く
|
Ctrl + F4
|
作業中のドキュメントを閉じる (複数のドキュメントを同時に開くことのできるプログラム内で)
|
Alt + Tab
|
開いている各項目間で切り替える
|
Ctrl + Alt + Tab
|
方向キーを使用して、開いている各項目間で切り替える
|
Windows ロゴ キー + R
|
ファイル名を指定して実行
|
Ctrl + Windows ロゴ キー + Tab
|
方向キーを使用して、タスク バー上の各プログラムを巡回する (Windows フリップ 3-D を使用)
|
Alt + Esc
|
開かれた順序で各項目を巡回する
|
F6
|
ウィンドウ内またはデスクトップ上の各画面要素を巡回する
|
F4
|
エクスプローラのアドレス バー リストを表示する
|
Shift + F10
|
選択した項目のショートカット メニューを表示する
|
Ctrl + Esc
|
[スタート] メニューを開く
|
Alt + 下線の付いた文字
|
対応するメニューを表示する
|
Alt + 下線の付いた文字
|
メニュー コマンド (または他の下線の付いたコマンド) を実行する
|
F10
|
アクティブ プログラムのメニュー バーをアクティブにする
|
→
|
次のメニューを右側へ開くか、またはサブメニューを開く
|
←
|
次のメニューを左側へ開くか、またはサブメニューを閉じる
|
F5
|
作業中のウィンドウを最新の情報に更新する
|
Alt + ↑
|
エクスプローラ内で 1 つ上のフォルダを表示する
|
Esc
|
現在の作業を取り消す
|
Ctrl + Shift + Esc
|
タスク マネージャを開く
|
Shift (CD 挿入時)
|
CD が自動的に再生しないようにする
|
開発メモ①エラー関連
--☆エラー処理を作るのが面倒な時
http://www.adamrocker.com/blog/288/bug-report-system-for-android.html引用
import java.lang.Thread.UncaughtExceptionHandler;
アクティビティクリエイト処理{
Context context = getApplicationContext();
Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler(context));
}
--例外処理スレッド
public class MyUncaughtExceptionHandler implements UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread th, Throwable e) {
//catchされなかった例外は最終的にココに渡される
}
}
これで何処にエラーが発生してもキャッチして処理できます
--☆よくわからないエクリプスのエラー対処
AKPツール コンパイルエラー
レイアウトエディターのエラー
Conversion to Dalvik format failed with error 1
コマンドプロンプトで以下を実行
start eclipse.exe -clean %*
--☆ADB INSTALL エラー
Segmentation faultと表示された場合
アプリ名が日本語なのが原因→APKの名前を半角英数に変更
兎に角、よくわからないエラーが出た時はcleanコマンド!
登録:
投稿 (Atom)