Android
土豆吞噬者
这个作者很懒,什么都没留下…
展开
-
解决media.codec: libminijail: blocked syscall:xxxx问题
在Android中使用软编码时遇到了下面的错误:E/media.codec: libminijail: blocked syscall: geteuid32原因是Android系统使用seccomp机制限制了mediacodec执行某些系统调用,我们可以通过修改/system/etc/seccomp_policy/mediacodec-seccomp.policy将geteuid32设置为允许执行。...原创 2020-09-04 16:11:25 · 1861 阅读 · 1 评论 -
使用JEB调试Android App
1. 开发App我们首先开发一个简单的App,输入123456就提示成功,否则提示失败。public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(saved...原创 2020-01-02 00:55:30 · 2274 阅读 · 2 评论 -
Java中RSAPublicKey在不同平台的差异性
最近在逆向某Android App的时候复制了里面一段Java写的RSA解密代码,把它放在Windows上执行,结果发现解密失败,刚开始以为是密文数据或者公钥数据弄错了,调试了下发现密文数据或者公钥数据都没问题,问题发生在通过公钥数据生成公钥,在Window上生成的公钥是Sun RSA public key,在Android上生成的公钥是OpenSSLRSAPublicKey,原因可能和Jdk版本...原创 2020-01-01 21:48:58 · 2310 阅读 · 0 评论 -
使用compileOnly依赖jar包,却仍然参与打包的问题
1.删除implementation fileTree(dir: ‘libs’, include: [’*.jar’])2.使用compileOnly引入编译时需要但不打包的jar原创 2019-12-30 17:34:45 · 3424 阅读 · 2 评论 -
解决Unity导入aar或jar出现的Program type already present: com.xx.BuildConfig问题
原因:当Unity导入的aar或jar包名和项目包名一样的话,BuildConfig会出现冲突。解决方法:在aar/jar的build.gradle中添加下面的代码禁止生成BuildConfig即可。afterEvaluate { generateReleaseBuildConfig.enabled = false generateDebugBuildConfig.enable...原创 2019-12-30 17:29:47 · 5218 阅读 · 1 评论 -
使用Gson解析含有动态key的Json
使用Gson解析Json时,有时候会遇到key不是固定的情况,这个时候可以把它当做是一个Map。{ "students":{ "101":{ "name":"xiao hong", "age":10 }, "102":{ "name":"xiao ming", ...原创 2019-12-25 22:32:23 · 1651 阅读 · 1 评论 -
Android系统权限
使用权限如果应用AndroidManifest.xml中列出正常权限,系统会自动授予这些权限,如果是危险权限,系统会要求用户明确授予这些权限。Android 发出请求的方式取决于系统版本和应用的targetSdkVersion:如果设备运行的是 Android 6.0(API 级别 23)或更高版本,并且应用的 targetSdkVersion 是 23 或更高版本,则应用需要在运行时向用户...原创 2019-07-31 17:04:32 · 400 阅读 · 0 评论 -
Android模拟器设置代理
https://blog.csdn.net/xc_zhou/article/details/86615466长按wifi名称,编辑wifi代理设置原创 2019-07-30 18:43:35 · 5141 阅读 · 0 评论 -
gradle版本修改
1.修改gradle-wrapper.properties中的distributionUrldistributionUrl=https://services.gradle.org/distributions/gradle-4.4-all.zip2.修改build.gradle中的buildscript { repositories { google() ...原创 2019-07-30 17:51:22 · 2769 阅读 · 0 评论 -
gradle依赖方式
gradle3.0之后的版本相对于2.x依赖方式有所修改(括号内为2.x版本依赖方式):implementation api(compile)implementation:该依赖方式所依赖的库不会传递,只会在当前module中生效。api:该依赖方式会传递所依赖的库,当其他module依赖了该module时,可以使用该module下使用api依赖的库,该依赖方式与2.x版本的compile完...原创 2019-07-30 17:33:49 · 1014 阅读 · 0 评论 -
Android第三方库导致support版本冲突的问题
dependencies {implementation ‘com.android.support:appcompat-v7:26.1.0’implementation(‘com.evrencoskun.library:tableview:0.8.8’){exclude group: ‘com.android.support’}}但是问题是我不知道哪个第三方库冲突,不可能一个个检查吧?...原创 2019-07-30 17:16:39 · 1451 阅读 · 0 评论 -
Android Support Library
当您EditText在布局中使用并且appcompat提供顶级活动/对话框 时,将自动使用此选项。编写自定义视图时,您只需要手动使用此类。在布局中使用控件时,会自动转换为appcompat控件,而自定义控件不会...原创 2019-07-30 16:01:27 · 307 阅读 · 0 评论 -
解决安装App后点击打开引起的问题
问题项目发版当晚发现的:安装完APP后直接点击打开,接着Home键退到后台,再次打开App 时发现重启了。试了一下去哪儿,陌陌等几个主流app,也有这个问题原因The Launcher starts an app using an intent with android.intent.action.MAIN action and android.intent.category.LAUNCH...原创 2019-08-27 16:27:10 · 747 阅读 · 0 评论 -
Android使用R8压缩,混淆,优化App
android代码混淆规则以及基本设置原创 2019-08-02 18:51:23 · 8552 阅读 · 0 评论 -
Android中ScrollView常见问题
https://www.jianshu.com/p/3e710a5ee50b原创 2019-08-05 11:20:06 · 933 阅读 · 0 评论 -
Android中ABI和CPU的关系
https://www.veryarm.com/6601.html原创 2019-08-02 11:42:08 · 923 阅读 · 0 评论 -
ViewModel的生命周期
ViewModel的生命周期依赖于对应的Activity的生命周期,通常会在Activity第一次onCreate()时创建ViewModel,Activity在生命周期中可能会触发多次onCreate()(例如配置发生变化),而ViewModel只会在第一次onCreate()时创建,ViewModel的生命周期一直持续到Activity最终销毁。...原创 2019-08-27 12:30:00 · 6297 阅读 · 1 评论 -
拦截Android App中的域名解析
在App使用域名访问网络时,域名解析是网络请求的第一步,该过程有时候会出现解析慢或域名劫持的情况。我们可以通过拦截域名解析直接返回自定义的IP或者使用HTTPDNS解析域名,如果App使用的是OKHttp,可以直接使用OKHttp的DNS接口进行拦截。如果App访问网络的库没没有提供类似OKHttp的DNS接口,我们还可以通过hook getaddrinfo和android_getaddrin...原创 2019-08-27 14:56:51 · 2272 阅读 · 0 评论 -
Android中Activity的四种启动模式
onNewIntent()如果启动Activity时不创建新的实例而是重用之前的实例,则会调用onNewIntent()方法。standard标准模式,也是Activity的默认模式,这种模式下的Activity可以被多次实例化。singleTop栈顶复用模式,如果Activity处于栈顶,再次启动这个Activity时,不会创建新的实例,而是重用位于栈顶的实例。singleTask...原创 2019-08-27 17:30:50 · 226 阅读 · 0 评论 -
使用Android Studio制作.9图
.9图制作原创 2019-09-06 11:11:35 · 427 阅读 · 0 评论 -
Android中使用Scheme协议打开App
android scheme跳转拦截原创 2019-09-06 14:11:23 · 1377 阅读 · 0 评论 -
Xposed简单入门
1.在AndroidManifest.xml中application标签内添加 <!-- 是否是xposed模块,xposed根据这个来判断是否是模块 --> <meta-data android:name="xposedmodule" android:value="true" /> ...原创 2018-09-20 23:09:16 · 286 阅读 · 0 评论 -
上架Google Play遇到的坑
Google应用签名计划加入后就无法退出了,这个计划会对你的APK重新签名。上传APK后出现"未优化的APK"警告可以不用处理,不影响应用发布。上传APK后发布按钮为灰色,原因是有些选项没有填写,例如发布范围等。...原创 2019-07-09 13:26:16 · 2290 阅读 · 1 评论 -
gradle常用设置
gradle配置文件有两个,一个是全局的,一个是工程的,全局的某些设置会覆盖工程的,例如代理设置macos下全局gradle路径为~/.gradle/systemProp.https.proxyPort=1087systemProp.http.proxyHost=127.0.0.1systemProp.https.proxyHost=127.0.0.1systemProp.http.pr...原创 2019-05-28 23:59:34 · 1761 阅读 · 0 评论 -
应用内更新提示“解析软件包失败”的解决方法
今天在一个小伙伴的手机上测试版本更新功能,每次安装APK的时候都会提示“解析软件包时出现问题”,手机型号为小米3,系统版本为MIUI10开发版,在其他小米手机上则可以正常安装。首先怀疑是不是下载不完整导致的,但是对比了MD5值,是正确的。是否是系统BUG?测试其他APP的版本更新功能,发现是正常的。那会不会是权限问题呢,因为我下载的APK文件会存放在缓存文件夹里,有可能安装程序没有权限访问...原创 2018-11-01 22:15:22 · 6911 阅读 · 1 评论 -
Android一键V2签名,校验
一般Android加固都自带重签名功能,但是有的加固只加了V1签名,所以还是得自己手动签名下,下面是我用python写的签名以及校验脚本一键V2签名# -*- coding: utf-8 -*-#python2.7import osimport os.path#Android BuildTools路径buildToolDir='...\\build-tools\\27.0.3\...原创 2018-10-16 17:41:40 · 2017 阅读 · 0 评论 -
在okhttp3,WebView中忽略HTTPS证书校验
在APP开发过程中,后台使用的可能是自签的Https证书,如果不忽略证书校验,会出现Trust anchor for certification path not found的错误Okhttp3忽略HTTPS证书校验import java.security.SecureRandom;import java.security.cert.X509Certificate;import j...原创 2018-10-15 18:38:44 · 1111 阅读 · 0 评论 -
Android中利用productFlavors配置多渠道
build.gradle(app)设置android { flavorDimensions "default" productFlavors{ //不同渠道 360{ dimension "default" //替换AndroidManifest中的值 manifestPl...原创 2018-10-15 14:36:47 · 1486 阅读 · 0 评论 -
Drawable文件夹不正确导致的内存升高问题
1.玩手机的时候点了下应用管理,发现一个问题,我自己写的APP内存占用竟然达到了200多M,而手机中其他应用普遍都在100M以内,经过排除,发现是图片加载引起的2.写了一个Demo发现,一张1920*1080的图片放在drawable文件夹就会使APP多70M内存,但是1920*1080*4也才7M,Google一番后发现可能和drawable文件夹的名称有关系,将图片换到drawable-x...原创 2018-10-12 22:47:20 · 310 阅读 · 0 评论 -
解决TextView换行异常问题
在用TextView显示一段中文时发现会提前换行,用网上搜索到的方案都解决不了,最终选择用EditText代替之 <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:en...原创 2018-09-21 22:50:44 · 2097 阅读 · 5 评论 -
JNI简单入门
1.在目前版本的AndroidStudio(3.2)上默认使用CMake来编译C/C++代码,向cpp文件夹添加新的C/C++代码时,会发现在IDE里并没有显示新添加的文件,这个时候只需要在CMakeList.txt里面添加下面的代码,然后点击Refresh Linked C++ Projects即可aux_source_directory(src/main/cpp/mycode MY_SR...原创 2018-09-20 22:48:38 · 224 阅读 · 0 评论 -
使用Instrumentation模拟点击屏幕
1.使用前需要申明权限<uses-permission android:name="android.permission.INJECT_EVENTS" />2.使用Instrumentation模拟点击有一定限制,只能点击自己的APP,或者UID相同的APP,如果有root权限或者系统签名则可以点击所有APPimport android.app.Instrumentat...原创 2018-09-19 23:24:42 · 4746 阅读 · 0 评论 -
Android录屏流程
1.权限申明 <uses-permission android:name="android.permission.RECORD_AUDIO" />2.请求录屏 private MediaProjectionManager mMediaProjectionManager; @Override protected void onCreate(Bundl...原创 2018-09-19 23:09:38 · 1373 阅读 · 0 评论 -
使用LiveData处理事件
今天遇到了一件奇怪的事情,在同事手机上有个Activity(A)关闭后竟然又被创建了,调试后发现原来每次关闭这个Activity(A)都会触发上一个Activity(B)的生命周期改变,然后在订阅的LiveData对象会收到OnChange消息创建Activity(A),正常情况下,这种数据我们只需要处理一次,准确的来讲就是事件,这种情况下我们可以使用下面的SingleLiveEvent来处理。...原创 2018-09-19 22:29:23 · 1577 阅读 · 0 评论 -
手机小游戏辅助程序的实现
这两天玩了一个微信的小游戏,想到以前的跳一跳可以通过模拟按键和截取屏幕的方式做辅助程序,所以想针对这个小游戏也做个机器人自动玩,虽然结果是失败的,但是也学到了点东西。1.做这种小游戏机器人的关键点有两个,一个是模拟按键,一个是截取屏幕。模拟按键很简单,直接调用以下命令即可在安卓手机上任意一个坐标点击一次,部分手机记得在开发者选项里开启允许模拟点击adb shell input tap x...原创 2018-09-15 18:27:58 · 5420 阅读 · 1 评论 -
BottomNavigationView图标大小和颜色设置
取消导航栏图标着色navigation.setItemIconTintList(null);设置导航栏图标<?xml version="1.0" encoding="UTF-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:d...原创 2018-11-07 15:41:01 · 12130 阅读 · 4 评论 -
Android与iOS内存回收机制区别
iOS的内存回收机制IOS采用引用计数算法回收内存,当对象引用计数为0时,对象会执行反初始化方法并被回收。如果两个对象互相引用对方,就会造成循环强引用,导致内存泄漏。Android内存回收机制Android采用的是根搜索算法回收内存,该算法通过GC Roots作为起点往下搜索,搜索通过的路径称为引用链,当一个对象没有被GC Roots的引用链连接的时候,这个对象就会被回收。即使A和B两个对象...原创 2018-11-07 21:27:57 · 2179 阅读 · 0 评论 -
Android简单实现圆形CheckBox
import android.content.Context;import android.support.v7.widget.AppCompatCheckBox;import android.util.AttributeSet;public class RoundCheckBox extends AppCompatCheckBox { public RoundCheckBox...原创 2019-05-09 17:50:36 · 7010 阅读 · 4 评论 -
在Android Studio中测试代码
File=>New Module=>Java Library添加main函数。public class TestClass { public static void main(String[] args){ System.out.print("hello,world!"); }}点击代码左侧的绿色三角形按钮运行程序。...原创 2019-05-09 00:00:42 · 2166 阅读 · 0 评论 -
去除BottomNavigationView的Item大于3个时的动画效果
public class BottomNavigationViewHelper { @SuppressLint("RestrictedApi") public static void disableShiftMode(BottomNavigationView view) { BottomNavigationMenuView menuView = (BottomNav...原创 2019-04-28 19:00:13 · 258 阅读 · 0 评论