如何生成Android的签名证书
cmd命令生成android签名证书,有空在写一篇eclipse导出带签名的apk,这里面包括生成新的签名。现在还是讲讲在cmd怎么操作生成签名证书。
1、dos下进入JDK的bin目录
运行如下命令:keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore
(-validity 20000代表有效期天数),命令完成后,bin目录中会生成android.keystore
示例:
C:\Program Files (x86)\Java\jdk1.8.0_25\bin》
keytool -genkey -alias test.keystore -keyalg RSA -validity 20000 -keystore d:\test.keystore
ps:-alias test 生成的keystore别名,-keyalg RSA 加密和数字签名的算法,-validity 20000 有效天数
输入密钥库口令:123456
再次输入新口令:123456
您的名字与姓氏是什么?
[Unknown]: rob
您的组织单位名称是什么?
[Unknown]: abc
您的组织名称是什么?
[Unknown]: abc
您所在的城市或区域名称是什么?
[Unknown]: guangzhou
您所在的省/市/自治区名称是什么?
[Unknown]: guangzhou
该单位的双字母国家/地区代码是什么?
[Unknown]: cn
CN=rob, OU=abc, O=abc, L=guangzhou, ST=guangzhou, C=cn是否正确?
[否]: y
输入 《test》 的密钥口令
(如果和密钥库口令相同, 按回车):
如果没有错误则回去查看D盘根目录下,多了test.keystore
所以第一次输入的是,密钥库的密码。
最后输入时密钥别名的密码。到这里生成签名就搞定啦。
2、查看md5指纹验证
输入keytool -list -v -alias androiddebugkey -keystore 再加上刚刚从红色框中复制出来的内容
我这里的就是keytool -list -v -alias androiddebugkey -keystore C:\Users\ZLQ\.android\debug.keystore了,回车
-alias androiddebugkey 这个是别名
-keystore C:\Users\ZLQ\.android\debug.keystore 具体位置的密钥库
要求输入密码,密码是android,至此就可以拿到MD5认证指纹了
为什么android不停输出 i/viewrootimpl:finishmotionevent
首先说第一个主要作用,链接WindowManager和DecorView,在ViewRootImpl.java中,开始的注释如下:
/**
* The top of a view hierarchy, implementing the needed protocol between View
* and the WindowManager. This is for the most part an internal implementation
* detail of {@link WindowManagerGlobal}.
*
* {@hide}
*/
通过这一段注释,我们知道,ViewRootImpl他是View树的树根,但它却又不是View,实现了View与WindowManager之间的通信协议,具体的实现详情在WindowManagerGlobal这个类中。
那么View与WindowManager之间是怎么建立联系的呢,WindowManager所提供的功能很简单,常用的只有三个方法,即添加View,更新View和删除View,当然还有其它功能哈,比如改变Window的位置,WindowManager操作Window的过程更像是在操作Window中的View,这三个方法定义在ViewManager中,而WindowManager继承了ViewManager。
android 怎么修改activitymanagerservice.java
1 个文件发生了变化
android/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java
android/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java查看文件 @a1b2236
@@ -889,6 +889,8 @@
return;
}
AppErrorResult res = (AppErrorResult) data.get(“result“);
+ res.set(0);
+ /*
if (!mSleeping && !mShuttingDown) {
Dialog d = new AppErrorDialog(mContext, res, proc);
d.show();
@@ -897,7 +899,7 @@
// The device is asleep, so just pretend that the user
// saw a crash dialog and hit “force quit“.
res.set(0);
- }
+ }*/
}
ensureBootCompleted();
@@ -3193,6 +3195,11 @@
return;
}
+ app.notResponding = false;
+ app.notRespondingReport = null;
+ app.anrDialog = null;
+
+ /*
// Set the app’s notResponding state, and look up the errorReportReceiver
makeAppNotRespondingLocked(app,
activity != null ? activity.shortComponentName : null,
@@ -3210,6 +3217,7 @@
}
mHandler.sendMessage(msg);
+ */
}
}
android/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java查看文件 @a1b2236
@@ -889,6 +889,8 @@
return;
}
AppErrorResult res = (AppErrorResult) data.get(“result“);
+ res.set(0);
+ /*
if (!mSleeping && !mShuttingDown) {
Dialog d = new AppErrorDialog(mContext, res, proc);
d.show();
@@ -897,7 +899,7 @@
// The device is asleep, so just pretend that the user
// saw a crash dialog and hit “force quit“.
res.set(0);
- }
+ }*/
}
ensureBootCompleted();
@@ -3193,6 +3195,11 @@
return;
}
+ app.notResponding = false;
+ app.notRespondingReport = null;
+ app.anrDialog = null;
+
+ /*
// Set the app’s notResponding state, and look up the errorReportReceiver
makeAppNotRespondingLocked(app,
activity != null ? activity.shortComponentName : null,
@@ -3210,6 +3217,7 @@
}
mHandler.sendMessage(msg);
+ */
}
}
-android生成签名