android
文章平均质量分 52
森林海的棕熊
极客文化
展开
-
Flutter摘要-Text
无状态组件,富文本控件官网说明单一样式的文字。该文本控件显示与单一风格的文本字符串。该字符串可能会跨越多行,也可能全部显示在同一行上,具体取决于布局约束。该风格参数可选。如果省略,则文本将使用最接近的封闭DefaultTextStyle的样式。如果给定样式的 TextStyle.inherit属性为true(默认值),则该给定样式将与最接近的DefaultTextStyle合并。这种合并行为非常有用,例如,在使用默认字体系列和大小时使文本变为粗体。使用基本使用Text("文本").原创 2021-03-04 00:11:51 · 560 阅读 · 0 评论 -
Unity手游资源修改流程
最近接到一个Android手游汉化需求,研究了一下,特此记录开发环境AssetStudioGUI该软件可解析,定位压缩后的Unity 资源。下载: https://github.com/Perfare/AssetStudioAssetBundleExtractor用于资源替换下载 https://www.lanzous.com/i3wcjxe010Editor游戏文本文件是二进制dat文件,需基于010Editor修改下载 https://www.sweetscape.com/010.原创 2020-11-02 20:38:41 · 8911 阅读 · 4 评论 -
Android 页面加载笔记
作用Android中的页面展示主要是WindowManagerService负责,应用通过Binder与WMS通信,切换当前展示页面的内容。业务在Activity的setContentView函数调用的是getWindow()的对应函数 public void setContentView(@LayoutRes int layoutResID) { getWindow().setContentView(layoutResID); initWindowDecorA原创 2020-10-26 22:24:02 · 251 阅读 · 0 评论 -
NDK动态注册
提供需注册类的类名完整路径const char* className= "com/hack/application/util/Enciphere";获取jclassjclass myClass = env->FindClass(className); if (myClass == NULL) { //无法找到需动态注册类,so加载失败 return -1;}3.提供需注册java函数名和native函数JNINativeMethod二维数组表示了java函数与nat.原创 2020-09-08 21:15:43 · 172 阅读 · 0 评论 -
Android so反调试
原理在Android系统中,如果进程处于调试状态,/proc/进程pid/status (等同于/proc/self/status)文件中的tracePid不为0,所以只要在加载so的时候,读取status文件,若tracePid不为0,则说明进程处于调试状态。status文件分析Name: shState: R (running)Tgid: 23809Pid: 23809PPid: 195TracerPid: 0Uid: 0 0原创 2020-08-28 13:12:24 · 987 阅读 · 0 评论 -
Android 10 重大隐私权变更记录
隐私权变更受影响的应用缓解策略分区存储 针对外部存储的过滤视图,可提供对特定于应用的文件和媒体集合的访问权限访问和共享外部存储中的文件的应用使用特定于应用的目录和媒体集合目录 了解详情增强了用户对位置权限的控制力 仅限前台权限,可让用户更好地控制应用对设备位置信息的访问权限在后台时请求访问用户位置信息的应用确保在没有后台位置信息更新的情况下优雅降级 使用 Android 10 中引入的权限在后台获取位置信息 了解详情系统执行后台 Activity 针对从后台...转载 2020-07-31 15:09:52 · 188 阅读 · 0 评论 -
Android手机网络类型转换
public static String getNetworkType(Context context) { TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); if (telephonyManager == null) { return ""; } ...原创 2020-07-02 17:23:22 · 397 阅读 · 0 评论 -
Android Root文件路径
/sbin/su/system/bin/su/system/xbin/su/system/sbin/su/vendor/bin/su/su/bin/su/system/sd/xbin/su/system/bin/failsafe/su/system/bin/failsafe/su/data/local/xbin/su/data/local/bin/su/system/sd/xbin/su/system/bin/failsafe/su/data/local/su/system/a.原创 2020-05-26 14:32:20 · 2178 阅读 · 0 评论 -
Android 重打包失败解决方案
如果apktool b 打包失败显示的log 是 brut.androlib.Androlib.buildResourcesFull 资源打包失败,则原因是缺失基于Android6.0的framework-res.apk文件解决方案1.找一台root过的Android6.0手机2.pull framework-res.apk文件adb pull /system/framework...原创 2019-11-30 18:19:57 · 684 阅读 · 0 评论 -
ADB 实现Android Http 代理
ADB 实现Android Http 代理设置代理adb shell settings put global http_proxy ip_address:port删除代理adb shell settings delete global http_proxyadb shell settings delete global global_http_proxy_hostadb shell ...原创 2019-11-06 11:07:21 · 2360 阅读 · 0 评论 -
Android应用旋转时的生命周期
其实很小的一个知识点,只是今天突然忘记,于是测了一下,在此记录,加深记忆。就结果来看,旋转会导致activity被destroy,然后重新onCreate。package com.example.host_0303.test;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;p...原创 2018-08-23 10:06:54 · 234 阅读 · 0 评论 -
命令行修改Android id
命令行修改Android id1.确认已安装ADB2配置ADB环境2.1 打开环境变量2.2配置path2.3 确认adb配置成功2确认手机root3处理 Android id3.1查询 Andoird ID3.2修改 Andoird ID (可能无效)3.3删除 Android ID3.4新增Android ID3.5通过setting改变Android ID1.确认已安装ADBadb下载...原创 2018-09-18 12:26:12 · 20681 阅读 · 1 评论 -
Android APP执行su命令
import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;public class RootCommand { public static String runCommand(String command) { Process process =...原创 2019-03-14 20:27:48 · 6771 阅读 · 7 评论 -
Android签名命令记录
java -jar signapk.jar publickey privatekey input.apk output.apk参数publickey表示公钥参数private表示私钥参数input.apk表示要签名的包参数output.apk表示签名后输出的包原创 2019-03-13 09:07:51 · 676 阅读 · 0 评论 -
JNI个人笔记1
JNI方法记录java声明lib.sostatic{ System.loadLibrary("lib");}c++ 字符串 转 Java 字符串env->NewStringUTF(“xxxx”);javah -classpath (class路径)JNIEXPORT jstring JNICALL Java_com_example_hellojni_stringFro...原创 2019-04-04 13:50:41 · 110 阅读 · 0 评论 -
JNI方法笔记2 - C++中调用Java函数
JNI方法笔记2 - C++中调用Java函数1.找到类基于类名寻找类env->FindClass("");基于实例找到类env->GetObjectClass(instance);2.访问域// 访问实例域jfieldID instanceFieldId = env->GetFieldID(clazz, “instanceField”, “Ljava/lang/...原创 2019-04-04 16:46:13 · 417 阅读 · 0 评论 -
JNI方法笔记3 异常
JNI方法笔记3 异常1.捕获异常在C++中 通过ExceptionOccurred函数捕获异常然后通过ExceptionClear显式清楚异常jthrowable ex;env->CallVoidMethod(instance, throwingMethodId);ex = env->ExceptionOccurred();if(ex != 0){ env->E...原创 2019-04-04 17:07:33 · 290 阅读 · 0 评论 -
Android逆向 动态调试smali
动态调试smali应该是每个Android逆向工程师的基本功,其原理其实就是改包为debuggable,再用debuggable启动应用,基于JDWP协议端口转发调试应用,JDB Client(被调试程序)在被调试时会启动jdwp线程通过JDWP协议与JDB Server(调试端)进行通信,JDWP协议用于传输调试的行号及局部变量等信息。1.改包1.1利用apktool解包apk调用a...原创 2019-04-17 12:16:05 · 764 阅读 · 0 评论 -
Android源码阅读 ThreadLocal
ThreadLocal 是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储后,只有在该存储线程中可以获取该数据,其他线程无法获得该数据。在阅读Looper,ActivityThread以及AMS中都用到了ThreadLocal。版本代码是android-28构造ThreadLocal类只有一个无参构造函数,所以使用的时候直接调用无参构造函数ThreadLocal...原创 2019-05-22 22:19:17 · 306 阅读 · 0 评论 -
Android AIDL的使用及分析
AIDL:Android Interface Definition Language,即Android接口定义语言。Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案...原创 2019-05-29 17:18:56 · 417 阅读 · 1 评论 -
Android Messenger使用及分析
Messenger是基于AIDL实现的轻量级IPC方案。1.使用1.1服务端接受信息的服务端需要实现一个Handler用于处理到的信息 private static class MessengerHandler extends Handler { @Override public void handleMessage(Message msg) {...原创 2019-05-29 21:16:26 · 5929 阅读 · 0 评论 -
Android Message源码阅读
Message是作为Messenger或者MessageQueue中的信息载体,故此阅读分析一下其代码1.实现的接口Message实现了Parcelable接口,以使其在能够在进程间传递。2.字段主要字段是what用于标识信息内容arg1,arg2可以消耗很低的携带整形数据replyTo可携带返回数据的MessengersendingUid指示发送消息的uid的可选字...原创 2019-05-29 21:42:51 · 257 阅读 · 0 评论 -
Android Binder源码阅读
作为Android 主要的IPC方式Binder, 其实现了IBinder接口,通过代理模式,parcelable序列化反序列操作,实现了RPC,即跨进程调用1.IBinder接口首先Binder 实现了IBinder接口,故先来看看IBinder接口,IBinder代码只有四十行功能比较清晰。public interface IBinder { //IBinder协议传输码, ...原创 2019-07-26 18:59:41 · 861 阅读 · 0 评论 -
App反抓包反fiddler证书小技巧
在抓包某些应用的时候,发现虽然使用了JustTrustMe,干掉了证书校验,还是抓包失败。在分析过程中发现对方限制证书,故此记录。 <application android:theme="@style/BaiduMapTheme" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android...原创 2019-09-19 12:47:01 · 3317 阅读 · 0 评论 -
WIFI android控制加湿器助手(附详解+源码)
因为一大堆同学大创结不了题,求我帮忙,所以这两天一直怼app控制硬件.今天是wifi. 思路还是比较简单的.无非建立通讯流,然后交换信息,通讯方法都差不多.界面大体思路 如上图 一共只有3个类,一个通讯类,一个活动,一个广播.WIFI通信通讯类思路是通过 new Socket("192.168.4.1",5000);建立通讯,两个形参,第一个是host,第二个是端口. 然后output原创 2017-05-20 18:31:51 · 606 阅读 · 0 评论 -
基于命令行提取APK
1.找到包名adb shell pm list packages2.找到Apk位置adb shell pm path 包名3.取出该Apkadb pull 路径原创 2018-08-17 16:36:53 · 586 阅读 · 0 评论 -
JNI对引用数据类型的操作
由于引用类型以不透明的方式传递给原生代码,因此引用类型不能直接使用和修改。但JNI提供了一些操作应用类型的API本文主要介绍字符串数组NIO缓冲区字段方法基本数据类型引用类型1.创建字符串jstring javaString;javaString = (*env)->NewString(env,"HelloWorld");...原创 2018-08-08 14:18:07 · 655 阅读 · 0 评论 -
Android NDK开发入门
基于Android studio 3.0 CMake 3.4.1新建项目勾选C++support选项。 勾选支持,可以获得项目运行时JNI更多信息 JNI代码实现创建native函数 新建cpp或c文件实现该native函数。注意函数名是Java_包名(.替换成下划线)_函数名,默认参数有两个,一个是JNIEnv 一个是jclass 在Java中...原创 2018-08-06 18:51:58 · 136 阅读 · 0 评论 -
Android7.0文件共享
Android系统是基于Linux,可使并发读写同一文件来交换数据。序列化和反序列化代码如下序列化 组件中写入如下方法 private void persisToFile(){ new Thread(new Runnable() { @Override public void run() { Us原创 2017-08-30 12:16:29 · 454 阅读 · 0 评论 -
Android7.0RecyclerView用法解析
RecyclerView 是ListView的增强版,优化了ListView的一些内存,样式问题。基本用法1.在app/build.gradle文件中加入dependencies{ compile 'com.android.support:recycleview-v7:24.2.1'}2.点击Sync Now 同步一下3.在xml文件中调用<android.suppoert.v7.wid原创 2017-09-07 16:04:01 · 350 阅读 · 0 评论 -
Android7.0持久化技术
持久技术即数据数据存储问题,Android有多种成熟的存储方式,例如SharedPreferences,SQLite等SharedPreferences()方法Android中主要有三种方法得到SharedPreferences对象1.Context类中getSharedPreferences()方法this.getSharedPreferences("sharedPreferences对象名",原创 2017-09-07 11:45:17 · 205 阅读 · 0 评论 -
Androud7.0之IPC机制(多进程、及其通信)
IPC(Inter-Process Communication)为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。Android开启多进程模式<activity android:process = "你的进程名"/>只需要在四大组件中添加 android:process 就可为其新建一个进程。但Android中的多进程会导致静态成员和单例模式完全失效线程同步机制完全失效原创 2017-08-29 13:11:21 · 238 阅读 · 0 评论 -
Android7.0之Activty详解
总结一下 Android开发艺术探索的读书笔记典型生命周期(1) onCreate: Activity正在被创建,可做一些初始化工作。 (2)onRestart: Activity正在重新启动,当Activity从不可见重新到可见状态,onRestart会被调用。 (3)onStart: Activity正在被启动,Activity已经可见,但还未在前台。 (4)onResume:Activ原创 2017-08-29 10:28:50 · 507 阅读 · 0 评论 -
Android7.0 ShapeDrawable背景样式圆角
SHapeDrawable 通过颜色来构造图形。通过xml构建。1.建立文件在res文件里新建drawable文件,标签为shape2.标签详解shape表示图形文件rectangle 矩形 oval 椭圆 line 横线 ring 圆环ring标签有额外属性 corners表示shape的四个角gradient 渐变色填充solid纯色填充stroke描边padding 背景空原创 2017-09-04 14:18:30 · 2306 阅读 · 0 评论 -
整理的收集的Android的学习资料(大佬们的博客,学习思路,行业要求,免费资料下载地址)
我的宝藏,长期更新,日常挖宝。欢迎挖客交流,分享资源,发扬互联网共享精神大佬们的博客http://javayhu.me/android/ 这个大佬的博客很系统,有学习思路,有书籍推荐,有读书笔记 http://my.csdn.net/wwj_748 这位大佬的博客有大量疑难杂症的解决方案。行业要求一般公司的要求大公司的要求算法训练网站(算法是每个程序员的根本)http://www.hihoc原创 2017-05-23 12:01:48 · 720 阅读 · 0 评论 -
Android7.0 蓝牙开发官网详解
蓝牙 本文来自官网,留作自用.欢迎交流,欢迎撕逼.本文内容__基础知识 __ 蓝牙权限 __设置蓝牙 __查找设备 _________查询配对的设备 _________发现设备 __连接设备 _________连接为服务器 _________连接为客户端 __管理连接 __使用配置文件 ________供应商特定的 AT 命令 ________健康设备配置文件 关键类B转载 2017-05-18 09:21:28 · 7463 阅读 · 0 评论 -
仿小米运动的蓝牙开源项目(附详细实现说明+源码)
托瓦兹 莱纳斯 是一个天才. 这个项目主要以蓝牙和自己diy的手环连接,可以记录测试数据,绘制成折线坐标图之类的功能.项目结构很简单 6个类,其中AcceptThread,ConnectedThread,为线程工具类.只有两个界面活动类,分别是MainActivity,DataActivity;然后ViewHandler 是为了实现异步改变UI , CircleTextView是我自原创 2017-05-18 16:52:55 · 1863 阅读 · 0 评论 -
Android框架之美Glide3.0
Android框架之美Glide3.0 Glide是一个非常迅速和高效的媒体流及图片导入的Android框架,包涵媒体解流,内存和磁盘缓存等。并将其集成到一个非常简单易用的接口中。 Glide支持抓取、解码和显示视频照片,图片和动画gif(可以将gif图片自动转换为动画)。它包含一个灵活的API使开发者可以迅速在网络堆栈使用。使用方法1.导入Glide1.1可以导入jar包https:/翻译 2017-05-12 14:19:21 · 630 阅读 · 0 评论 -
Android7.0之从零开始:Intent及IntentFilter
快速上手intent及intentFilter。1.Intent及intentFilter的介绍Intent 中文意思 “意图“,一般用组件间的通信。可用来激活Activity,Service,BroadCast Recevier。 激活Activity startActivity(intent); 激活Service startService(intent); 激活Broadcast原创 2017-04-28 23:20:56 · 1191 阅读 · 0 评论 -
Android合作开发的小技巧
一个大的Android项目往往都是几个人一同开发,这些小的代码技巧可以使合作开发的效率更高。如何得知当前运行的是哪个Activity?很多时候由于在别人的代码上二次开发,或者从github上下载下来的项目运行,会需要这个。1.创建一个基类,复写onCreate()package com.treeanimals.max.forali;import android.app.Activity;impo原创 2017-09-16 10:23:31 · 483 阅读 · 0 评论