5DM3-android-4.0.3-...

date_range
也可以说是 root Android 的过程 ……
也可以说是 root Android 的过程 ……
最近 Android Pie 发布了,于是随便写写杂感 (雾)
(记得那是咱自己的第一部 Android 手机, Motorola Defy XT535)
拿来的时候还是 Android 2.3,当然是不能用现在的审美去看 Gingerbread
的界面啦……(不过 2.3 时期的 TouchWiz 是真的比 Motorola 那几乎没怎么改
的漂亮,虽然现在……)至于当时怎么想到去 root 了呢,动机大概是
想不起来了,大概只是为了移除某些系统应用而已 ? 。2.x 时期最著名的
大概就是 ZergRush 漏洞了,通吃大多数 2.2-2.3 版本……
后记:那 XT535 后来收到了 4.0.4 更新,然后又坚持了两年,最后掉了……
于是跳过 ?
和 XT535 同时入手的其实还有 Samsung Galaxy Tab2,当时那上面已经是 Android
4.0.3 了。虽然三星魔改的很厉害,但是乍一看就和旁边的 2.3 不一样不是? ?
以及到了 4.0 时代, ZergRush 就不能用咯。当时咱还处于一种啥都不懂的状态
(当然现在也只是懂些皮毛而已啦),上网搜索到了一个叫做 CF-Auto-Root 的家伙。
用过三星手机的应该都知道,人家是没有 fastboot 模式的,但是有个 Download 模式
(因为早些时候的 Download 模式上有个施工造型的 Android 机器人,所以有时有人
也把它叫做挖煤模式)。然后需要用到一个叫做 odin 的工具刷机。
当时 root 手机的方法,基本上都是先把一个称作 Recovery 的东西放在手机上,
然后利用一个小 zip 包把 su 可执行文件放在对应的位置上,再***一个应用来控制
root 权限就 OK 啦~
其实汝的手机上是有一个 Recovery 的,重置或者系统更新的时候会需要。不过
官方的 Recovery 通常功能不多而且会检查更新的签名,所以就需要刷入一个第三方
的 Recovery 来实现更多功能。比较著名的第三方 Recovery 的话,以前有 ClockWorkMod
(简称 CWM),现在有 Team Win Recovery Project(简称 TWRP)
而 CF-Auto-Root 把这些过程简化到一个供 odin 刷入的 tar 包中,于是咱当时就用它 root 了。
至于 Root 权限管理应用的话,当时比较流行的是 Superuser (忘了是谁开发的了)
和 SuperSU (Chainfire,也是 CF-Auto-Root 的作者,虽然已经是前开发者了)。两个当时都很优秀
(虽然现在都凉了)
然后有一次咱尝试系统加密玩脱了,系统进不去了,于是死马当活马医的装了个 CyanogenMod 进去,
打开了新世界的大门(雾)。
以至于现在咱用不习惯任何非类原生 Android 界面了 ?
大概是 4.4 时期,有了个叫做 Xposed 的东西。大概是一个通用的系统框架,
可以实现上至系统界面调节下到应用权限控制等一系列千奇百怪的功能。咱当时也
装了不少的模块用了一阵子。
后记:那个 Galaxy Tab 2 一直坚持到 CyanogenMod 13.0 ( Android 6.0.1),性能是真的不行了,
于是就闲置在家里,然后屏幕外面的玻璃被压碎了……
大概是 15 年的时候买了台 Galaxy A8 ,然后兴致勃勃的用以前的方法 root 的时候,
遇到了一个叫做 KNOX 的神奇大坑。
4.3 以前的三星手机刷入自定义操作系统以后,启动时会显示一个感叹号三角形,
Download 模式里也会记录刷入了自定义操作系统。不过当时可以很轻松的去掉
(例如用 Triangle Away)。后来有了 KNOX 以后,修改操作系统的行为会导致
KNOX WARRANTY VOID 变成 0x1 从而失去保修。以及某些功能将无法使用(例如
My Knox 和后来的 S Health,Samsung Pay 等等),而且据说因为这是个硬件
设计于是不可逆……
自此咱就再也没买过新的三星 Android 手机……
如果不考虑那些的话,还有一个问题,修改过系统分区的话,就不能收到厂商的系统更新了。
于是不动 /system 的 system-less root 方法应运而生,典型的方法是修改内核映像(boot.img)……
以及那时候自从 ART 代替 Dalvik 以后, Xposed 适配新版本的速度慢了下来。
7.0 一上来就是猛料,比如所谓的 SafetyNet ,反正咱现在也没搞清楚这是啥……
以及不知道是不是 7.0 的 Xposed 鸽了太久的原因, 有人写出了 Magisk。 和 Xposed
大概具有类似的功能,但是不动系统分区,于是接收 OTA 更新能稍微容易一点……
以及介于 Superuser 年久失修和 Chainfire 宣布不再参与 SuperSU 开发以后,
Magisk 还有一个 Root 权限管理程序。总之也有不少人用啦~
这个时期也出现了很多不必须 root 权限的系统管理工具,例如 Brevent 和 AppOps,
它们都是通过 adb 启动一个外部脚本来协助完成某些任务,给了不 root 或没法 root
手机的人一些选择。
以及那年商业化失败的 CyanogenMod 宣布关闭,不过过了一阵子以后又有一群有志之士
成立了 LineageOS 社区,目前正在活跃开发中。
Oreo 时有了 Project Treble 和 A/B 无缝系统更新,前者把 Android 系统的部件和 OEM
定制的部分分开,声称能使 OEM 适配最新版 Android 系统的速度提升。后者可以做到更新时可以
继续使用设备,而且不容易坏(笑)。
对于喜欢搞机的开发者们呢?看起来 Project Treble 使第三方 ROM 移植起来稍微容易了一些,
比如汝可以在 xda 上找到 Treble 兼容的 AOSP 和 LineageOS 的通用系统映像(GSI),然后
刷入进汝支持 Treble 的手机上,大多数的功能应该都能运作。 不过 A/B 无缝更新可能就是个
美丽的麻烦了,因为没有了单独的 Recovery 分区,所以给这种手机适配 TWRP 的进度似乎慢了下来。
咱现在用的是 Nokia 7 plus ,当时有官方的 Android P Beta 支持,于是咱就这么用了下去。
除了前几个 DP 每次都要全新***以外其实海星 ? 。 Magisk 在 Android P 上也比较稳,原来
不少需要魔改的功能也或多或少的集成进系统里了。然而以前那个愉快的折腾的日子似乎回不来了呢……
如果咱要换手机的话:
* 能解 Bootloader 锁的通常很快都会有 LineageOS 适配,优先考虑。
* 上面一条不满足的话,如果是类原生系统的体验也可以考虑。
* 最好不是异形屏幕(就是所谓的刘海啥的),屏幕比例最好是普通的 16:9/16:10 一类。
* 有物理键盘最好。
于是现在(这篇文章完成的时候)这么下来,貌似就不剩几个了吧 ?
然而评论的数量还没有评论框多?
需要连接到国际互联网以使用 Disqus 评论哦~ ?
Please enable JavaScript to view the
v2mm 评论框由
ISSO 评论实验中,估计唯一的优点是可以匿名 ?
「虽然咱长久以来被尊为神,且被束缚在这块土地上,但咱根本不是什么伟大的神。咱就是咱。咱是赫萝。」
「咱可是贤狼啊。起码还是知道这世界上有很多东西是咱所不了解的。」
chrome_reader_mode&页面
label&标签网上下载demo 本地studio版本和demo版本不一致处理方式
修改两处 1 项目的build.gradle 里面classpath2修改项目目录下 gradle--&wrapper--&gradle-wrapper.properties文件的distributionUrl地址然后 clean build
即可1.在一个XML中能否使用同一个包括多次安卓中包括标签的使用android按钮在中底部居中把button外的权重设为1.0
3.按钮形状http://www.cnblogs.com/gzggyy/archive//3083218.html
动画http://www.eoeandroid.com/forum.php?mod=viewthread&tid=564
http://blog.csdn.net/feng88724/article/details/6318430
http://www.360doc.com/content/13/35.shtml
http://blog.csdn.net/aminfo/article/details/7847761
http://blog.csdn.net/xsl1990/article/details/
http://www.cnblogs.com/bavariama/archive//2881225.html
http://www.oschina.net/question/
http://www.eoeandroid.com/thread-.html
imageview按比例缩放android:scaleType是控制图片如何resized/moved来匹对ImageView的size。
ImageView.ScaleType / android:scaleType值的意义区别:
CENTER /center
按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
CENTER_CROP / centerCrop
按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
CENTER_INSIDE / centerInside
将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
FIT_CENTER / fitCenter
把图片按比例扩大/缩小到View的宽度,居中显示
FIT_END / fitEnd
把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
FIT_START / fitStart
把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
FIT_XY / fitXY
把图片不按比例扩大/缩小到View的大小显示
MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。
的android如何获取时间差?使用错误解决方法之前,请务必使用ImagingLoader进行配置imageLoader.init(ImageLoaderConfiguration.createDefault(MainActivity.this));8.java.lang.StackOverflowErrorStackOverflow这个问题一般是你的程序里头可能是有死循环或递归调用所产生的9.java.lang.ClassCastException:android.app.Application不能转换为MyApplication问题出现这个异常的原因是在项目中添加了新应用程序类(public class Application extends android.app.Application)之后,没有在manifest.xml中添加该类的声明,所以编译器抛出异常:java.lang。 ClassCastException:android.app.Application无法转换为android_serialport_api.sample.Application解决方法,在manifest.xml中添加:[html]查看plaincopy&application
android:name="xxx.MyApplication"&
10. event.getAction();11.在依赖列表中找到了android-support-v4和android-support-v13。12.如何关联android-support-v4源码问题:使用viewpager或者fragmentActivity等一些v4包下的类,当我们按F3时无法查看到源码,这个时候就需要我们关联该源码,该源码的关联与android源码的关联不一样。
解决办法:
1、首先在工程的libs目录下创建一个配置文件:android-support-v4.jar.properties(建议这样)
2、查找自己***的SDK的目录下的android-support-v4的src源码地址
本人的为:D:\eclipse\android-sdk\extras\android\compatibility\v4\src
3、编辑android-support-v4.jar.properties文件为:(注意是双斜杠)
src = D:\\eclipse\\android-sdk\\extras\\android\\compatibility\\v4\\src
4、关闭自己的工程后再打开,此时进去选择ViewPager后F3就能看到源码了。
5、恭喜:android-support-v4 源码已经成功的关联上。
还有种方式,上面是月食中的做法,在androidstudio中的使用更简单。13.eclipse修改设置Ctrl + Shift + F长度在window的Preferences中的Java-&Code Style-&Formatter
到了这一步就是找到Ctrl+Shift+F的格式化模板了,这里不能直接修改。因为是eclipse默认的模板,是只读的。
我们可以new 一个Formatter,然后点击edit就可以修改模板。
我修改模板主要就是修改那个Ctrl+Shift+F后,把我的代码换多行了。
修改选项卡中的Line Wrapping选项卡, 有一个Maximum line with: 80(默认);
这里默认是80我们可以把它修改成120的,那样不超过120个字符就不会被换行了!
其他自己需要的格式都可以在这里面修改。当然你还可以导出你自定义的格式,导出的是xml格式的。以后在其他地方
还可以导入。这样就不用再自定义了。
android-develop镜像路径[重点推荐]http://androiddoc.qiniudn.com/
谷歌,被和谐后,通过***或者访问上述镜像路径。15.fragment Andriod开发技巧 - Fragment的懒加载一个活动里面可能会以viewpager(或其他容器)与多个片段来组合使用,而如果每个片段都需要去加载数据,或从本地加载,或从网络加载,那么在这个活动刚创建的时候就变成需要初始化大量资源。这样的结果,我们当然不会满意。那么,能不能做到当切换到这个片段的时候,它才去初始化呢?***就在片段里的setUserVisibleHint方法这个里
结合片段的隐藏和显示使用。让多个片段切换时不重新实例化关于Android的GridView添加headerViewgrid-with-header-list-adapter StickyGridHeaders /
18.Eclipse设置不格式化注释Eclipse设置不格式化注释
  注意中写点带格式的文字,格式后全乱了,解决办法如下:Windows - & Prefer - & java - &代码样式 - &格式化 - &编辑 - &注释取消勾选“启用Javadoc注释格式”。19.android-超拉至刷新20.Linux动态GIF图的录制byzanz
byzanz的***与使用
Ubuntu下***
sudo add-apt-repository ppa:fossfreedom/byzanz
sudo apt-get update sudo apt-get install byzanz
你可以通过如下命令来完成录制过程:
byzanz-record -d 40 -x 0 -y 0 -w 400 -h 320 byzanz-demo.gif
-d 40 为录制的时长为 40 秒
-x 0 录制区域的横坐标
-y 0 录制区域的纵坐标,记住:屏幕右上角为原点(0,0)
-w 400 录制区域的宽度
-h 320 录制区域的高度
byzanz-demo.gif 保存的文件名
详细参数可通过byzanz-record --help查看。
http://www.tuicool.com/articles/YFJrem
另外:windows下 GIF屏幕录像机 V2.0
viewpage无线循环23.public void onPageScrollStateChanged(int arg0)此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。arg0 ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做。
当页面开始滑动的时候,三种状态的变化顺序为(1,2,0)
24。在eclipse.ini文件中加入-Dorg.eclipse.swt.browser.DefaultType = mozilla然后clean一下就OK了执行clean命令26.viewpager实现画廊(一屏多个片段)效果27.svn命令通过指令添加文件,每次都到对应文件夹svn add。这样如果需要添加的文件不在一个文件夹时会很麻烦,通过下面的--force可以方便的添加$ svn add * --force
当然现在studio集成乐svn git等代码管理工具,很方便,可以直接使用。阵列常数只能在初始化器中使用int CC [] ={1,2,3};
数组定义并附初始值的时候,数组的长度就定了,长度是3
而且数组重新赋值不能再像定义的时候那样
而要一个一个地更改
Array constants can only be used in initializers
好像是说数组不能用于初始化
29.android插件化30.scrollview在内容较少时也可以滚动在XML为ScrollView添加属性android:overScrollMode="always"即可
31.gridview / listview点击时间android默认背景是***的,如何去掉选中时的***背景方法一,在控件被初始化的时候设置
gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
listView.setSelector(new ColorDrawable(Color.TRANSPARENT));
方法二,在布局文件中设置listSelector属性
android:listSelector="@android:color/transparent"
android:numColumns="auto_fit"
android:columnWidth="50dp"
android:stretchMode="spacingWidth"
android:layout_weight="1.0"
android:layout_height="0dip"
android:layout_width="match_parent"/&
android:listSelector="@android:color/transparent"
android:layout_height="match_parent"
android:layout_width="match_parent"/&
当然也可以定制化自己想要的效果。
推荐使用方法二,解耦逻辑代码与布局文件。
另外listview还有两个基础问题问题1:
listview在拖动的时候背景图片消失变成黑色背景。等到拖动完毕我们自己的背景图片才显示出来。
解决办法:
xml中: android:scrollingCache="false"
或者 android:cacheColorHint="#"
代码中: setScrollingCacheEnabled(false)
或者 setCacheColorHint(0)
或者setCacheColorHint(Color.TRANSPARENT);
listview的上边和下边有黑色的阴影。
解决办法:
xml中: android:fadingEdge="none"
代码中:setFadingEdgeLength(0);
32.ScrollView只支持一个子项,报告ScrollView只能托管一个直接的孩子解决办法:
在ScrollView 中设LinearLayout为子项 ,将其它View放入LinearLayout。
33.viewpager设置间距和缓存viewPager.setOffscreenPageLimit(TOTAL_COUNT); viewPager.setPageMargin(getResources()getDimensionPixelSize(R.dimen.page_margin));34.一级缓存和二级缓存是什么意思?静态RAM缓存叫一级缓存,而把后来增加的动态RAM叫二级缓存。RAM分两种,一种是静态RAM,SRAM;一种是动态RAM,DRAM。前者的存储速度要比后者快得多,我们现在使用的内存一般都是动态RAM。有的菜鸟就说了,为了增加系统的速度,把缓存扩大不就行了吗,扩大的越大,缓存的数据越多,系统不就越快了吗缓存通常都是静态RAM,速度是非常的快,但是静态RAM集成度低(存储相同的数据,静态RAM的体积是动态RAM的6倍),价格高(同容量的静态RAM是动态RAM的四倍),由此可见,扩大静态RAM作为缓存是一个非常愚蠢的行为,但是为了提高系统的性能和速度,我们必须要扩大缓存,这样就有了一个折中的方法,不扩大原来的静态RAM缓存,而是增加一些高速动态RAM做为缓存,这些高速动态RAM速度要比常规动态RAM快,但比原来的静态RAM缓存慢,我们把原来的静态RAM缓存叫一级缓存,而把后来增加的动态RAM叫二级缓存。一级缓存和二级缓存中的内容都是内存中访问频率高的数据的复制品(映射),它们的存在都是为了减少高速CPU对慢速内存的访问通常CPU找数据或指令的顺序是:先到一级缓存中找,找不到再到二级缓存中找,如果还找不到就只有到内存中找了35.性能优化:使用SparseArray代替HashMap中&整数,对象&

参考资料

 

随机推荐