- 博客(85)
- 资源 (1)
- 收藏
- 关注
原创 android查看so路径
之前遇到过一个问题,apk中有一个so无法确定其路径,是由哪个依赖引入的,网上查询一番后这里记录一下。build.gradle中添加如下任务。查看编译输出日志,就能够看到so是从哪个依赖路径添加的了。
2024-08-13 11:05:34
429
原创 react-native android 环境搭建
第一次运行会去下载很多react包,比如hermes-android-0.74.1-debug.aar等,这些包如果没有外网环境,下载速度超慢,编译进程会始终卡住。react涉及到很多的依赖下载,gradle和react相关的,第一次安装环境时有外网环境会快速很多。java版本:Java11。
2024-05-18 19:19:31
681
原创 android 反编译工具使用
接下来就是查看jar文件的内容了,可视化工具也有不少,我使用的是Bytecode Viewer。,下载后是一个jar文件,如果我们的java环境配置正常的话,可以直接双击打开它。准备我们要反编译的apk,通过如下命令将apk反编译成jar文件。记录一下dex2jar和ByteCode viewer的使用。,下载完成后解压到特定的目录中,然后将其配置到环境变量中。将上面编译得到的jar文件拖放到窗口中即可打开查看。
2024-01-16 22:05:32
1347
原创 android gradle编译问题记录
有时候即便配置了国内镜像下载gradle也是慢的一批,可以手动下载gradle文件配置到项目中,比如我下载了一个新项目,它的gradle版本是gradle-4.1-all,进入项目时它会开始下载gradle,此时gradle目录中会创建gradle-4.1-all目录,我的完整路径是。这是gradle版本和AGP版本不匹配造成的,修改gradle版本小一点或大一点进行尝试,主要看AGP进行调整。,下载完成后将gradle-4.1-all.zip文件直接拷贝到上面文件夹中,不要解压,重新打开项目即可。
2024-01-13 11:43:10
1592
原创 android常用方法
在/system/app 或者 /system/priv-app目录下的应用。在网上看到一篇总结的非常全面的工具类。包括状态栏和导航栏高度。
2024-01-08 00:08:33
674
原创 build.gradle记录
当我们想要动态的修改AndroidManifest.xml文件中一些熟悉时,可以通过manifestPlaceholders占位符来完成,首先在AndroidManifest.xml文件中预先设置一些占位符,例如。在build.gradle文件中就可以通过manifestPlaceholders来给这些变量赋值。
2023-12-31 22:24:06
472
原创 flutter出现entrypoint isn‘t within the current project
更新了android studio版本,打开一个老的flutter项目时,无法运行,打开configuration配置,提示错误。
2023-10-08 18:39:55
2661
原创 flutter产物以aar形式嵌入android原生工程
以前做的项目中,flutter都是作为module嵌入原生工程中,新公司项目却是以aar形式嵌入android工程,这种优点是原生工程不必配置flutter环境也能跑了,这里记录一下简单步骤。
2023-09-16 00:08:39
1465
1
原创 【调试手机web网页】
手机app中嵌入了某些web网页,我们有时候需要调试一下某些注册的js回调函数是否生效,就像电脑上打开控制台一样方便。2、点击想要调试的网页下面蓝色的inspect,会弹出一个新的页面,这里就能看到手机端的页面和控制台了。1、电脑上Google浏览器打开chrome://inspect/#devices,能够看到我们的设备。2、电脑连接VPN可以访问Google(自己找个翻墙软件)必须能访问Google,否则弹出的页面是404。1、手机打开开发者模式,连接到电脑上。3、在控制台输入要执行的命令,比如。
2023-09-05 11:37:41
517
原创 多线程顺序打印
这个方法我们使用ReentrantLock+Condition来实现多线程同步,每个线程在执行之前,需要先判断一下当前变量是否是自己要打印的那个,不是的话就等待,否则就打印变量,之后再通知下一个线程执行。最近面试遇到一个要求多线程顺序打印的题目,作为一个两年的java开发居然写错了,当时觉得丢脸极了,想死在当场,下面就总结一些集中写法。第一种最简单的,我们不用锁,通过循环的方式(CAS)算法来达到加锁的目的。这种巧妙的使用while循环达到加锁的目的,不需要进行同步操作。
2023-06-07 23:17:07
769
3
原创 移动端protobuf使用
java通过生成的类提供的静态方法fromBuffer(data)就可以将二进制数据转化为具体的对象了,dart可以直接使用生成的类。–dart_out 是生成文件目录,–proto_path是源文件目录,生成的是.dart文件,如果要生成java文件,用。打开生成文件,发现它报错,这是因为还没有添加protobuf依赖,在pubspec.yaml中添加。搭建开发环境就不多说了,网上资料很多,配置好环境变量后flutter命令和dart命令能用就行。4、根据pb文件生成dart文件。
2023-05-11 14:21:40
680
1
原创 FlatButton替换成TextButton
原来flutter项目中到处使用了FlatButton,升级到Flutter 3后,FlatButton就不存在了,需要进行替换,一个个换显然很麻烦,所以自己封装了一个。这里有几个需要非常注意到地方。
2023-05-04 13:26:30
425
原创 android获取当前主题
最近遇到一个bug,android8.0的手机,半透明的activity如果设置了旋转,就会发生崩溃。但是为了允许平板横屏,手机竖屏,又必须设置旋转方向,所以就需要在代码中获取当前主题,并判断它是不是透明的主题,代码如下。我项目中只使用了三种透明主题,可根据自己项目实际情况修改。
2023-03-27 20:00:43
833
原创 Tablayout tab没有均分宽度显示
使用TabLayout时,一般我们不用设置tab的排列方式,默认都是均分宽度居中显示的,但是今天遇到一个奇怪的问题,在鸿蒙的平板上,两个tab紧紧的挨在一起在中间。但是还是不行,只能一个属性一个属性的尝试,最后发现再加上app:tabMaxWidth="0dp"就可以了。但是在手机上又是正常的,给其设置了。
2023-02-28 11:37:55
631
2
原创 android判断Activity是否存在
遇到一个需求是通过QQ分享文件,要启动QQ的这个界面,com.tencent.mobileqq.activity.JumpActivity,但是需要先判断这个Activity是否存在,有两种方法,首先创建一个Intent。看一些文章两种方法都可以,但是测试发现方法一未安装QQ时会抛出异常,程序崩溃,所以只能用第二种。
2023-01-01 18:29:01
1152
原创 在Column中嵌入横向滚动的ListView
但是高度指定的话毕竟不利于拓展,我们希望能根据item自动计算出高度,借鉴到一个比较好的思路是利用Stack布局,它会自动根据除Positioned组件之外的组件的大小来计算出自身的大小,于是我们可以提供一个item作为原型给stack计算大小,将ListView放在Position中显示。
2022-11-12 15:04:11
411
原创 图片的高效加载
前言最近写了一个相册应用,发现自己的界面卡的要死,有时候还会崩掉,后来发现是自己加载图片的时候没有处理,导致OOM了,下面就记录一下图片加载和缩放。Bitmap构建在Android程序中,无论图片是jpg 还是png, 都是表示为一个Bitmap对象, 我们一般是通过BitmapFactory来构建,它主要有四种常用方法BitmapFactory.decodeFile(...)BitmapFactory.decodeResource(...)BitmapFactory.decodeStream(
2022-05-15 18:02:44
264
原创 android应用层aidl的简单使用
aidl的Android提供的方便我们进行应用间通信的工具,其全称是Android Interface define language,本文记录一下如何在两个应用之间通过aidl进行通信。和普通的接口文件相比有如下的一些特性只能定义方法,不能定义常量支持8中基本类型支持String,CharSequence支持List,确切的说只支持ArrayList支持Map(HashMap)支持Parcelable对象1、接口定义在项目中main目录下,创建一个aidl文件夹,再创建aidl文件。
2022-05-08 19:30:15
1033
原创 开发遇到问题记录
1、aar包导入项目中网上很多教程都是现将arr包导入到libs目录中,在app目录下的build.grade文件中添加repositories { flatDir { dirs 'libs' }}但是我尝试了之后还是会编译报错build was configured to prefer settings repositories over project repositories but repository ‘flatdir’ was added by buil
2022-05-06 10:31:54
4177
原创 Activity与Fragment之间通信的多种方式
前言本文主要介绍Activity与Fragment之间通信,以及同属于一个Activity的Fragment之间的通信。主要的方式有1、通过
2022-04-12 23:56:55
7691
1
原创 android overlay机制实践
前言最近在做launcher时有一个需求是通过overlay机制实现替换主题,中间遇到了不少问题,这里记录一下自己以后能用到,也希望能帮助有需要的同学。我使用的是android11系统,参考官方文档https://source.android.google.cn/devices/architecture/rros?hl=zh-cn概述android overlay是一种资源的动态替换机制,它的工作原理是将叠加层软件包中定义的资源映射到目标软件包中定义的资源。当应用尝试解析目标软件包中资源的值时,系
2022-04-07 14:55:26
6984
1
原创 couldn‘t find “libijkffmpeg.so“
今天在学习ijkplayer的使用,因为要支持AVI等视频格式,所以需要先编译,我没有经过编译,直接下载了别人已经编译好的so库,地址在这里https://github.com/xiong-it/compiled_ijkplayer4android由于grade文件配置不正确,我出现了错误couldn’t find “libijkffmpeg.so”, 找了好久错误终于配置正确了,这里记录一下。1、将so文件复制到工程中,目录结构如下和src在同一个目录就行了。2、在grade文件中导入so库
2022-03-14 14:59:27
3915
原创 TabLayout+ViewPager2的简单使用
学习之前我们先看一下显示的效果这里显示的底部导航栏,如果想实现的顶部导航栏,只需要调整一下TabLayout的位置即可。1、导入依赖使用ViewPager2之前需要先导入依赖,这里的依赖可能不是最新的,可以自己查找最新的版本。TabLayout不需要导入。implementation "androidx.viewpager2:viewpager2:1.0.0"2、布局<androidx.viewpager2.widget.ViewPager2 android:layout_wi
2022-02-22 00:30:15
5792
原创 android 自定义view
本文我们将自定义一个View,来实现一个时钟,先看一下效果图。这里只是截取了一个静态图,实际上可以秒针是运动的。至于其他的更好看的效果在这基础上可以自己添加。1、属性设定在res/values 目录下新建立一个文件attrs.xml, 我们将在里面定义时钟所需要的属性,这里我只是定义了4个属性,分别是时、分、秒、背景颜色。<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable n
2022-02-11 18:12:23
1434
原创 Media Session框架的简单介绍
1、介绍Media Session框架是google在android5之后引入的一个音乐播放框架,用来解决音乐界面和服务之间的通信问题,特别注意的是,我们现在都是在比较高的版本上开发,因此要用比较高的兼容包,一般都以Compat结尾。Media Session框架中有四个常用的成员类,它们是整个流程控制的核心,下面我们一一介绍一下。MediaBrowser媒体浏览器,用来连接媒体服务MediaBrowserService和订阅数据,在注册的回调接口中我们就可以获取到Service的连接状态、获取
2022-01-20 21:02:49
8960
logisim271.zip
2019-10-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人