作成されたファイルで確認する場合
デバッグビルドの場合の通常のビルドの時のファイルサイズと
難読化後のファイルサイズを確認して、小さくなっているか確認する。
ルートディレクトリににproguardフォルダが出来ているか確認して、
proguardフォルダの中に
dump.txt
mapping.txt
seeds.txt
usage.txt
の四つのファイルが作成されているか確認する。
中身を見て確認する場合
1.必要なファイルをダウンロードしてくる。
apktool-install-windows-r04-brut1.tar.bz2
apktool1.4.3.tar.bz2
ダウンロードはこちらから
2.ダウンロードしたファイルを解凍する。
aapt.exe
apktool.bat
apktool.jar
解凍後パスの通っているディレクトリにコピーする
3.デコンパイルの実行
プロジェクト名:AnProject
apkファイルの場所:E:\workspace\AnProject\bin
コマンドプロンプトでコマンドを実行
C:\Users\yamto>cd /d e:
E:\>cd workspace\AnProject\bin
E:\workspace\AnProject\bin>apktool d AnProject.apk
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Loading resource table from file: C:\Users\yamto\apktool\framework\1.apk
I: Loaded.
I: Decoding file-resources...
I: Decoding values*/* XMLs...
I: Done.
I: Copying assets and libs...
E:\workspace\AnProject\bin>
----------------------------------------
E:\workspace\AnProject\bin に
AnProject フォルダが作成されている。
4.smaliディレクトリの比較
smaliディレクトリを見ることでProGuardを適用しない場合と適用した場合を確認することができる。
2012年2月7日火曜日
2012年2月6日月曜日
Eclipseで証明書の作成、著名、難読化
準備編
Windowsで開発(他の環境は文字コードに注意)
Eclipse Indigo でAndroidプロジェクトを作成してる。
Android SDK は android-sdk_r16-windows.zip を使用
難読化の為に、プロジェクトのルートフォルダのproject.properties に
proguard.config=proguard.cfg
と追記する。
SDKのツールに入っているProGuardに難があるようなので修正する。
\Android\android-sdk\tools\proguard\bin\proguard.bat の一部を書き換える。
修正前
パッケージエクスプローラからプロジェクトを選択して右クリックで、
Android ツール から export signed application package... を選択する。
後は指示に従って進めていく。
Windowsで開発(他の環境は文字コードに注意)
Eclipse Indigo でAndroidプロジェクトを作成してる。
Android SDK は android-sdk_r16-windows.zip を使用
難読化の為に、プロジェクトのルートフォルダのproject.properties に
proguard.config=proguard.cfg
と追記する。
SDKのツールに入っているProGuardに難があるようなので修正する。
\Android\android-sdk\tools\proguard\bin\proguard.bat の一部を書き換える。
修正前
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*
修正後
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
パッケージエクスプローラからプロジェクトを選択して右クリックで、
Android ツール から export signed application package... を選択する。
後は指示に従って進めていく。
2012年1月29日日曜日
AVDのモニタサイズ
| QVGA | 240 x 320 |
|---|---|
| WQVGA400 | 240 X 400 |
| WQVGA432 | 240 X 432 |
| HVGA | 320 X 480 |
| WVGA800 | 480 X 800 |
| WVGA854 | 480 X 854 |
| WXGA | 1280 X 800 |
2012年1月28日土曜日
XML読み込み
XML読み込み部分
res/raw フォルダにあるファイルを読み込む
表示部分
XmlPullParserFactory factory; factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); XmlPullParser xpp = factory.newPullParser(); xpp.setInput( new StringReader ( "Hello World! " ) ); int eventType = xpp.getEventType();
res/raw フォルダにあるファイルを読み込む
XmlPullParserFactory factory; factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); XmlPullParser xpp = factory.newPullParser(); InputStream inputStream = getResources().openRawResource(R.raw.filename); xpp.setInput(inputStream ,"UTF-8"); int eventType = xpp.getEventType();
表示部分
while (eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_DOCUMENT) {
System.out.println("Start document");
} else if(eventType == XmlPullParser.START_TAG) {
System.out.println("Start tag "+xpp.getName());
} else if(eventType == XmlPullParser.END_TAG) {
System.out.println("End tag "+xpp.getName());
} else if(eventType == XmlPullParser.TEXT) {
System.out.println("Text "+xpp.getText());
}
eventType = xpp.next();
}
System.out.println("End document");
2012年1月6日金曜日
フロントカメラと背面カメラの同時表示
二つのカメラを同時に利用できるか、試してみました。
AVDでは利用できるようです。実機では試していません。
別に特別な事は必要ありませんでした。
以外に簡単でした。
AVDでは利用できるようです。実機では試していません。
別に特別な事は必要ありませんでした。
以外に簡単でした。
package com.android.camera2;
import java.util.List;
import android.app.Activity;
import android.hardware.Camera;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class Android2CameraActivity extends Activity {
private Camera camera;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SurfaceView mySurfaceView = (SurfaceView) findViewById(R.id.surfaceView1);
SurfaceHolder holder = mySurfaceView.getHolder();
holder.addCallback(mSurfaceListener);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
SurfaceView mySurfaceView2 = (SurfaceView) findViewById(R.id.surfaceView2);
SurfaceHolder holder2 = mySurfaceView2.getHolder();
holder2.addCallback(mSurfaceListener2);
holder2.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
// カメラの総数
int numberOfCameras = Camera.getNumberOfCameras();
Log.d("個数", String.valueOf(numberOfCameras));
}
private SurfaceHolder.Callback mSurfaceListener = new SurfaceHolder.Callback() {
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera = Camera.open(0);
try {
camera.setPreviewDisplay(holder);
} catch (Exception e) {
e.printStackTrace();
Log.d("エラー", "001" );
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera.release();
camera = null;
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
Log.d("サーフェイスサイズ", "w=" + String.valueOf(width) + "h=" + height);// 320x180
camera.stopPreview();
// camera.setDisplayOrientation(90);// カメラを回転
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> size = parameters.getSupportedPreviewSizes();
Log.d("カメラのサイズ", "w=" + String.valueOf(size.get(0).width) + "h="
+ String.valueOf(size.get(0).height));//
parameters.setPreviewSize(size.get(0).width, size.get(0).height);
camera.setParameters(parameters);
camera.startPreview();
}
};
/*
*
*/
private SurfaceHolder.Callback mSurfaceListener2 = new SurfaceHolder.Callback() {
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera = Camera.open(1);
try {
camera.setPreviewDisplay(holder);
} catch (Exception e) {
e.printStackTrace();
Log.d("エラー", "001" );
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera.release();
camera = null;
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
Log.d("サーフェイスサイズ", "w=" + String.valueOf(width) + "h=" + height);
camera.stopPreview();
// camera.setDisplayOrientation(90);// カメラを回転
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> size = parameters.getSupportedPreviewSizes();
Log.d("カメラのサイズ", "w=" + String.valueOf(size.get(0).width) + "h="
+ String.valueOf(size.get(0).height));//
parameters.setPreviewSize(size.get(0).width, size.get(0).height);
camera.setParameters(parameters);
camera.startPreview();
}
};
}
登録:
投稿 (Atom)

