节选自:libcore.io.ErrnoException: kill failed: ESRCH (No such process)
发生崩溃的原因log里说的很清楚,就是被destroy的进程已经不存在了。
节选自:libcore.io.ErrnoException: kill failed: ESRCH (No such process)
发生崩溃的原因log里说的很清楚,就是被destroy的进程已经不存在了。
节选自:Android 系统文件限制小探
在Linux系统中,每个进程可以使用的FD数量是有上限的,在Android中这个上限为1024,表示每个进程可以创建的file descriptors 不能超多1024个。当系统某一文件的打开句柄数超过1024时,就会报错:
"Too many open files"
修改系统最大打开文件数量:
在init.rc中增加: setrlimit 7 1048 1048
节选自:Eclipse中文字体大小修改
解决方法如下:Window –> Preferences –> General –> Appearance –> Colors and Fonts,展开”Basic” 选择”Text Font”,然后点”Edit”,把大小里的值改为”五号”即可。
节选自:android 版本号大小比较
/**
* 版本号比较
*
* @param version1
* @param version2
* @return
*/
public static int compareVersion(String version1, String version2) {
if (version1.equals(version2)) {
return 0;
}
String[] version1Array = version1.split("\\.");
String[] version2Array = version2.split("\\.");
int index = 0;
// 获取最小长度值
int minLen = Math.min(version1Array.length, version2Array.length);
int diff = 0;
// 循环判断每位的大小
while (index < minLen
&& (diff = Integer.parseInt(version1Array[index])
- Integer.parseInt(version2Array[index])) == 0) {
index++;
}
if (diff == 0) {
// 如果位数不一致,比较多余位数
for (int i = index; i < version1Array.length; i++) {
if (Integer.parseInt(version1Array[i]) > 0) {
return 1;
}
}
for (int i = index; i < version2Array.length; i++) {
if (Integer.parseInt(version2Array[i]) > 0) {
return -1;
}
}
return 0;
} else {
return diff > 0 ? 1 : -1;
}
}
节选自:Android 通过apk文件获取相应的包名和版本号
通过下面方法可以直接获取到apk的包名和版本号:apkPath是apk存放的路径
public static Drawable GetApkInfo(Context context, String apkPath) {
PackageManager pm = context.getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES);
if (info != null) {
ApplicationInfo appInfo = info.applicationInfo;
String packageName = appInfo.packageName; //得到安装包名称
String version = info.versionName;//获取安装包的版本号
Log.i(TAG, "getApkIcon: " + packageName + "-------" + version);
try {
return appInfo.loadIcon(pm);
} catch (OutOfMemoryError e) {
Log.i(TAG, "GetApkInfo: " + e);
}
}
return null;
}
节选自:Android获取文件的MD5
private void getFile(){ String path = Environment.getExternalStorageDirectory().getAbsolutePath(); Log.d("ATG", path); File file = new File(path+"/e8706cf83a2cda33dae5c40025922d75.apk"); String md5 = getFileMD5(file); Log.d("ATG", md5); } public static String getFileMD5(File file) { if (!file.isFile()) { return null; } MessageDigest digest = null; FileInputStream in = null; byte buffer[] = new byte[1024]; int len; try { digest = MessageDigest.getInstance("MD5"); in = new FileInputStream(file); while ((len = in.read(buffer, 0, 1024)) != -1) { digest.update(buffer, 0, len); } in.close(); } catch (Exception e) { e.printStackTrace(); return null; } return bytesToHexString(digest.digest()); } public static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); }