keytool和jarsiger是jdk带的工具,zipalign是android sdk带的工具
1.使用keytool生成private key
命令行:keytool -genkey -v -keystore my-release-key.keystore -alias my-rele
ase -keyalg RSA -keysize 2048 -validity 10000
这样就在用户目录下生成一个my-release-key.keystore文件
2.获取该private key的 MD5 fingerprint (在android中使用google地图时,获取地图的api key需要MD5 fingerprint )http://code.google.com/intl/zh-CN/android/add-ons/google-apis/maps-api-signup.html
命令行:keytool -list -alias my-release -keystore my-release-key.keystore
3.从eclipse导出.apk文件,在package explorer中选择project,右键 Android Tools > Export Unsigned Application Package
4.使用private key给.apk文件签名
命令行:jarsigner -verbose -keystore my-release-key.keystore LFM.apk my-release
5.验证签名是否成功
加-verbose和-certs能输出更详细的信息
6.优化应用程序
命令行:zipalign -v 4 LFM.apk LFM-Align.apk
开发手机应用程序的时候,除了底层对API的掌握外,最重要的仍是屏幕分辨率概念的里加尔,由于各个手机厂商采用的屏幕尺寸不同,UI接口呈现及布局自然也在、各种迥异。
Android可设置为随着窗口大小调整缩放比例,但即使如此,手机程序设计人员还是必须清楚的知道手机屏幕的边界,以避免缩放后造成的布局变形等问题,下面是个小例子,只需要几句即可获得手机分辨率,当中最关键的就是DisplayMetrics类的应用
metrics ['metriks] 度量,测量
heightPixels:显示高度的绝对像素
widthPixels:显示宽度的绝对像素
运行结果:
代码一:
public Bitmap ResizeBitmap(Bitmap bitmap, int newWidth) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
float temp = ((float) height) / ((float) width);
int newHeight = (int) ((newWidth) * temp);
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// matrix.postRotate(45);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
bitmap.recycle();
return resizedBitmap;
}
代码二:
public Bitmap resizeBitmap(Bitmap bitmap, int maxWidth, int maxHeight) {
int originWidth = bitmap.getWidth();
int originHeight = bitmap.getHeight();
// no need to resize
if (originWidth < maxWidth && originHeight < maxHeight) {
return bitmap;
}
int width = originWidth;
int height = originHeight;
// 若图片过宽, 则保持长宽比缩放图片
if (originWidth > maxWidth) {
width = maxWidth;
double i = originWidth * 1.0 / maxWidth;
height = (int) Math.floor(originHeight / i);
bitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);
}
// 若图片过长, 则从上端截取
if (height > maxHeight) {
height = maxHeight;
bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height);
}
// Log.i(TAG, width + " width");
// Log.i(TAG, height + " height");
return bitmap;
}