强制移除Unity3d中的 permission 依赖

<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION” tools:node=”remove” />

查询APK 与 keystore 的 SHA1

APK

keytool -printcert -jarfile .\base.apk

KeyStore

keytool -list -v -keystore .\file.keystore -storepass passwd

查询APK的版本号相关

aapt dump badging .\base.apk

高于Android M 用

aapt2 dump badging .\base.apk

世界,您好!

欢迎使用WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!

CentOS/ RedHat 防火墙操作

显示当前所有的规则

firewall-cmd --list-all

添加一条规则  例 port=3306

firewall-cmd --permanent --add-port=3306/tcp

删除某个端口

firewall-cmd --permanent --remove-port=3306/tcp

 添加多个端口

firewall-cmd --permanent --zone=public --add-port=8080-8083/tcp

重启防火墙让规则生效

firewall-cmd --reload

 
开启防火墙
systemctl start firewalld.service
防火墙开机启动
systemctl enable firewalld.service
关闭防火墙
systemctl stop firewalld.service
查看防火墙状态

firewall-cmd --state

 
 针对某个 IP开放端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.123.123" port protocol="tcp"
port="6379" accept" firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.233" accept"

 删除某个IP

firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.123.123" accept"

针对一个ip段访问

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept" firewall-cmd
--permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"

从PK8 和 x509.perm文件中生成keystore 供安卓签名

./keytool -importkeypair  -k <要生成的keystore文件>  -p <密码>  -pk8 <pk8文件>  -cert  <x509.pem文件>  –alias platform
例:

./keytool -importkeypair  -k ./platform.keystore -p android -pk8 platform.pk8  -cert  platform.x509.pem  -alias platform

 
pk8文件和  .x509.perm 是系统的签名文件,可以在编译完安卓系统的out或target目录里找到
如果是要打系统应用的包
AndroidManifest.xml 里还需要加入

 android:sharedUserId="android.uid.system"

Android KEYCODE列表

//adb 模拟键盘按键
adb shell input keyevent 4
//在屏幕上做划屏操作,前四个数为坐标点,后面是滑动的时间(单位毫秒)
adb shell input swipe 50 250 250 250 500
//在屏幕上点击坐标点x=50  y=250的位置。
adb shell input tap 50 250
//输入字符abc
adb shell input text abc

KEYCODE列表

电话键

KEYCODE_CALL 拨号键 5
KEYCODE_ENDCALL 挂机键 6
KEYCODE_HOME 按键Home 3
KEYCODE_MENU 菜单键 82
KEYCODE_BACK 返回键 4
KEYCODE_SEARCH 搜索键 84
KEYCODE_CAMERA 拍照键 27
KEYCODE_FOCUS 拍照对焦键 80
KEYCODE_POWER 电源键 26
KEYCODE_NOTIFICATION 通知键 83
KEYCODE_MUTE 话筒静音键 91
KEYCODE_VOLUME_MUTE 扬声器静音键 164
KEYCODE_VOLUME_UP 音量增加键 24
KEYCODE_VOLUME_DOWN 音量减小键 25

控制键

KEYCODE_ENTER 回车键 66
KEYCODE_ESCAPE ESC键 111
KEYCODE_DPAD_CENTER 导航键 确定键 23
KEYCODE_DPAD_UP 导航键 向上 19
KEYCODE_DPAD_DOWN 导航键 向下 20
KEYCODE_DPAD_LEFT 导航键 向左 21
KEYCODE_DPAD_RIGHT 导航键 向右 22
KEYCODE_MOVE_HOME 光标移动到开始键 122
KEYCODE_MOVE_END 光标移动到末尾键 123
KEYCODE_PAGE_UP 向上翻页键 92
KEYCODE_PAGE_DOWN 向下翻页键 93
KEYCODE_DEL 退格键 67
KEYCODE_FORWARD_DEL 删除键 112
KEYCODE_INSERT 插入键 124
KEYCODE_TAB Tab键 61
KEYCODE_NUM_LOCK 小键盘锁 143
KEYCODE_CAPS_LOCK 大写锁定键 115
KEYCODE_BREAK Break/Pause键 121
KEYCODE_SCROLL_LOCK 滚动锁定键 116
KEYCODE_ZOOM_IN 放大键 168
KEYCODE_ZOOM_OUT 缩小键 169

组合键

KEYCODE_ALT_LEFT Alt+Left
KEYCODE_ALT_RIGHT Alt+Right
KEYCODE_CTRL_LEFT Control+Left
KEYCODE_CTRL_RIGHT Control+Right
KEYCODE_SHIFT_LEFT Shift+Left
KEYCODE_SHIFT_RIGHT Shift+Right

基本

KEYCODE_0 按键’0′ 7
KEYCODE_1 按键’1′ 8
KEYCODE_2 按键’2′ 9
KEYCODE_3 按键’3′ 10
KEYCODE_4 按键’4′ 11
KEYCODE_5 按键’5′ 12
KEYCODE_6 按键’6′ 13
KEYCODE_7 按键’7′ 14
KEYCODE_8 按键’8′ 15
KEYCODE_9 按键’9′ 16
KEYCODE_A 按键’A’ 29
KEYCODE_B 按键’B’ 30
KEYCODE_C 按键’C’ 31
KEYCODE_D 按键’D’ 32
KEYCODE_E 按键’E’ 33
KEYCODE_F 按键’F’ 34
KEYCODE_G 按键’G’ 35
KEYCODE_H 按键’H’ 36
KEYCODE_I 按键’I’ 37
KEYCODE_J 按键’J’ 38
KEYCODE_K 按键’K’ 39
KEYCODE_L 按键’L’ 40
KEYCODE_M 按键’M’ 41
KEYCODE_N 按键’N’ 42
KEYCODE_O 按键’O’ 43
KEYCODE_P 按键’P’ 44
KEYCODE_Q 按键’Q’ 45
KEYCODE_R 按键’R’ 46
KEYCODE_S 按键’S’ 47
KEYCODE_T 按键’T’ 48
KEYCODE_U 按键’U’ 49
KEYCODE_V 按键’V’ 50
KEYCODE_W 按键’W’ 51
KEYCODE_X 按键’X’ 52
KEYCODE_Y 按键’Y’ 53
KEYCODE_Z 按键’Z’ 54

符号

KEYCODE_PLUS 按键’+’
KEYCODE_MINUS 按键’-‘
KEYCODE_STAR 按键’*’
KEYCODE_SLASH 按键’/’
KEYCODE_EQUALS 按键’=’
KEYCODE_AT 按键’@’
KEYCODE_POUND 按键’#’
KEYCODE_APOSTROPHE 按键”’ (单引号)
KEYCODE_BACKSLASH 按键’\’
KEYCODE_COMMA 按键’,’
KEYCODE_PERIOD 按键’.’
KEYCODE_LEFT_BRACKET 按键'[‘
KEYCODE_RIGHT_BRACKET 按键’]’
KEYCODE_SEMICOLON 按键’;’
KEYCODE_GRAVE 按键’`’
KEYCODE_SPACE 空格键

小键盘

KEYCODE_NUMPAD_0 小键盘按键’0′
KEYCODE_NUMPAD_1 小键盘按键’1′
KEYCODE_NUMPAD_2 小键盘按键’2′
KEYCODE_NUMPAD_3 小键盘按键’3′
KEYCODE_NUMPAD_4 小键盘按键’4′
KEYCODE_NUMPAD_5 小键盘按键’5′
KEYCODE_NUMPAD_6 小键盘按键’6′
KEYCODE_NUMPAD_7 小键盘按键’7′
KEYCODE_NUMPAD_8 小键盘按键’8′
KEYCODE_NUMPAD_9 小键盘按键’9′
KEYCODE_NUMPAD_ADD 小键盘按键’+’
KEYCODE_NUMPAD_SUBTRACT 小键盘按键’-‘
KEYCODE_NUMPAD_MULTIPLY 小键盘按键’*’
KEYCODE_NUMPAD_DIVIDE 小键盘按键’/’
KEYCODE_NUMPAD_EQUALS 小键盘按键’=’
KEYCODE_NUMPAD_COMMA 小键盘按键’,’
KEYCODE_NUMPAD_DOT 小键盘按键’.’
KEYCODE_NUMPAD_LEFT_PAREN 小键盘按键'(‘
KEYCODE_NUMPAD_RIGHT_PAREN 小键盘按键’)’
KEYCODE_NUMPAD_ENTER 小键盘按键回车

功能键

KEYCODE_F1 按键F1
KEYCODE_F2 按键F2
KEYCODE_F3 按键F3
KEYCODE_F4 按键F4
KEYCODE_F5 按键F5
KEYCODE_F6 按键F6
KEYCODE_F7 按键F7
KEYCODE_F8 按键F8
KEYCODE_F9 按键F9
KEYCODE_F10 按键F10
KEYCODE_F11 按键F11
KEYCODE_F12 按键F12

多媒体键

KEYCODE_MEDIA_PLAY 多媒体键 播放
KEYCODE_MEDIA_STOP 多媒体键 停止
KEYCODE_MEDIA_PAUSE 多媒体键 暂停
KEYCODE_MEDIA_PLAY_PAUSE 多媒体键 播放/暂停
KEYCODE_MEDIA_FAST_FORWARD 多媒体键 快进
KEYCODE_MEDIA_REWIND 多媒体键 快退
KEYCODE_MEDIA_NEXT 多媒体键 下一首
KEYCODE_MEDIA_PREVIOUS 多媒体键 上一首
KEYCODE_MEDIA_CLOSE 多媒体键 关闭
KEYCODE_MEDIA_EJECT 多媒体键 弹出
KEYCODE_MEDIA_RECORD 多媒体键 录音

手柄按键

KEYCODE_BUTTON_1 通用游戏手柄按钮#1
KEYCODE_BUTTON_2 通用游戏手柄按钮 #2
KEYCODE_BUTTON_3 通用游戏手柄按钮 #3
KEYCODE_BUTTON_4 通用游戏手柄按钮 #4
KEYCODE_BUTTON_5 通用游戏手柄按钮 #5
KEYCODE_BUTTON_6 通用游戏手柄按钮 #6
KEYCODE_BUTTON_7 通用游戏手柄按钮 #7
KEYCODE_BUTTON_8 通用游戏手柄按钮 #8
KEYCODE_BUTTON_9 通用游戏手柄按钮 #9
KEYCODE_BUTTON_10 通用游戏手柄按钮 #10
KEYCODE_BUTTON_11 通用游戏手柄按钮 #11
KEYCODE_BUTTON_12 通用游戏手柄按钮 #12
KEYCODE_BUTTON_13 通用游戏手柄按钮 #13
KEYCODE_BUTTON_14 通用游戏手柄按钮 #14
KEYCODE_BUTTON_15 通用游戏手柄按钮 #15
KEYCODE_BUTTON_16 通用游戏手柄按钮 #16
KEYCODE_BUTTON_A 游戏手柄按钮 A
KEYCODE_BUTTON_B 游戏手柄按钮 B
KEYCODE_BUTTON_C 游戏手柄按钮 C
KEYCODE_BUTTON_X 游戏手柄按钮 X
KEYCODE_BUTTON_Y 游戏手柄按钮 Y
KEYCODE_BUTTON_Z 游戏手柄按钮 Z
KEYCODE_BUTTON_L1 游戏手柄按钮 L1
KEYCODE_BUTTON_L2 游戏手柄按钮 L2
KEYCODE_BUTTON_R1 游戏手柄按钮 R1
KEYCODE_BUTTON_R2 游戏手柄按钮 R2
KEYCODE_BUTTON_MODE 游戏手柄按钮 Mode
KEYCODE_BUTTON_SELECT 游戏手柄按钮 Select
KEYCODE_BUTTON_START 游戏手柄按钮 Start
KEYCODE_BUTTON_THUMBL Left Thumb Button
KEYCODE_BUTTON_THUMBR Right Thumb Button

待查

KEYCODE_NUM 按键Number modifier
KEYCODE_INFO 按键Info
KEYCODE_APP_SWITCH 按键App switch
KEYCODE_BOOKMARK 按键Bookmark
KEYCODE_AVR_INPUT 按键A/V Receiver input
KEYCODE_AVR_POWER 按键A/V Receiver power
KEYCODE_CAPTIONS 按键Toggle captions
KEYCODE_CHANNEL_DOWN 按键Channel down
KEYCODE_CHANNEL_UP 按键Channel up
KEYCODE_CLEAR 按键Clear
KEYCODE_DVR 按键DVR
KEYCODE_ENVELOPE 按键Envelope special function
KEYCODE_EXPLORER 按键Explorer special function
KEYCODE_FORWARD 按键Forward
KEYCODE_FORWARD_DEL 按键Forward Delete
KEYCODE_FUNCTION 按键Function modifier
KEYCODE_GUIDE 按键Guide
KEYCODE_HEADSETHOOK 按键Headset Hook
KEYCODE_META_LEFT 按键Left Meta modifier
KEYCODE_META_RIGHT 按键Right Meta modifier
KEYCODE_PICTSYMBOLS 按键Picture Symbols modifier
KEYCODE_PROG_BLUE 按键Blue “programmable”
KEYCODE_PROG_GREEN 按键Green “programmable”
KEYCODE_PROG_RED 按键Red “programmable”
KEYCODE_PROG_YELLOW 按键Yellow “programmable”
KEYCODE_SETTINGS 按键Settings
KEYCODE_SOFT_LEFT 按键Soft Left
KEYCODE_SOFT_RIGHT 按键Soft Right
KEYCODE_STB_INPUT 按键Set-top-box input
KEYCODE_STB_POWER 按键Set-top-box power
KEYCODE_SWITCH_CHARSET 按键Switch Charset modifier
KEYCODE_SYM 按键Symbol modifier
KEYCODE_SYSRQ 按键System Request / Print Screen
KEYCODE_TV 按键TV
KEYCODE_TV_INPUT 按键TV input
KEYCODE_TV_POWER 按键TV power
KEYCODE_WINDOW 按键Window
KEYCODE_UNKNOWN 未知按键

Python 3.6.0 与 prompt-toolkit 的兼容性问题

新的prompt-toolkit 需要更高的版本,3.6.0需要降回2.0.1使用
pip install –upgrade prompt-toolkit==2.0.1

opencv-python==4.1.0.25 安装慢的问题

使用国内清华的pip3源加速即可
pip3 install –user -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python==4.1.0.25

nmap 扫描局域网内的端口

sudo nmap -sF 192.168.8.0/24 -p 80

调用Android Wifi 设置的方法

不同系统不同版本的Android 的 wifi setting 的 Activity 不尽相同,下列方式应该可以用的,具体Activity 的 ClassName 要看机型和烧录的 Android ROM 。。。
Android 通过应用包名启动外部应用方式A

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");
mIntent.setComponent(comp);
startActivity(mIntent);

Android 通过应用包名启动外部应用方式B

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.Settings$WirelessSettingsActivity");
mIntent.setComponent(comp);
startActivity(mIntent);

Android 通过应用包名启动外部应用方式C

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.wifi.WifiSettings");
mIntent.setComponent(comp);
startActivity(mIntent);

Android 通过应用包名启动外部应用方式D

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName comp = new ComponentName("com.android.phone", "com.android.phone.NetworkSetting");
mIntent.setComponent(comp);
startActivity(mIntent);

Android 通过应用包名启动外部应用方式E

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName comp = new ComponentName("com.android.phone", "com.android.phone.Settings");
mIntent.setComponent(comp);
startActivity(mIntent);

广播Intent A

Intent i = new Intent("android.settings.WIRELESS_SETTINGS");
mContext.sendBroadcast(i);

广播Intent B

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));