垃圾Oracle,下个JDK还需要登录,并且下载还超慢,还是国内下载镜像地址爽!(from qingliang4321,Thks!)
TUNA镜像,HUAWEI镜像,injdk,编程宝库,jdk下载
最新下载的jdk压缩包,解压后都没有jre目录了,需要执行命令
bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
生成jre目录
程序员网址导航https://www.coderutil.com/
让浏览器快速变成文本编辑器,地址栏输入:data:text/html, <html contenteditable>
临时文件上传快速分享好网站:奶牛快传
谈谈Android下App的安全性问题,写好强壮代码
Android部分手机崩溃了后会自动重启应用,导致logcat的崩溃日志被刷掉,很是苦恼,拔线都来不及,这个时候可以用
adb logcat >> log.txt
命令在要崩溃的时候赶紧执行记录日志到文件,崩溃后及时停止记录,然后进去搜索FATAL EXCEPTION
就可以愉快看报错了
Android逆向:
Android脱壳实质就是dumpDexhttps://www.cnblogs.com/jiaoxiake/p/6818786.html
在手机上dump运行app的dex工具https://github.com/CodingGay/BlackDex
Android逆向工具集合https://pan.baidu.com/s/14LvxsYv4O_vTm4IWaGHnjQ?pwd=t3y3
Android 7.0之后系统如何抓包
Android 7.0 (API 24) 之后,使得系统安全性增加了,导致APP 默认不信任用户域的证书,之前把Charles的ssl证书,安装到 受信任的凭据 -> 用户 就没用了,因为不受信任了,只信任(安装到)系统域的证书,导致抓出来的https的请求,都是加了密的,无法看到原文了
对此,相关解决思路和方案:
1.(努力想办法)让系统信任Charles的ssl证书,作为app的开发者自己:改自己的app的配置,允许https抓包,重要提醒:前提是得到或本身有app的源码,新建:res/xml/network_security_config.xml,内容:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config> <trust-anchors> <certificates src="system" /> <certificates src="user" /> </trust-anchors> </base-config> <debug-overrides> <trust-anchors> <certificates src="user" /> </trust-anchors> </debug-overrides> </network-security-config>
2.把证书放到受系统信任的系统证书中去,重要提示:前提是手机已root
1).计算证书名:openssl x509 -subject_hash_old -in charles-ssl-proxying-certificate_saved.pem,算出数值,比如3a1074b3
2).证书文件改名,然后把原Charles证书charles-ssl-proxying-certificate_saved.pem改名为3a1074b3.0
3).放到系统分区,放到/system/etc/security/cacerts/
3.绕开https不去校验,借助于其他(JustTrustMe等)工具绕开https的校验,重要提示:需要借助其他XPosed等框架配合才可以
Android用可以绕开/禁止SSL pinning的插件JustTrustMe,IOS基于Cydia
的Android-SSL-TrustKiller/SSL Kill Switch 2/iOS SSL Kill Switch
限制:JustTrustMe只能支持Android 7.0
之前的安卓,超过Android 7.0
就不工作了*
gradle自定义task命令行执行时带参及获取参数方法
task testTask {//任务定义及参数解析 doFirst { def aarTaskStr = null def projectStr = null def commandParam = project.gradle.startParameter.projectProperties> if(null != commandParam){ aarTaskStr = commandParam.aarTask projectStr = commandParam.projectPath }//end of if println "=======命令行参数==>aarTask:${aarTaskStr}==>projectPath:${projectStr}" } doLast { println "=========>Finish" } } 执行任务及带参(用-P标识): ./gradlew aAutoPkgTest -PaarTask=assembleReleaseXX -PprojectPath=.../xxxxxx/.../app
android读取AndroidManifest中meta-data值为长数字读取成科学计数法的问题,在纯数字前面添加\转义符即可
<meta-data android:name="TEST_KEY" android:value="\\3112212603" />不加的话读取出来是:3.11221248E9
AndroidTv相关https://gitee.com/kumei/AndroidTvDev
crx Chrome插件下载地址https://crxdl.com/
layui最新网址http://bmxpx.com/
灰常不错的Linux命令查询https://wangchujiang.com/linux-command/hot.html
灰常不错的正则表达式网站https://regex101.com/
JSON/SQL的格式化/校验等各种工具集合https://www.bejson.com/json/format/;https://www.freeformatter.com/
牛皮好用的markdown编辑器:https://github.com/marktext/marktext/
牛皮好用的markdown编辑及简单手动转PDF器:https://md2pdf.netlify.com/和https://realdennis.github.io/md2pdf/,对应项目https://github.com/realdennis/md2pdf
在线markdown转换pdf器https://cloudconvert.com/md-to-pdf
命令行或代码实现markdown转换pdf器:
https://github.com/alanshaw/markdown-pdf,安装命令:npm install -g markdown-pdf --ignore-scripts,执行转换命令:markdown-pdf -p /home/xxx/bin/phantomjs test.md;转换出来效果一般,勉强能用,需要执行安装:npm install -g phantomjs
https://github.com/simonhaenisch/md-to-pdf,安装命令:npm i -g md-to-pdf,执行转换命令:md-to-pdf test.md;转换出来效果非常接近,推荐使用
https://github.com/kxxoling/markdown2pdf,安装命令:pip install markdown2pdf,执行转换命令:md2pdf test.md;转换出来效果非常接近,推荐使用
牛B的矢量小图标网站:https://www.iconfont.cn/,矢量大图标网站:https://undraw.co/
非常棒的在线转换网站,比如m4r转mp3,https://onlineconvertfree.com/zh/
mac有时候ssh访问的时候需要证书
ssh -i xxx.pem root@192.168.8.1 -p 60022 如果遇到报错:Permissions 0644 for 'xxx.pem' are too open.说明这个pem文件的权限太大了,需要给小点, 所以执行修改哈权限:sudo chmod 600 xxx.pem 最方便的还是使用ssh-add 添加一下键文件,以后访问方便点 ssh-add -k key.pem, 执行完上面的命令后下次就只需要像普通ssh那样访问就可以了,如下:ssh root@192.168.8.1 -p 60022 如果报错:Unable to negotiate with 192.168.8.1 port 60022: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au 就sudo vi /etc/ssh/ssh_config文件,在最末尾加入wq保存即可 KexAlgorithms +diffie-hellman-group14-sha1 KexAlgorithms +diffie-hellman-group1-sha1 # KexAlgorithms +kexguess2@matt.ucc.asn.au 注:有时ssh带端口方式是:ssh root@192.168.8.1:60022,根据执行结果来看选哪种
非常牛批,操作简单,平台齐全的内网穿透https://www.ngrok.com/
ngrok authtoken 2322b*********************FP ngrok http 80 ngrok http https://localhost:8080
查看linux、mac支持某个命令,比如nvm:command -v nvm,其他ll,ls,node同理
linux中“sudo 运行 npm或node时,出现找不到命令”,通过建立软连接可以解决
先执行whereis node和whereis npm找到位置,然后分别执行 sudo ln -s 找到/bin/node位置 /usr/bin/node sudo ln -s 找到/bin/npm位置 /usr/bin/npm
关于Mac的环境变量问题
mac 一般使用bash作为默认shell
Mac系统的环境变量,加载顺序为:/etc/profile
/etc/paths
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
其中/etc/profile和/etc/paths是系统级别的,系统启动就会加载,后面几个是当前用户级的环境变量。后面3个按照从前往后的顺序读取,如果~/.bash_profile文件存在,则后面的几个文件就会被忽略不读了,如果 ~/.bash_profile文件不存在,才会以此类推读取后面的文件。 ~/.bashrc没有上述规则,它是bash shell打开的时候载入的!
其中OS X 和 Linux 都有~/.bash_profile
和~/.bashrc
这两个配置文件。但是,有时在OS X里会遇到~/.bashrc
不生效的情况:
两系统规则是当打开的shell是login shell,~/.bash_profile
才会加载,而~/.bashrc
正好相反。
而真正的区别是在linux下,当用户登录到一个图形界面,然后打开一个终端terminal,那些shell是non-login shell。
然而,在OS X登录的时候,并没有运行着一个shell,所以,在运行Terminal.app的时候,其实那是一个login shell。
你还是可以在~/.bashrc
下写一些配置,只要在~/.bash_profile
里加一条source ~/.bashrc
就是了。
对于Mac的login shell,确实在终端的配置中找到了相关答案: 点击终端的"偏好设置"选项,在通用一栏中可以看到shell的打开方式 "默认登录Shell"。刚开始时发现选择的是"命令(完整的路径)",在这种方式下并不会先加载".bash_profile"文件,改过后发现可以保证.bash_profile文件在打开时就加载。
而有时改~/.bash_profile
和~/.bashrc
这两个配置文件还是不行,这个时候还可能就是shell使用的~/.zshrc
了,具体测试方法是向怀疑的配置文件最开始写一句echo "测试打印"
之类的打印文字保存source一下,然后新开shell打开新标签,看打印这句话没!
Mac安装swig
安装swig(下载地址,密码:ftn4)之前一定要先安装pcre(下载地址,密码:d99z)
下载完pcre 和swig 之后,把解压后的pcre 文件夹放到swig 文件夹根目录下,然后建议对pcre和swig目录执行sudo chmod -R 777进行授权,避免下面命令不能执行或权限不足
打开终端,先cd进解压后的pcre根目录,输入./configure,回车执行;再输入make,回车执行;最后输入sudo make install回车执行
退回swig 根目录,和上述一样,依次执行./configure、make、sudo make install
全部执行完后,输入swig -version,能出来swig版本说明成功安装swig
Mac开启自带的Apache服务器
1、开启sudo apachectl start
2、关闭sudo apachectl stop
3、重启sudo apachectl restart
默认的网站根目录在/Library/WebServer/Documents
,访问地址:127.0.0.1
Mac压缩文件且分包:
zip - jeb-demo-4.2.0.zip | split -b 90m -d -a 3 - jeb-demo-4.2.0.zip.
这个命令注意短杠都是必要的,且有空格,命令执行后生成的分包名:jeb-demo-4.2.0.zip.000,jeb-demo-4.2.0.zip.001....,为了通用的软件能自动识别分包文件到时可实行自动合包解压,需要把分包后缀改成从.001开始的哈
JD-GUI打开的时候可能弹框报错:
No suitable Java version found on your system! This program requires Java 1.8+ Make sure you install the required Java version.
这个解决方法直接去Application里面找到JD-GUI,右键>显示包,找到打开universalJavaApplicationStub.sh,然后找到这句报错,注释掉这句报错和下面的exit 3,然后添加一句:JAVACMD="/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/bin/java"
,换成你自己的jdk版本即可
降级 node:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
或者
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
source ~/.bashrc
(linux)touch ~/.bash_profile
(MacOs)
列出所有版本:nvm ls-remote
安装指定版本:nvm install v8.11.3
使用指定版本:nvm use v8.11.3
将 8.11.3版本设为默认版本:nvm alias default 8.11.3
查看当前使用版本:nvm ls 或者 node -v
Mac Chrome 谷歌浏览器跨域问题解决:
open -n /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir=/Users/stephen/Public google-chrome --disable-web-security
Mac 命令行打开Android Stduio并且打开一个项目:
open -a /Applications/Android\ Studio.app/ android-xx-ptoject-name/
其他软件类推
Mac精品软件下载https://www.macwk.com/
windows的bat脚本触发请求
1、curl http://***.****.com 直接请求网址
2、start iexplore http://IP?username=xx&password=xx 打开ie浏览器GET请求
windows开机执行bat脚本:把xxx.bat文件放入C:\Users\root\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup目录下,其中AppData为隐藏目录,就能够开机时自动执行脚本里的内容了
windows的bat脚本if语法限制总结:
bat的if语句要注意,有很多限制,要不然执行后输入后回车cmd直接闪退;
1.里面()不能包含(),否则异常断句:
error example: if %test% == a (echo 成(功)啦) else (echo 失败啦)
2.不能在if语句里面输入获取,得用goto语句新建块来操作:
error example: if %test% == a ( set /p input=请输入: echo %input% ) else (echo 失败啦)
3.不能在if语句里面执行mkdir等操作,得用goto语句新建块来操作:
error example: if %test% == a (mkdir testFolder ) else (echo 失败啦)
Ubuntu PearOS官网 https://pearos.xyz/
linux 查看大文件并排序(这样找到就可以针对性删除大文件释放空间):
sudo du -a /home/stephen | sort -n -r | head -n 100 或 find . -type f -size +800M -print0 | xargs -0 du -hm | sort -n
mac 查看大文件并排序(这样找到就可以针对性删除大文件释放空间):
du -h -d 100 | sort -nr 其中,-h参数表示把大小用人可以阅读的格式显示出来,达到 MB 级别就用 M,达到 GB 级别就用 G。如果不加这个参数,那么大小会以比特的方式显示,于是你会看到很多你数不清多少位的数字; 参数-d 1表示只统计1层文件夹的大小,如果一个文件夹有多层,那么它只会统计到第1层,内部的文件夹无论有多少个,它只会返回一个总大小。你也可以把数字1改成2或者3
Windows 显示文件占用大小好用的软件(这样找到就可以针对性删除大文件释放空间): FolderSize wizTree
linux apt-get相关命令:
sudo apt-get -f install apt --fix-broken install sudo apt-get install aptitude sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6AF0E1940624A220 #此处6AF0E1940624A220需要是错误提示的key
安装rpm包
1 #rpm -i example.rpm 安装 example.rpm 包;
2 #rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息;
3 #rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度
dpkg命令进行安装deb包
1、使用dpkg命令进行安装:sudo dpkg -i deb文件名
2、根据经验,通常情况下会报依赖关系的错误,我们可以使用以下的命令修复安装:sudo apt-get install -f
3、如果要卸载安装的应用我们通过“sudo dpkg -l”查看已经安装的软件,并找到自己的安装的软件名。
4、最后使用"sudo dpkg -r 软件名"进行卸载
linux构建python别名
echo alias python=python3 >> ~/.bashrc
source ~/.bashrc
python
linux给一个文件中的每一行开头插入字符的方法:
awk '{print "xxx"$0}'
test.txt
shell给一个文件中的每一行结尾插入字符的方法:awk '{print $0"xxx"}'
test.txt
shell给一个文件中的每一行的指定列插入字符的方法:awk '$O=$O" xxx"'
test.txt
vi常用命令:
按ESC后输入“:”进入命令行;清空文件内容输入“%d”回车;保存输入“wq”回车;强制保存输入“wq!”回车;退出输入“q”回车;搜索内容:“/string” 从光标处开始向后寻找字符串 string,“?string” 从光标处开始向后前寻找字符串 string,n 命令重复上一条检索命令,N 命令重复上一条检索命令,但检索方向改变。例如上次的检索命令是向前检索,那么此次检索的方向是向后;如果上次的检索命令是向后检索,那么此次检索的方向是向前,g/string 使光标停止在第一个检索到的 string 串的行首
windows上让python执行报错后不关闭窗口,首先需确保将python.exe全路径添加到Windows系统环境变量PATH中,并且命令行执行方式为:python.exe xxx.py
mac/linux根据端口查找杀死进程
lsof -i:8081
kill -9 xxx
netstat -aon|findstr "8081"
tasklist|findstr "7216"
taskkill /pid 7216 /F
PowerShell因为在此系统中禁止执行脚本的解决方法: win菜单->找到powershell->右键管理员运行->执行命令:set-executionpolicy remotesigned,选全是【A】回车即可
Mac系统禁用Gatekeeper,开启任意安装,否则报错:macOS cannot verify that this app is free from malware
sudo spctl --master-disable
Mac上装软件好的网站:https://www.macwk.com/
可以在线打开pdm数据表文件的网站:http://www.dmanywhere.cn/
黑苹果 MacOS 10.15 Catalina安装教程 https://www.jianshu.com/p/2fa8458378df
websocket测试 http://coolaf.com/tool/chattest
手动安装Android aab 包方法(也可用这个项目我修改过的脚本直接安装https://github.com/didikee/AndroidAppBundleIntaller/issues/15)
安装aab包需要将aab的包转化成apks格式后进行安装
总体需要一个必要条件:bundletool.jar
1.命令安装或手动下载bundletool
brew install bundletool
2.aab包导出apks(签名后的包需要加上后面的--ks部分)
bundletool build-apks --bundle=app-googleplay.aab --output=./app-googleplay.apks --ks=/Users/xxx/Documents/AndroidProjects/xxxx_android_app/app/xxxx_key.jks --ks-pass=pass:xxxx --ks-key-alias=xxx --key-pass=pass:xxxx
3.安装apks
bundletool install-apks --apks=/Users/xxx/Downloads/app-googleplay.apks
注:如果是下载的jar,前缀命令为:java -jar bundletool-all-0.15.0.jar build-apks --bunlde=xxxxx....
用aapt命令可查看apk清单文件信息:
./aapt dump badging xxxx.apk
1.aapt 命令下载地址: https://androidaapt.com/ ; 此命令AndroidSdk的build-tools目录下具体版本下也有
2.如果是xapk格式请先做zip解压,然后对里面的apk执行此命令
3.如果是apks也先做zip解压,然后去里面splits目录找到base-master.apk执行此命令
4.如果是aab格式需先执行上一条备注里面的 <aab包导出apks>命令 将aab包导出apks,再对结果apks做zip解压,然后对里面的apk执行此命令
openssl生成公钥和私钥
openssl genrsa -out rsa_private_key.pem 1024 //生成私钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem //根据私钥生成对应公钥
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt //根据私钥生成pkcs8
Android还原混淆的代码
将mapping.txt复制到 \Sdk\tools\proguard\bin\ 目录下
将 crash 信息保存到 \Sdk\tools\proguard\bin\crash.txt中
打开终端,进入 \Sdk\tools\proguard\bin\目录 执行 retrace.bat -verbose mapping.txt crash.txt > out.txt
更好看的git log
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
配置了这个之后,使用git lg简直眼前一亮
Android media project 声音源常量
MediaRecorder.AudioSource.DEFAULT 默认音频源
MediaRecorder.AudioSource.MIC
设定录音来源为主麦克风。
MediaRecorder.AudioSource.VOICE_CALL
设定录音来源为语音拨出的语音与对方说话的声音
MediaRecorder.AudioSource.VOICE_COMMUNICATION
摄像头旁边的麦克风
MediaRecorder.AudioSource.VOICE_DOWNLINK
下行声音
MediaRecorder.AudioSource.VOICE_RECOGNITION
语音识别
MediaRecorder.AudioSource.VOICE_UPLINK
上行声音
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
// recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
// recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);//通话中,对方、自己声音都会录下来
// recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNLINK);//只录取扬声器、听筒声音
// recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_UPLINK);
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION);//跟MIC一样,只录取麦克风声音,但扬声器太大声的话也会录到
AndroidAPI等级对照图
终端解压命令集合大全
tar解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
———————————————
.bz2解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
———————————————
.bz解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz解压:tar jxvf FileName.tar.bz
压缩:未知
———————————————
.Z解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
———————————————
.zip解压:unzip FileName.zip
压缩:zip FileName.zip DirName
———————————————
.lha解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName
———————————————
.rpm解包:rpm2cpio FileName.rpm | cpio -div
———————————————
.deb解包:ar p FileName.deb data.tar.gz | tar zxf -
———————————————
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea解压:sEx x FileName.*
压缩:sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
gzip 命令减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
语法:gzip [选项] 压缩(解压缩)的文件名该命令的各选项含义如下:
-c 将输出写到标准输出上,并保留原有文件。-d 将压缩文件解压。-l 对每个压缩文件,显示下列字段: 压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。-t 测试,检查压缩文件是否完整。-v 对每一个压缩和解压的文件,显示文件名和压缩比。-num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),-9 或--best表示最慢压缩方法(高压缩比)。系统缺省值为 6。指令实例:
gzip *% 把当前目录下的每个文件压缩成 .gz 文件。gzip -dv *% 把当前目录下每个压缩的文件解压,并列出详细的信息。gzip -l *% 详细显示例1中每个压缩的文件的信息,并不解压。gzip usr.tar% 压缩 tar 备份文件 usr.tar,此时压缩文件的扩展名为.tar.gz。
装B名词:
复盘,赋能,沉淀,倒逼,落地,串联,协同,反哺,兼容;
包装,重组,履约,响应,量化,发力,布局,联动,细分;
梳理,输出,加速,共建,支撑,融合,聚合,解藕,集成;
对齐,对标,对焦,抓手,拆解,拉通,抽象,摸索,提炼;
打通,打透,吃透,迁移,分发,分层,分装,穿梭,辐射;
围绕,复用,渗透,扩展,开拓,漏斗,中台,闭环,打法;
拉通,纽带,矩阵,刺激,规模,场景,聚焦,维度,格局;
形态,生态,话术,体系,认知,玩法,体感,感知,调性;
心智,战役,合力,心力,赛道,因子,模型,载体,横向;
通道,补位,链路,试点;
颗粒度,感知度,方法论,组合拳,引爆点,点线面,精细化,差异化,平台化,结构化,影响力,耦合性,易用性,一致性,端到端,短平快。
生命周期,价值转化,强化认知,资源倾斜,完善逻辑,抽离透传,复用打法,商业模式,快速响应,定性定量,关键路径,去中心化,结果导向,垂直领域,如何收口,归因分析,体验度量,信息屏障
admob高级技巧如下:
1.多申请几个admob账号,以免鸡蛋都放在一个篮子里,因为收款要2个月,夜长梦多,万一被封号,2个月内的钱就付之东流了。一个账号用一个月,第二个月,去开一个新号。确保每个账号下的钱2个月后能进账。
2.应用程序必须支持动态更换admob账号的能力,也就是说app每次登陆会访问服务器,服务器分配一个admob账号给app,app使用该账号。优点,可以动态的调整广告的展示,免得每次换admob账号要重新发布app
3.admob点击率最好控制在3%以下。过高会封号
4.单个admob账号,每日收入控制在50美金以下,过高会查你的app
5.使用一定手段鼓励用户点击广告,我自己写了一个类似积分墙的东西,点广告赚积分,用积分去做一些高级的事情。比如点一次广告送5个积分,每天最多30积分(点6个广告),下载一段视频需要15个积分。当然积分的配置也是服务器动态下传给app的。如果用户点击少了,可以提高每天积分的上限,如果用户点击多了,就减少点击上限。所以服务器很重要。1.admob有一个累计效应,也就是说,如果你每天广告展示次数(CPC)都在逐步增加,说明你是一个可靠的,稳健的广告展示商,那么admob给的CPM的比重也会增加。CPM(按照展示次数收费)的量这个是可遇不可求的,是admob根据你CPC的量来合理分配的。
2.admob我设置1分钟换一个广告,过快没有意义
3.不要自己去点击广告,不要自己搞两台机器一直展示广告。
admob不是傻子,他根据ip,机型,时间,有无用户操作,很容易判断用户的类型。如果一个ip,一个机器,长时间展示广告,或者大量的点击,可能会封号。如果一台机器,没有用户操作,长时间展示广告,也是无效的展示类型。
4.admob的内容过滤,你不要小看admob的功能,它异常的强大,他可以自动扫描你的app内容。比如是否有色情,赌博内容,是否有违法内容,是否有不良字眼。
所以如果你的某个广告页上有admob广告,一定要看看该页面有无admob禁止的内容。