![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
android
安卓技术心得
Bert丶seven
专注于大前端开发,熟悉移动端、前端各项技术栈
展开
-
Android 自有App内部跳转到微信小程序的方法
3)com.android.tools.build:gradle 需要升级至 3.6.0 版本,建议升级至最新的 3.6.4 版本。1)Android Studio 需要升级至 3.3 及以上,建议升级至 4.0 及以上版本;2)Android SDK Build-Tools 需要升级至 30 及以上版本;2.需打包已签名成功的apk验证,否则调用api时会提示校验失败。以上完成,即可通过App跳转到指定的微信小程序了。,android11如果不申明,可能使用时报错。WXEntryActivity中。原创 2022-10-10 17:59:22 · 4777 阅读 · 0 评论 -
Android全局悬浮窗Dialog
1.AndroidManifest.xml中申请如下权限: 2.从Android6.0开始,不仅需要上述权限,还需要动态申请此权限,用户手动开启才行。3.当在使用中出现权限拒绝,类型是2003时,完整代码如下:原创 2022-10-09 16:12:32 · 1275 阅读 · 0 评论 -
Jetpack DataBinding使用--Jetpack系列
DataBinding是一种支持库,借助该库,可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。布局通常是使用调用界面框架方法的代码在 Activity 中定义的。原创 2022-06-28 14:51:17 · 659 阅读 · 0 评论 -
Jetpack LiveData使用--Jetpack系列
LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。如果观察者(由 Observer 类表示)的生命周期处于 STARTED 或 RESUMED 状态,则 LiveData 会认为该观察者处于活跃状态。LiveData 只会将更新通知给活跃的观察者。为观察 LiveData 对象而注册的非活跃观察者不会收到更改通知。......原创 2022-06-27 16:19:06 · 109 阅读 · 0 评论 -
Jetpack Lifecycle使用--Jetpack系列
Jetpack Lifecycle原创 2022-06-20 15:33:10 · 182 阅读 · 0 评论 -
AIDL跨进程示例
1.创建服务端APP项目main包下创建aidl文件夹,new-->aidl 创建如IMyAidlInterface.aidl文件举例:// IMyAidlInterface.aidlpackage com.ktbase.app;interface IMyAidlInterface { String getName(); void setName(String name);}AS rebuild之后,在build文件夹中可以看到编译成功的java文件,服务原创 2022-03-24 14:11:16 · 125 阅读 · 0 评论 -
Android 获取Keystore的MD5 SHA1 SHA256等信息
1、使用keytool.exe 这个工具获取,这个工具在jdk的bin目录下面.例如我机器的目录是C:\Users\xxx\jdk1.8.0_171\bin。那么打开cmd 进入到该目录,也可以将这个目录配置到环境变量Path下面,这样就可以直接keytool命令。2、keytool -list -v -keystore D:\Android\keystore\xxx.keystore D:\Android\keystore\xxx.keystore 就是你的keystore的文件路径。...原创 2021-03-29 11:14:35 · 676 阅读 · 0 评论 -
Handler中Looper死循环为什么不会导致应用卡死?
先来列举一下一般出现ANR的情况:1.键盘输入事件、触摸无响应5s;2.Receiver广播接收器10s超时无响应;3.Service服务20s超时无响应;...再简单介绍一下Handler会在应用启动之后,在ActivityThread的main 方法中启动:public static void main(String[] args) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMai原创 2021-01-31 16:20:06 · 512 阅读 · 0 评论 -
android蓝牙频繁断、连之后,无法发现蓝牙服务的解决方案
android蓝牙频繁断、连之后,某次在发现蓝牙服务的回调结果中,特征值服务列表为Null或者长度为0,BluetoothGattCallback gattCallback = new BluetoothGattCallback() { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status,int newState) { if (status ==...原创 2020-12-28 19:39:18 · 5462 阅读 · 1 评论 -
android studio打包aar遇到的坑
先简单介绍一下前景,由于我们的sdk内部实现不想暴露出来,所以考虑到打成jar包的形式1.android sdk 一般分为两种:.jar(仅包含编译生成的class文件),.aar(包含jar和资源文件),这个根据个人的项目需求可以决定使用哪一种;2.如果我们的sdk内部不包括任何三方库,那么直接在android studio的gradle 自己module的Task-->build-->assemble 执行即可.。然后就可以在build文件夹中的outputs文件中原创 2020-12-21 15:57:56 · 2228 阅读 · 0 评论 -
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.vick.myapp/com.vick.mya
项目之前运行正常,但是当引入一些三方库时,在sync同步时,会报如下错误:java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.vick.myapp/com.vick.myapp.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.vick.myapp.MainActivity" on path: DexPathLis原创 2020-10-28 14:09:07 · 419 阅读 · 0 评论 -
apktool反编译apk,并重新打包
反编译的工具有很多,本文暂时只介绍apktool:1.先下载apktool,下载地址: https://ibotpeaches.github.io/Apktool/install/ (我当前下载的版本是apktool_2.4.1.jar);2.修改文件名为"apktool.jar";3.执行java -jar apktool.jar 如果出现版本号,说明运行成功;4.将需要反编译的test.apk 文件放在和apktool.jar 同一层级;5.cd到apktool.jar所在..原创 2020-10-27 17:37:54 · 4987 阅读 · 0 评论 -
Unable to create call adapter for rx.Observable<java.lang.String> retrofit2+rxjava3配置运行报错
当retrofit2与rxjava3连用时(截止发博客时间,很多搜索结果还是retrofit2+rxjava2,而retrofit2+rxjava3的还是比较少的,所以特此记录一下),按照常规的写法,在运行时会报错:Unable to create call adapter for rx.Observable<java.lang.String>先看一下发生错误的配置是:dependencies { implementation fileTree(dir: "libs", incl原创 2020-10-26 16:43:45 · 949 阅读 · 1 评论 -
Invoke-customs are only supported starting with Android O (--min-api 26)
项目之前运行正常,但是当引入一些三方库时,在sync同步时,会报如下错误:Invoke-customs are only supported starting with Android O (--min-api 26)这是由于你引入的库中代码包含了Java8中的新特性,比如使用了Lambda 表达式、Stream API、默认方法(默认方法就是一个在接口里面有了一个实现的方法)等;所以我们需要在build.gradle(app module层级,不是project层级)文件中的 android 节点下添原创 2020-10-23 10:49:43 · 2814 阅读 · 0 评论 -
webview内存泄漏解决方案
1.运行app,先用AS自带的Profiler分析我们的WebViewActivity,频繁进出,看内存占用情况,会发现内存在不断的上升,而且退出当前页面内存只是下降一点,一直持续下去,肯定会OOM;2.引入leakcanary内存泄漏分析工具由于只运行debug模式来检测,所以只需在build.gradle中引入:debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.1'然后在自定义的Application的O原创 2020-09-29 13:38:01 · 2912 阅读 · 0 评论 -
Android ClassLoader源码浅析
从源码的角度(基于Android9.0,API 28)记录一下Android类加载的机制,Android中的ClassLoader主要分为:BootClassLoader、BaseDexClassLoader、PathClassLoader、DexClassLoader、InMemoryDexClassLoader。特点:双亲委托机制(留在下一篇介绍,本篇只介绍几个ClassLoader及常见的方法)1.BootClassLoader:用于加载Android Framework层class文件Bo.原创 2020-09-17 14:36:21 · 342 阅读 · 0 评论 -
Android Studio无法查看@hide 源码
解决方法:通过在线查看Android各个版本的源码,提供两个解决方法(通过download三方的SDK sources文件去替换本地对应的source文件中具体的android-x版本不介绍了):1.https://www.androidos.net.cn/sourcecode 2.http://androidxref.com/...原创 2020-09-10 17:33:07 · 324 阅读 · 0 评论 -
No such property: variantConfiguration for class: com.android.build.gradle.internal.variant.Applicat
集成bugly热修复的时候,在app module的“build.gradle”文件中添加:// 依赖插件脚本apply from: 'tinker-support.gradle'sync之后会报错No such property: variantConfiguration for class: com.android.build.gradle.internal.variant.ApplicationVariantData原因:是由于我的AS 项目根目录下用的gradle版本是de.原创 2020-08-26 15:02:23 · 9127 阅读 · 6 评论 -
gradle常用命令
gradle常用命令:gradle --help 帮助命令gradle -v 获取gradle版本号gradle clean 清空所有编译、打包生成的文件(即:清空build目录)gradle build 检查依赖并编译打包gradle assembleDebug 编译并打Debug包gradle assemb...原创 2020-07-31 09:35:26 · 651 阅读 · 0 评论 -
Jenkins下载、安装、打包APK
Jenkins下载、安装、打包APK1.Jenkins下载:官方下载地址:https://jenkins.io/download/(需翻墙)镜像下载地址: http://mirrors.jenkins-ci.org/ (国内使用)根据自己的需要去下载对应的Jenkins版本并安装,安装配置我们就选择其推荐的配置,一步步走下去即可。其他需要安装的环境:JDK、Gradle、AndroidSdk、SVN、Git,自行百度,一般开发人员的这些配置都是ok的。2. 创建第一个管理员用户输入自己的原创 2020-07-30 18:06:30 · 1002 阅读 · 0 评论 -
初始化SavedStateViewModelFactory SavedStateRegistryOwner运行报错
implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.0-alpha03'使用这个版本的SavedStateViewModelFactory 按照Jetpack官方文档去初始化: MyViewModel myViewModel = new ViewModelProvider(this,new SavedStateViewModelFactory(getApplication(),this)).get(MyV...原创 2020-05-29 17:26:52 · 2448 阅读 · 2 评论 -
升级到android studio 3.6.1遇到Unsupported Modules Detected的问题的解决方法
升级到android studio 3.6.1遇到Unsupported Modules Detected的问题的解决方法:现象就是每次打开项目时,都会提示如下警告:Unsupported Modules Detected: Compilation is not supported for following modules:android-lottie-react-native, ...原创 2020-04-02 13:58:37 · 418 阅读 · 0 评论 -
react-native打包android apk,资源编译报错的问题
react-native在打包apk时,可能会遇到图片资源编译报错的情况,如下:android\app\build\intermediates\res\merged\release\drawable-hdpi-v4\node_modules_reactnavigationstack_dist_views_assets_backicon.png:error: uncompiled PNG fi...原创 2019-12-02 17:01:11 · 483 阅读 · 0 评论 -
android 蓝牙Beacon开发
最近在做android 蓝牙Beacon开发,记录一下一些个人心得:1.蓝牙Beacon主要的应用场景:(1)用于室内定导航,如大型超市、博物馆、机场、校园等;(2)信息推送(商场活动、景区游览、博物馆展品信息);(3)和微信摇一摇结合,摇互动、摇签到、摇导航等。2.蓝牙beacon广播包广播出来的信息包括4个方面:(1)蓝牙beacon的MAC地址(广播包来自于哪一个 MAC 地址的...原创 2019-11-25 17:15:32 · 1990 阅读 · 0 评论 -
android 蓝牙BluetoothGattCallback用法
上一篇文章中说到了关于蓝牙连接的一些问题,今天主要给大家介绍一下,关于BluetoothGattCallback中的一些常用到的回调方法。其实还是强烈建议大家看一看BluetoothGattCallback的源码,它里面会有更详细的介绍;这里我还是不建议初学者去直接使用一些三方库,因为首先自己要对一些原理性的东西有了一定的了解之后,再去尝试使用框架,才能去发现三方框架的一些优点,这里说一下我以前遇...原创 2019-08-12 23:58:17 · 3149 阅读 · 0 评论 -
android蓝牙连接133问题的解决办法---(连接篇)
上一篇文章介绍了“蓝牙扫描”,今天来说一下android蓝牙连接过程中133的问题:我们经常在网上看到一些答案说需要释放gatt资源,这种方式可以在一定程度上减少出现133的概率。个人发现的一个规律是:一般出现蓝牙连接133的问题,大多是android低配机型(虽然上层调用了gatt.close()方法,但手机底层蓝牙服务可能仍与设备保持连接状态,其所占用蓝牙资源不能及时释放,所以导致了我们连...原创 2019-08-10 00:35:14 · 11470 阅读 · 4 评论 -
关于Android蓝牙开发的一些心得---(扫描篇)
以下是个人在开发蓝牙的过程中遇到的一些问题的总结,也希望能够帮助到刚开发android 蓝牙的程序猿,能够让你们少踩一些坑。1.在AndroidManifest.xml中声明如下权限:<uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="...原创 2019-08-08 23:11:18 · 996 阅读 · 0 评论