スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Android/アプリ(apk)ファイルをリバースエンジニアリングしてソースコードを確認する方法

1.対象のAPKファイルをzipファイルとして解凍し、下記のファイルおよびディレクトリを得る。
※zipの解凍ソフトで解凍可能。Lhaplus等

・META-INF
・res
・AndroidManifest.xml
・classes.dex
・resources.arsc

2.AndroidManifest.xmlや、res/layout/*.xmlなどテキストに変換
AXMLPrinter2.jarというツールで変換する。下記よりダウンロード。
http://code.google.com/p/android4me/downloads/list

3.下記コマンドで変換
java -jar AXMLPrinter2.jar AndroidManifest.xml
java -jar AXMLPrinter2.jar res/layout/main.xml

4.バイナリコード(dex)をバイナリコード(class)に変換

dex2jarというツールで変換する。下記よりダウンロード。
http://code.google.com/p/dex2jar/downloads/list

5.下記コマンドで変換

dex2jar.bat classes.dex

6.バイナリコード(class)をテキスト(java)に変換
JD-GUI(Java Decompiler)というツールで変換する。下記よりダウンロード。
http://java.decompiler.free.fr/?q=jdgui

7.jd-gui.exeを起動し、「5」で生成された「classes.dex.dex2jar.jar」を指定する。

以上でソースコードの内容が確認できます。
スポンサーサイト

Android/マーケットのアプリへのリンク(URL)の設定方法


Google playのアプリにリンクする場合は、次の URL 形式を使用します。

market://details?id=[パッケージ名]


パラメータは、ターゲット アプリケーションの完全修飾パッケージ名となります。これは、アプリケーションのマニフェスト ファイルにあるマニフェストの要素のパッケージ属性で指定されています。

例:
アンドロイド端末でのアプリURL指定例
market://details?id=com.example.application

アンドロイド端末のブラウザ、または他のブラウザでの指定は下記となります。
https://play.google.com/store/apps/details?id=com.example.application

Android/EditText(入力フォーム)の使う方法

■MainActivity

public class MainActivity extends Activity {
EditText editText;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

editText = (EditText) findViewById(R.id.EditText01);

//表示テキストを設定
editText.setText("EditTextTest");

//インプットタイプを設定
editText.setInputType(InputType.TYPE_CLASS_TEXT);

//最大行の設定
editText.setMaxLines(1);

// 空のときに表示させるヒントを設定
editText.setHint("This is Hint");

//カーソル位置を設定
editText.setSelection(3);
// EditText のテキストを全選択
// editText.selectAll();

//入力テキストを取得
String str = editText.getText().toString();
}
}

■main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText   
  android:hint="This is Hint"  
  android:id="@+id/EditText01"   
  android:inputType="text"   
  android:layout_height="wrap_content"   
  android:layout_width="wrap_content"    
  android:text="EditTextTest">  
</EditText> 
</LinearLayout>

Android/データベース(SQLite)の作成方法

SQLiteで利用できるデータ型は下記となります。
・INTEGER・・・符号付整数
・REAL・・・浮動小数点
・TEXT・・・テキスト
・BLOB・・・バイナリデータ
・NULL・・・NULL

■MainActivity

public class MainActivity extends Activity {
// データベースヘルパーの作成
private DbHelper hlp= new DbHelper(this);

public static SQLiteDatabase db;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//オープン
db = hlp.getWritableDatabase();
}
// クローズ処理
@Override
public void onDestroy(){
super.onDestroy();
hlp.close();
}
}





■DbHelper

public class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context) {
// ストレージ(ローカルファイル)にDBを作成
super(context, "test.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// テーブル作成処理
db.execSQL("CREATE TABLE testtable (_id INTEGER PRIMARY KEY, NUM INTEGER, NAME TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
}
}

Android/SDカードにインストールできるアプリを作る方法

Froyo(Android 2.2)からSDカードへのAndroidアプリのインストールがサポートされています。
この機能を利用するには下記の設定が必要となります。

AndroidManifest.xmlの下記を追加いたします。
・android:installLocation="auto"を追加

auto:SDカードへのインストール可能。内蔵ストレージ優先。
preferExternal:SDカードへのインストール可能。SDカード優先。
internalOnly:SDカードへのインストール不可。



■AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.blog.mogarhetric.SDinstall"
  android:versionCode="1"
  android:versionName="1.0"
  android:installLocation="auto">
  <application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:debuggable="true">
    <activity android:name=".MainActivity"
      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>
  <uses-sdk android:minSdkVersion="8" />
</manifest>

Android/Activityで画面を遷移する

ボタンを押すと画面遷移する例
■MainActivity
遷移元のActivity。
下記のメソッドで画面遷移する。
Intent intent = new Intent(MainActivity.this, TestActivity.class);
startActivity(intent);


public class MainActivity extends Activity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);

Button btn = (Button)findViewById(R.id.button01);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
// インテントのインスタンス生成
Intent intent = new Intent(MainActivity.this, TestActivity.class);
startActivity(intent);
}
});
}
}

■res/layout/main.xml
遷移元のレイアウト。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <TextView android:id="@+id/textview01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text= "MainActivityです。"
    />
  <Button android:id="@+id/button01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
  />
</LinearLayout>


■TestActivity
遷移先のActivity。

public class TestActivity extends Activity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.test);
}
}




■res/layout/test.xml
遷移先のレイアウト。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <TextView android:id="@+id/textview02"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text= "TestActivityです。"
    />
</LinearLayout>


■AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.test"
  android:versionCode="1"
  android:versionName="1.0">
  <application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".MainActivity"
      android:label="@string/app_name">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    <activity android:name=".TestActivity"
      android:label="@string/app_name">
    </activity>
  </application>
  <uses-sdk android:minSdkVersion="4" />
</manifest> 

Android/SimpleAdapterを使ってArrayListのデータをリストビュー表示させる方法

■SimpleAdapter
SimpleAdapter(Context context, List> data, int resource, String[] from, int[] to)

context:表示するView。今回はthis。
data:ListViewに表示するデータで、MapのListでデータを保持する。
resources:ListViewに表示するウィジェットの定義されているresourceのid。
from:ListViewに表示するdataのMapのキー項目。
to:ListViewに表示するウィジェットが定義されているresourcesの中のウィジェットのid。fromの0番目の値がtoの0番目に対応する。以降、1番目は1番目というように対応する。

listview1


■main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>

■row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="60dip"
    android:orientation="horizontal"
    >
<TextView
    android:id="@+id/num"
    android:layout_width="100dip"
    android:layout_height="wrap_content"
    />
<TextView
    android:id="@+id/name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />
</LinearLayout>

■MainActivity.java

public class MainActivity extends Activity {

String[] num = new String[] { 
        "01", "02", "03", "04", "05", 
        "06", "07", "08", "09", "10" 
    }; 

String[] name = new String[] { 
        "あいう", "かきく", "さしす", "たちつ", "なにぬ", 
        "はひふ", "まみむ", "やゆよ", "らりる", "わをん" 
    }; 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // データを格納するためのArrayListを宣言
        ArrayList<HashMap<String, String>> data
= new ArrayList<HashMap<String, String>>();

        for(int i = 0; i< 10; i++){
         HashMap<String, String> map
= new HashMap<String, String>();

         map.put("num", num[i]);
         map.put("name", name[i]);
        
         // 作成したmapをdataに追加
         data.add(map);
         }
        /*
 * 作成したdataとカスタマイズしたレイアウトrow.xmlを
         * 紐付けたSimpleAdapterを作成する
         */
        SimpleAdapter sa
= new SimpleAdapter(this, data, R.layout.row, 
                new String[]{"num", "name"},
                new int[]{R.id.num, R.id.name}
        );
        // main.xmlのListViewにsaをセットします。
        ListView lv = (ListView)findViewById(R.id.listview);
        lv.setAdapter(sa);
    }
}

Android/端末のメニュー(Menu)ボタンを設定する方法


Androidアプリ実行中に、端末のMenuボタンを押す事で現れるオプションメニューがあります。
こちらを利用するには、以下のようになります。


public class MenuTestActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

// オプションメニューが最初に呼び出される時に1度だけ呼び出されます
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// メニューアイテムを追加します
menu.add(Menu.NONE, Menu.FIRST, Menu.NONE, "Menu1");
menu.add(Menu.NONE, Menu.FIRST+1, Menu.NONE, "Menu2");
return super.onCreateOptionsMenu(menu);
}

// オプションメニューが表示される度に呼び出されます
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
//動的にメニューの内容を変更する場合に使用
return super.onPrepareOptionsMenu(menu);
}

// オプションメニューアイテムが選択された時に呼び出されます
@Override
public boolean onOptionsItemSelected(MenuItem item) {
boolean ret = true;
switch (item.getItemId()) {
default:
ret = super.onOptionsItemSelected(item);
break;
case Menu.FIRST:
ret = true;
break;
}
return ret;
}
}

Android/タイトルバーやステータスバーを非表示にして全画面表示をする方法

Activityに下記を追加する

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);

package com.blog.mogarhetric.NoTitle;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class NoTitleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);


setContentView(R.layout.main);
}
}


または、AndroidManitfest.xml ファイルのアクティビティのテーマを下記に修正。
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blog.mogarhetric.NoTitle"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".NoTitleActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>

Google play (android market) にデベロッパー登録する方法

Google play (android market) にAndroidアプリを配信登録するためには
Google play デベロッパーに登録する必要があります。

登録には下記のものが必要です。
・Googleアカウント
・25$

具体的な手順は下記になります。

1.https://play.google.com/apps/publish/にアクセス
※Googleアカウントがなければ「sign up」から作成する。

下記の情報を登録する。
・デベロッパー名
・メールアドレス
・ウェブサイトのURL
・電話番号

アンドロイドデベロッパー登録1

2.Androidマーケットデベロッパー販売・配布計約に同意する

アンドロイドデベロッパー登録2

3.登録料は25$です。年間契約とかではありません。支払いは一度だけです。

アンドロイドデベロッパー登録3

4.続けて、クレジットカード情報を登録する。
使用できるカードはViSA、MASTERCARD、AMEX、DISCOVERです。JCBには対応していません。

アンドロイドデベロッパー登録4

※電話番号を入力する時は、国番号も入力する必要があります。日本の国番号は81になります。
・国番号(81)+市外局番に0があれば0を除いた番号
例えば 06-1234-1234であれば 81612341234 を入力します。

※クレジットカードの登録情報と入力した住所などの情報に差異があると弾かれるようです。



5.完了するとhttps://play.google.com/apps/publish/Homeからアプリをアップできるようになります。

アンドロイドデベロッパー登録5



アフィリエイト・SEO対策





プロフィール

mogarhetoric

Author:mogarhetoric
アプリ好きな人です。アンドロイドアプリとか作ったりしてます。

最新記事
月別アーカイブ
カテゴリ
検索フォーム
リンク
QRコード
QR
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。