常用的shell命令(Windows平台上)
按任意键退出
1 | read -n 1 -p "按任意键退出,并打开apk目录..." |
打开Windows资源管理器指定目录
1 | 获取当前目录 |
参考资料
Linux Shell编程语法(变量及其赋值)
SHELL学习笔记—-IF条件判断,判断条件
shell的read方法使用介绍
1 | read -n 1 -p "按任意键退出,并打开apk目录..." |
1 | # 获取当前目录 |
Linux Shell编程语法(变量及其赋值)
SHELL学习笔记—-IF条件判断,判断条件
shell的read方法使用介绍
1 | #!/bin/bash |
1 | echo input your name: |
首次使用管理员登录需要先设置密码
1 | sudo passwd |
http://os.51cto.com/art/201108/287974.htm
1 | shutdown -h 22:30 # 在指定时间关机 |
$ history // 查看命令历史
$ !334 //表示执行第334行的命令
xdg-open { file | URL }
ps -aux | grep vim
$ps -aux | grep [应用名] # 抓取指定应用的进程信息,几下 应用的pid
$kill -9 [应用的pid]
10行的上下文
1 | cat file.txt | grep -C 10 key_word |
查看实时日志: tail -fn 100 log_file_name.out
1 | tail --help |
https://coolshell.cn/articles/9104.html
1 | sed -i "s/'proxy.*/'proxy': 'http://proxy.lyloou.com'/g" eros.dev.js |
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。
http://www.cnblogs.com/allenblogs/archive/2011/05/19/2051136.html
1 | nohup java -jar /xxx/xxx/xxx.jar >/dev/null 2>&1 & |
关键在于最后的 >/dev/null 2>&1 部分,/dev/null是一个虚拟的空设备(类似物理中的黑洞),任何输出信息被重定向到该设备后,将会石沉大海
/dev/null 表示将标准输出信息重定向到”黑洞”
2>&1 表示将标准错误重定向到标准输出(由于标准输出已经定向到“黑洞”了,即:标准输出此时也是”黑洞”,再将标准错误输出定向到标准输出,相当于错误输出也被定向至“黑洞”)
http://www.cnblogs.com/yjmyzz/p/4831182.html
1 | grep -rl '' tmpdir\ | xargs sed -i "1 i hi 你好吗\n 你知道我是谁吗\n 是的,是我\n" |
ping lyloou.com
nslookup lyloou.com
1 | scp root@138.128.208.16:/root/go/src/github.com/inconshreveable/ngrok/bin/ngrok D:/dd/ngrok |
如果出现这个错误:connect to xxxxxxx port 22: Connection refused
1 | yum -y install openssh-server |
1 | # http://wiki.ubuntu.org.cn/UbuntuSkills#.E9.80.9A.E8.BF.87ssh.E4.BC.A0.E8.BE.93.E6.96.87.E4.BB.B6 |
1 | df -h |
vi /etc/fstab
& add below line
1 | #Windows-Partition |
Finding which disk you will set
1 | sudo fdisk -l |
Finding the UUID
1 | sudo blkid |
Check it
1 | sudo mount -a |
1 | history | awk '{print $2}' | sort | uniq -c | sort -k1,1nr | head -10 |
https://coolshell.cn/articles/8619.html
http://blog.51cto.com/huanglianfeng/1381267
1 | $ echo a b c d e |
1 | !^ first argument |
查看包含部分文字的上下文
1 | # -E, --extended-regexp PATTERN is an extended regular expression |
https://askubuntu.com/questions/30080/how-to-solve-connection-refused-errors-in-ssh-connection
1 | sudo apt-get install openssh-server openssh-client |
1 | $ssh-copy-id user@host |
1 | cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" |
1 | ssh -t xxx.xxx.xxx.xxx "cd /directory_wanted; bash" |
Create a new keypair: (go with the defaults)
ssh-keygen
Copy the public key to the server: (password for the last time)
ssh-copy-id user@my.server.com
From now on the server should recognize your key and not ask you for the password anymore:
ssh user@my.server.com
错误原因:
1.sshd 未安装
2.sshd 未启动
3.防火墙
解决方法:
1.确定安装sshd:$ sudo apt-get install openssh-server
2.启动sshd:$ sudo net start sshd
3.检查防火墙设置,关闭防火墙:$ sudo ufw disable
检验方法,输入命令:$ ssh localhost
若成功,则表示安装成功,且连接通过;
但是有的时候虽然成功了但是还是会出现Connection refused 问题。
运行 ps -e | grep ssh,查看是否有sshd进程:
有时候虽然可以看到sshd 但是还是不能连接成功
这时候就要想到重新启动一下:sudo service ssh restart
1 | private static String getWebsiteDatetime(String webUrl){ |
(如果本地和网页时间相差不多,以后都以本地为主)
1 | public static final String URL_CHECK_TIME = "http://www.taobao.com"; |
onCreate
中添加注册
1 | // 监听用户对时间和日期的修改; |
onDestroy
中取消注册
1 | unregisterReceiver(mReceiver); |
mReceiver
实现
1 | BroadcastReceiver mReceiver = new BroadcastReceiver() { |
1 | public class Utime { |
在AndroidManifest.xml
中的application
标签下添加:
1 | <!-- UMENG配置 --> |
在build.gradle
文件中的android
标签下添加:
1 | productFlavors { |
在java代码中获取:
1 | // 调用方式 |
渠道打包的另一种解决方案:使用python脚本在META-INFO
中添加channel_<渠道名>
名称的空文件;
就是上面的通过AndroidManifest
配置
1 | <meta-data android:name="UMENG_CHANNEL" android:value="UMeng" /> |
通过在代码中执行
1 | String channel = getApplicationMetaValue(this, "UMENG_CHANNEL"); |
NOTE1: 坑,不能同时设置两种方式,友盟技术的解释是优先使用第一次取到了渠道名;如果采用java代码的方式,需要在Application
中设置,而不是Activity
;
NOTE2: 也可以通过url将渠道名传递给后台,由后台来做统计;
1 | keytool.exe -v -list -keystore lyloou.jks |
Android端的实现比较简单,
orderInfo
字符串1 | final String orderInfo = "从后台获取得到的orderInfo"; |
我相信在PayTask.payV2
中,有对是否安装支付宝做判断,
我们需要在Manifest
中注册H5PayActivity
:
1 | <activity |
Flyme推送目前支持哪些平台?
Flyme推送平台目前只支持魅族手机的flyme系统。
Android推送中,多个app都使用推送时,他们会共享连接吗?
在Flyme系统(4.0,4.5,5)上,会直接使用系统长连接通道,所有app会和系统共享一个长连接;目前在其他Rom上,没有共享连接。
Flyme推送收费吗?
Flyme推送平台的基础推送功能是免费的,但是某些定制功能会考虑收费,在功能和体验上会有不同。
参考资料
http://open-wiki.flyme.cn/index.php?title=魅族推送平台常见问题
小米消息推送服务在MIUI上为系统级通道,并且全
平台通用,可以为开发者提供稳定、可靠、高效的
推送服务
参考资料
1 | 10086com |
1 | signingConfigs { |
(http://blog.csdn.net/fengyuzhengfan/article/details/43876197)
ProGuard 默认会对第三方库也进行混淆的,而第三方库有的已经混淆过了,有的使用了 Java 反射技术,所以我们在进行代码混淆的时候要排除这些第三方库。排除对第三方库的混淆需要在混淆规则文件(通常是:proguard-project.txt 或 proguard.cfg 或 proguard-rules.pro 或 proguard-rules.txt 也可以是其它的文件名只要在配置文件中将含有混淆规则的文件名配置进去就行了)中添加如下规则: 1.如果使用了 Gson 之类的工具要使 JavaBean 类即实体类不被混淆。 2.如果使用了自定义控件那么要保证它们不参与混淆。 3.如果使用了枚举要保证枚举不被混淆。 4.对第三方库中的类不进行混淆
1 | # If your project uses WebView with JS, uncomment the following |
2.1.+
)this result in different and unstable builds or subtle, untracked difference
in behavior between builds.
build.gradle
的时候,避免直接写入敏感信息(例如:密码),而是写入到版本控制工具忽略的文件gradle.properties
中。
https://github.com/futurice/android-best-practices#gradle-configuration
可以通过前缀或后缀的方式来区分。
https://github.com/futurice/android-best-practices#gradle-configuration
如果在你的项目中你明确使用率 jar 文件,那么它们可能成为永久的版本,如 2.1.1.下载 jar 包更新他们是很繁琐的, 这个问题 Maven 很好的解决了,这在 Android Gradle 构建中也是推荐的方法。你可以指定版本的一个范围,如 2.1.+,然后 Maven 会自动升级到制定的最新版本,例如:
1 | dependencies { |