If your project have more and more modules and source code, the build will be the nightmare, it will take more than 10 mins to build, for release build, it will take even more time, so we can use the …
Android bypass SSL Pinning
很多Android App现在出于安全考虑都会加上SSL Pinning,有时在Charles Debug过程中会不是太方便,当然可以加一个设置一键关掉这个功能。
最近刚好看了一些关于Frida的资料,发现这个东西用来做代码注入很方便,而且平台通吃,Android/iOS/Linux/Mac。
找到下面这个JavaScript脚本,可以在不侵入原Apk的情况下,去掉SSL Pinning, 通过Charles启用SSL Proxy,在手机设置好Charle代理,直接明文抓到所有请求。
Java.perform(function() {
var array_list = Java.use("java.util.ArrayList");
var ApiClient = Java.use('com.android.org.conscrypt.TrustManagerImpl');
ApiClient.checkTrustedRecursive.implementation = function(a1, a2, a3, a4, a5, a6) {
// console.log('Bypassing SSL Pinning');
var k = array_list.$new();
return k;
}
},
… Android P(9.0/API Level 28) 升级不完全教程
自从去年Google强制升级target API到26之后,Google就开始计划着下一波的升级,而这次是要升级到9, 也就是target API level 28,而且日期也已经定了 “November 1, 2019″。
以前每次API升级都是小打小闹,并不会有那种大规模的改动,而这次改动就有点大了。当然这次强制target API升级对国内开发者的影响会小一些,因为毕竟不用发布到Google Play,而国内应用市场这么多,各个要求也都参差不齐,所以短期还是安全的。
这次改动其实动的最大的就是非官方API的调用,也包含”Java Reflection”,基本上可以说国内要用到的那些动态APP升级方案都基本被伤了,网上搜了一下,也找到一些厅淫技巧,可以绕过去官方的这个限制,正所谓道高一尺,魔高一丈,但总的来说这样做是不推荐的,因为不知道系统又做个升级,就把这些方案给干掉。官文给了黑名单列表和灰名单列表,黑名单是一定要修复的,灰名单只是一个过渡阶段,后面看Google的心情什么时候在系统层面强制执行,那就必须都修复。2019年的Google IO大会在即,就看这次Google有什么表示。
具体我们需要做什么/take away
把官方相关的文档都看过了,下面这些是我认为比较重要的地方
- Migration to androidx/JetPack
- Network TLS enabled by default, so need double check https is enable by default.
- Non SDK APIs call scanning,
编译Android源码For HTC G1(HTC Dream)
编译Android源码For HTC G1(HTC Dream)
1.参考Google:
http://source.android.com/documentation/building-for-dream
其中解压文件一步,好像现在目录已经改变了,需要将文件放到源码根目录,而不是vendor/htc/dream-open/
signed-dream_devphone_userdebug-ota-14721.zip…
Use G1 to post a blog
想不到用手机也可以写博客,强大的android手机。…
Android 屏幕旋转时保存状态
默认情况下我们在旋转Android屏幕时,会重新跑”onCreate”相当于会重新启动程序.
很多时候我们不希望它”重新启动”程序.用下面的方法就可以达到这种效果.
1.在manifest里加上这句android:configChanges=”orientation|keyboardHidden”
<activity android:name=".QTwitter" android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
2.在这个Activity里重写下面这个函数:
/**
* Used to skip reOncreate when the screen rotated.
*/
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//
… Android AppWidget如何支持复杂的View
如果看不惯博客排版,请点这里。
Android AppWidget如何支持复杂的View
一直想知道如何在AppWidget里面添加 ListView,EditText 这些复杂的View.我们知道要在AppWidget里添加 View都是通过RemoteView来做到了,然而RemoteView本身功能很弱,支持的操作很少,而且支持RemoteView的Widget很少:
在Dev Guide中有下面这段:
A RemoteViews object (and, consequently, an App Widget) can support the following layout classes:
* FrameLayout
* LinearLayout
* RelativeLayout
And the following widget classes:
* AnalogClock
* Button
… Android Browser FakeWebview 图片如何获取保存
10月12号做得笔记:
http://docs.google.com/View?id=dg9p7dc4_44gz5bvn94
关于FakeWebview可以参考:
Android Browser Fakewebview和tabPicker分析

Android Browser Fakewebview和tabPicker分析
研究了下Android Browser的Fakewebview和tabPicker,在这里做个笔记.
Android Browser支持多个tab,最多支持8个:
在TabControl里有设置:
class TabControl {
// Log Tag
private static final String LOGTAG = “TabControl”;
// Maximum number of tabs.
static final int MAX_TABS = 8;…
Android Browser zoom In/Out 分析
当我们在用browser浏览网页的时候,上下拖动页面,就会出现一个放大缩小的按键了。
现在要在browser上做multi-touch,可以用两个手指对页面进行放大缩小操作,现在既然已经存在了现在的放大缩小功能,我只要能够
找到它相应的操作就行了。
主要的操作都是在framework下面:WebView.java.
在类WebView的说明里就有一段:
To enable the built-in zoom, set
* {@link #getSettings() WebSettings}.{@link WebSettings#setBuiltInZoomControls(boolean)}
可以通过这个选择开启还是关闭zoom功能。
在查找的过程中找到了:…