android开发
文章平均质量分 74
二流小宝
这个作者很懒,什么都没留下…
展开
-
android还原代码混淆proguard日志的工具--retrace和SmartRetrace
介绍代码混淆时android反编译的常用方法,android SDK提供了Proguard工具,路径是ANDROID_SDK_HOME/tools/proguard命令行在ANDROID_SDK_HOME/tools/proguard/bin下,而实际的执行代码路径为ANDROID_SDK_HOME/tools/proguard/libapk经过混淆后,在闪退时只要有mapping文件,可以通过retrace工具恢复。SDK提供的retrace命令如下:java -jar retr.原创 2020-08-24 01:15:06 · 4902 阅读 · 0 评论 -
Java多线程篇之List与Collections集合工具类
Collections是一个Java处理集合的强大工具类,可以进排序,对集合进行简单的多线程封装。本章我们将讲解多线程封装接口Collections的List<T> synchronizedList(List<T> list)类是一个封装list对象的方法,简单点就是专门对list的内部方法synchronized,以达到多线程操作。用法如下:...原创 2020-05-04 23:21:05 · 662 阅读 · 0 评论 -
SimpleDateFormat多线程问题
四月份在优化一个功能时候,尝试把Date和SimpleDateFormat封装在class中,然后统一format和parse解析,以此避免重复new对象节省重复申请内存。于是就遇到了一个坑——经常出现莫名其妙的日期,打印出来时候甚至有0650年的日期,唐朝啊,难道计算机给我玩穿越?!,大家都知道一般日期是1970-01-01开始的,要么再早一些事1900-01-01开始的,不会再早...原创 2020-05-04 22:50:46 · 511 阅读 · 0 评论 -
android10解决NetworkInfo废弃替代NetworkInfo isConnected()问题
android10解决NetworkInfo废弃替代NetworkInfo isConnected()问题 最近新项目接近尾声,进入处理疑难杂症阶段;着手处理各种兼容性问题。在监听系统网络广播变化方面遇到了一个问题,在Android 10 (系统sdk版本29)NetworkInfo被标记为Deprecated废弃状态,就是不推荐大家继续使用了。那么我们在Android1...原创 2020-04-08 00:48:57 · 6980 阅读 · 0 评论 -
android各版本对应的SDK level(包括android 10)
android个版本对应的SDK level,最新包括android10.0 版本昵称 系统版本号 sdk level Android10 10 API level 29 Pie 9 API level 28 ...原创 2020-04-07 22:06:27 · 11291 阅读 · 0 评论 -
如何解决logcat TAG过长时Android studio提示错误的问题
如何解决logcat TAG过长时Android studio提示错误的问题 在实际项目中有时候为了类的明明通俗易懂,不得已把类命名过长导致Android studio 提示TAG字符串过长错误,原因是Android旧版本系统对logcat的TAG长度支持最长只有23个字符长度,实际上在Android N(Android 7.0)后才解决这个问题。在低版本的Android系统中l...原创 2019-12-08 00:29:05 · 1814 阅读 · 0 评论 -
观察者模式Java内存管理进阶篇——如何避免内存泄漏
一、什么叫观察者模式 观察者模式是常用的设计模式之一;例如在下载文件时,我们可能会更新图标动画,另外在别的控件显示当前下载进度,下载完成后要对文件进行处理,可能这些处理过程都是不同的业务模块,这些模块的生命周期不一样。简单来说观察者模式可以理解为对多个回调实体对象的管理;二、简单案例下面我们通过一个简单的例子来讲解如何设计观察者模式:本案例是新建一个线程可...原创 2019-03-16 16:27:13 · 950 阅读 · 0 评论 -
如何解决More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations
今天在开发时导入androidx.annotation后出现了错误:More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'导入的build.gradledependencies { // https://mvnrepository.c...原创 2019-03-26 23:38:33 · 11493 阅读 · 2 评论 -
从Android support到Androidx
在2018年的Google IO大会上,Google推出了Androidx库,用于优化Android support library。Android support library是Google推出的用于解决Android系统历史兼容问题的一个第三方依赖库,已经成为Android studio标配,在创建工程师会默认用support library的compat基类,由于support l...原创 2019-05-27 01:08:03 · 2570 阅读 · 6 评论 -
Android NDK开发如何解决logcat日志打印不全
Android NDK开发如何解决logcat日志打印不全 在Android开发过程中可能会遇到超长日志打印问题,如果日志过长如果一次性Log.d输出就会造成logcat终端只打印一部分,后面的全部打印不出来。具体原因没有查到,应该跟输出的缓存大小有关系。 在java层就遇到过,然后通过分段输出解决。最近开发NDK so发现__android_log_...原创 2019-07-03 23:04:36 · 1738 阅读 · 0 评论 -
【笔记】gradle命令行运行任务如何设置代理模式
gradle命令行运行任务如何设置代理模式现在Android开发android studio是官方IDE,是在IDEA社区版的基础上开发的,用gradle构建。但是Android studio有一个缺点,在大陆有防火墙的情况下有时候下载jar包总是超时失败。通常解决方案是需要再命令模式运行gradle任务来下载。有时候需要代理网络,一般都是socks。./gradlew -Dsoc...原创 2019-08-25 20:21:04 · 1379 阅读 · 0 评论 -
jni如何判断两个jobject是否为同一个java对象
jni如何判断两个jobject是否为同一个java对象 jni开发时有时候需要将java对象缓存到native层,方便native层通过jni的反射方法进行回调操作。通常我们会将回调接口callback在native层存放为global reference全局引用,熟悉jni开发的都知道,jni传入到native 层的jobject生命周期仅仅是函数的生命周期,当jni函数返...原创 2019-09-08 22:52:55 · 1853 阅读 · 0 评论 -
【笔记】mac上如何用命令行编译jni
【笔记】mac上如何用命令行编译jni 平常开发jni都是在Android studio自动关联ndk编译的,有时候编写博客为了轻量化需要用命令行模式,不会让项目太重,依赖于IDE。一、linux上如何编译jni现在流行的linux系统主要是Ubuntu centos fedora,这三个系统的内核都是linux内核,编译jni的方法也一样。编译命令如下...原创 2019-09-08 23:26:21 · 406 阅读 · 0 评论 -
java多线程知识点之wait和sleep的区别
java多线程知识点之wait和sleep的区别Sleep vs Waitjava虚拟机支持多线程开发。在多线程开发中我们可以用线程来启动、执行、结束某些程序控制。在多线程同步开发中我们会接触到两个不同的方法——wait 和 sleepwait和sleep都是用来控制线程的执行与等待方法。sleep方法是让当前线程延迟一段时间再执行下一句程序指令,wait不会直接让当前线程延迟控制指令...原创 2019-09-15 23:37:17 · 833 阅读 · 0 评论 -
android ndk javah命令找不到Context或者Handler等sdk的class类
android ndk javah命令找不到Context或者Handler等sdk的class类javah在ndk找不到Android相关的类Android ndk开发的时候遇到了如果引用的class是Android的class,例如Context,Handler, Surface等Android sdk的类,javah就会找不到相关的类。例如package com.pe...原创 2019-10-02 00:45:18 · 788 阅读 · 0 评论 -
InputMethodManager内存泄漏的原因及解决方案
今年开发的一个项目发生了内存泄漏,在六七月份时就观察到即使退出了所有的activity,但是app在后台占用的内存还是没有降下来,保持到75M左右。一直以为是项目使用的代码出现问题,然后继续优化,可是无论怎么优化都达不到合理的内存占用值,最后挤挤牙膏也是降到了60M那样。当时优化了一周效果并不明显。好在60M对于我们应用来说还能够接受,就继续开发迭代功能。最近其他项目迭代开发完成比较...原创 2018-11-27 20:34:06 · 1929 阅读 · 0 评论 -
java非静态内部类如何创建对象实例
java非静态内部类如何创建对象实例:public class A { public class NestA { }}在A的外部创建NestA的方法如下A a = new A();A.NestA nestA = a.new NestA(); 接下来我们通过实际的项目经历给大家讲解一下在外部创建内部非静态类实例的应用场景——单元测试。刚刚结束一个新...原创 2018-11-13 22:37:03 · 4686 阅读 · 0 评论 -
如何解决NDK toolchains出现ABI mips64el-linux-android无法编译问题
Android studio更新gradle wrapper到gradle 4.6以后出现了NDK无法编译错误No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android经过查询,这是因为NDK18放弃了mips架构支持的关系,所以不能够编译。解决方案: 升级an...原创 2018-11-13 01:50:28 · 1960 阅读 · 0 评论 -
android jni调试打印char阵列
在android开发中,用jni有时候需要打印某一个字符串的二进制格式输出,比较友好的输出格式是一个四列,八列,十六列的矩阵格式。原创 2017-08-03 22:39:15 · 3267 阅读 · 0 评论 -
android NDK如何解决Please define the NDK_PROJECT_PATH variable to point to it
从Google android官网下载最新的android ndk安装包android-ndk-r15b,自己配置环境使用ndk-build编译出现如下错误$ ndk-build Android NDK: Could not find application project directory ! Android NDK: Please define the NDK_PROJECT_PATH variable to point to it. /home/用户路径/android-ndk-原创 2017-07-27 23:27:04 · 22347 阅读 · 1 评论 -
android应用调试之如何保存logcat日志到本地
android.permission.READ_LOGS权限允许应用程序通过程序运行logcat命令,并读取日志结果。我们可以使用该权限把程序的logcat信息记录到本地文件,方便调试。在android4.1(SDK < 16)应用可以读取其他进程的logcat信息,谷歌后来考虑到安全问题(防止恶意程序监控其他应用),升级了READ_LOGS权限,只有系统签名的应用(或者进程)才能够获取所有进程的logcat信息,普通应用只能够读取自己进程的logcat信息。原创 2017-07-11 09:47:13 · 9057 阅读 · 1 评论 -
如何解决NullPointerException in android.view.GLES20RecordingCanvas
一、如何解决NullPointerException in android.view.GLES20RecordingCanvas在发布版本的最后一轮过设备时,在某老旧设备上出现了空指针异常java.lang.NullPointerExceptionat android.view.GLES20RecordingCanvas.drawPatch(GLES20RecordingCanvas.原创 2017-06-14 16:45:32 · 2160 阅读 · 0 评论 -
【笔记】Android.mk编译apk不生成ota包或者odex包
Android.mk编译apk不生成ota包或者odex包,提高开发效率原创 2017-06-14 16:07:52 · 4619 阅读 · 0 评论 -
【笔记】android 系统常用user id列表
android有些系统常用用户,例如root, system, shell, wifi,radio的用户ID都是在代码里提前定义好了。例如system的uid是1000include/private/android_filesystem_config.h/* * Copyright (C) 2007 The Android Open Source Project * *原创 2017-06-05 09:48:59 · 9123 阅读 · 0 评论 -
androidru使用adb启动activity和monkeyrunner启动activity
平常开发的时候我们经常遇到要开发一个新的界面,没有其他程序入口启动这个activity,几年前刚做android开发那会遇到这种情况就是直接把AndroidManifest.xml的activity主要入口更改为正在开发的入口,但是有个问题,有时候不小心把AndroidManifest.xml提交,导致同事更新代码后抓狂。第一反应就是adb启动,在很长一点时间里我一直用adb方式启动activit原创 2017-05-23 23:25:01 · 3497 阅读 · 0 评论 -
[笔记]如何解决Your project contains C++ files but it is not using a supported native build system
最近因为项目需要下载Android终端模拟器(Android-Terminal-Emulator)源码进行调试编译,编译过程中出现报错Error:Execution failed for task ':libtermexec:compileReleaseNdk'.> Error: Your project contains C++ files but it is not using a原创 2017-05-08 22:06:57 · 25884 阅读 · 12 评论 -
java.lang.UnsupportedOperationException WebView is not allowed in privileged processes
最近做一个项目,项目调试基础库的一个调试工具展示设备信息页面使用WebView。有一个应用集成调试基础库展示内容时出现java.lang.UnsupportedOperationException: For security reasons, WebView is not allowed in privileged processes因为应用是系统级别的,在AndroidManif原创 2017-04-19 10:05:11 · 8207 阅读 · 1 评论 -
【笔记】android应用签名
一、使用pem签名java –jar signapk.jar [-w] publickey.x509[.pem] privatekey.pk8 input.jar output.jar-w 是指对ROM签名时需使用的参数publickey.x509[.pem] 是公钥文件privatekey.pk8 是指 私钥文件input.jar 要签名的apk或者romoutput.j原创 2017-03-26 15:04:02 · 698 阅读 · 0 评论 -
【笔记】Java如何判断是IDE启动还是jar启动
在java开发中,有些资源我们打包在jar的资源文件里面,但是在IDE调试时getResources()并不能获取到资源文件,为了方便调试。我们可以通过判断当前运行的启动方式是IDE 调用class还是集成在jar库中。实现方式public static boolean isStartupFromJar(Class clazz) { File file = new File(cla原创 2017-10-31 23:11:47 · 2946 阅读 · 0 评论 -
android studio技巧之设置monitor窗口模式查看logcat
在windows下做Android开发最为麻烦就是看logcat,巨硬的自带cmd窗口太难用,而且还存在打印utf-8乱码问题。幸好Android studio的monitor能够看logcat,严格上将monitor是Android SDK的tools工具集,只是Android studio集成了而已,如果想边开发边看logcat,monitor在studio的小窗口显然非常不方便...原创 2018-03-27 23:52:11 · 5309 阅读 · 0 评论 -
实战 团队项目如何把控log日志输出
logcat日志是Android开发调试的必备手段,由于开发人员水平不均关系,遇到滥用logcat的项目也不在少数。相信大家在开发调试中遇到不少应用即使是发布版本也有超级多的log信息,非常烦人,用处也不大,甚至自己参与的项目内部不同模块之间存在部分模块滥用logcat的情况。对于logcat信息的理解与开发人员的水平和开发观念有非常大关系,本人认为滥用logcat是不好的开发习惯...原创 2018-05-06 21:53:52 · 1003 阅读 · 0 评论 -
android studio和IDE如何自定义module路径
在android或者java项目开发中,有时候需要直接引用其他公共module的代码。这是由有两种解决方案:一、将公共module打包成jar或者aar包然后提供给目标项目使用;二、直接应用该module。解决方案一的优势比较明显,可以创建本地的maven仓库,然后通过dependency进行引用,既解决了库的版本更新问题,也解决了使用公共代码的繁琐问题。缺点:每次修改代码都必须重新打包上传,...原创 2018-11-12 23:49:19 · 2315 阅读 · 0 评论 -
android如何获取系统开机时间
开发过程中有时候需要获取android开机时间,这个是两年前遇到的一个问题,在此总结一下。方法一、通过系统SystemClock接口运算android.os.SystemClock的elapsedRealtimeNanos返回从系统开机现在的经历过的时间(单位:纳秒),包括系统休眠待机时间。所以我们可以使用当前时间减去系统开机到现在的时间计算出系统的启动时间// 返回开机时间,单位微...原创 2017-08-03 22:59:33 · 28892 阅读 · 8 评论