
android 基础知识
文章平均质量分 82
android 基础知识梳理
灯塔@kuaidao
giao~ ,一起奥力给!
展开
-
Android中 Applicaton Context,Service context, Activity context 的区别。
在Activity中使用 View.inflate(context,r.layout.xxx)方法时,如果使用Application Context,则获得的View将不会受到Activity的生命周期的影响,即使Activity已经被销毁,View仍然存在。ContextWrapper是Context的派生类,它实现了Context类的接口。mBase本身也是Context对象,其类型是ContextImpl,因此,ContextImpl类才是Context类真正的实现。,但是它们之间有一些区别。原创 2023-11-08 17:15:03 · 373 阅读 · 0 评论 -
App违反Google数据安全政策,解决方案
google隐私政策阶段性会进行更新,时长关注隐私政策变化,避免app被强制下架,影响后续运营工作。原创 2023-05-05 15:48:16 · 1801 阅读 · 1 评论 -
Android Execution failed for task ‘:app:mergeDebugJavaResource
错误提示原因:App项目依赖的三方AAR,而AAR中编译后的字节码class.jar包含相同的kotlin-stdlib-1.7.10.jar文件,导致资源merge出现异常。官方给出了。原创 2023-03-08 14:26:39 · 2217 阅读 · 0 评论 -
解决 Android WebView 多进程导致App崩溃
Android WebView MultiProcess导致App崩溃。原创 2022-11-29 22:19:16 · 7621 阅读 · 1 评论 -
Android Gradle发布Artifact (aar包)到Maven仓库
gradle升级之后,早期gradle发布artifact 到maven的脚本提示部分引用找不到,通过gradle 官方给的demo梳理出来 gradle 7.2 以上使用的发布脚本。publish.gradle 文件。原创 2022-11-14 08:56:34 · 2821 阅读 · 0 评论 -
Android Gradle 插件版本说明
Android studio 构建基于Gradle,而Android gradle plugins 提供几个构建Android的功能,使用Gradle脚本,或者其它被支持的脚本开发。包含Kotlin Dsl脚本。所以在更新Android studio IDE时,会提示让升级AGP插件。升级完成后,会提示升级的Kotlin插件。捋清楚它们的依赖关系,遇到不兼容问题可以快速定位Android Gradle 插件版本说明。原创 2022-11-09 20:44:32 · 1612 阅读 · 0 评论 -
Google Game Service 接入指南
Google Game Service接入指南原创 2022-09-28 20:42:40 · 4282 阅读 · 1 评论 -
Android 用户如何将Room根据不同账户动态分库方案
开发中需要根据不同用户,创建不同名称数据库。登录用户关联自己名称命名的数据库,达到分库目的。也有基于同一个数据库进行分表的操作。这里仅介绍使用Android Room数据库,如何分库和关联已经存在的数据库。GreenDao数据库同样可以进行动态分库,原理一样。官方Room链接Room 持久性库在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite的强大功能的同时,能够流畅地访问数据库。针对 SQL 查询的编译时验证。可最大限度减少重复和容易出错的样板代码的方便注解。......原创 2022-08-31 11:46:13 · 2201 阅读 · 0 评论 -
Android Jetpack 之 DataStore 初探
DataStore是google官方提供的,用于替换SharedPreferences来对简单数据进行存储的解决方案。对于SharedPreferences存在的缺陷进行修补,并且可以和Kotlin协程与Flow结合。DataStore提供对基本类型和对象类型进行分开存储,分别使用 PreferencesDataStore,ProtoDataStore.通过名字很容区分 PreferencesDataStore用来存储基本类型String、int、long、double、float、boolean、set原创 2022-06-07 16:58:52 · 632 阅读 · 0 评论 -
类、接口、函数
前言各种专业技术名词不断增加,学好编程首先要了解技术术语,然后才可以对技术行业整体有一个大概判断。学习中对某个知识点经常使用但是看官方文档时还是很容易混淆,专业术语与自己已经掌握的知识对应关系。blog在于罗列 java 和 kotlin ,类、接口、函数 种类。函数Lambda 是一个对象。Lambda 表达式是一个函数接口对象lambda表达式 :block:String.()->Unitkotlin inline 关键字每次调用高阶函数,会创建一个匿名内部类。 函数设置成Inl原创 2022-05-22 11:16:57 · 220 阅读 · 0 评论 -
关于 java.lang.IllegalStateException: Fragment already added 解决方式
前言 最近发现项目中出现这个bug,很频繁。网上查找了几种解决方案,效果不是太理想,现就将使用修改方案一一列出来背景 项目底部四个tab页面切换导致,tab切换方案是,将四个Fragment添加到一个Activity中进行管理动态hidden(),show(),add()。异常:java.lang.IllegalStateException: Fragment already added: In原创 2017-02-15 14:47:21 · 49531 阅读 · 19 评论 -
Google play 应用签名密钥证书,上传签名证书区别
前言2021年8月之前未要求通过google play分发的应用必须使用AAB格式。之后要求必须适应AAB格式进行签名后才可以在google play上进行分发。早期直接上传签好名字的apk到google play。分发下来apk签名与上传到google play的一致。下面分别是加入google 签名计划的签名和apk签名:google签名计划使用的jks为 google.jks sha1 33:C2:07:B8:6E:47:31:43:D0:AB:24:1A:12:1A:5A:8B:C4原创 2022-03-23 11:22:10 · 11798 阅读 · 1 评论 -
Android LayoutParam,MarginLayoutParams
前言开发中经常遇到一个场景,动态给View设置margin 边距,针对容器类布局(ViewGroup及子类)比较直观。对于非容器类进行margin设置需要按照规则进行设置,否则很容造成类型转换异常 java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams为什么给父布局(RelativeLayo原创 2022-02-15 16:43:40 · 1895 阅读 · 0 评论 -
google 、facebook登录实现方案
1.全局弹窗 google、facebook 登录实现由于google,facebook登录成功或者失败的回调需要有Activity来承载(登录sdk要求) 。实现全局Dialog登录弹窗的方案采用:一个透明TransportActivity + 一个底部弹出FragmentDialog组成由于 TransportActivity与FragmentDialog不在同一个module中,为了更好的解耦引入ARouterinterface TouristDelegate : IProvider {原创 2022-01-24 11:10:24 · 2188 阅读 · 0 评论 -
如何查看v1 v2 v3,v4 签名包的签名信息
apk签名方案-v1方案:基于JAR签名。-v2方案:APK签名方案v2,在Android7.0引入。-v3方案:APK签名方案v3,在Android9.0引入。原创 2021-11-24 16:36:40 · 6173 阅读 · 0 评论 -
webView onReceivedSslE异常警告
引用地址: https://www.itranslater.com/qa/details/2582332368291890176转载 2021-11-22 13:42:58 · 319 阅读 · 0 评论 -
App出海 对接 Google、Facebook旗下产品梳理
前言国内App出海,需要接入各种海外三方平台的分享,登录等。简单整理做一个备忘录。对应的应用图标对应的包名平台应用包名facebookInstagramcom.instagram.android-Messengercom.facebook.orcaGoogleGoogle Playcom.android.vending-Google Console--Firebase-TiktokTiktokcom.zhiliaoapp原创 2021-10-16 12:35:49 · 1716 阅读 · 0 评论 -
Android sdk 23 apk size 增加
最近升级min_sdk从21 ->25,在生成apk后,包体积比原包增加了70MB.使用Android studio 自带分析工具进行分析。发现某一个so文件在sdk 21 时,为40Mb大小。在sdk 25大小为104MB。想着是so压缩问题,通知游戏研发人员进行查找不得而终。使用BeyondCompare 4进行解包比对二进制查看变更。仅仅发现dex文件增加10Mb左右。和使用Android studio分析工具比对的100Mb差的比较多。分别解压sdk 21 的apk和sdk 25 ap原创 2021-09-17 16:55:04 · 751 阅读 · 0 评论 -
Failed to open dex files from /data/app/xxx.xxx.xxx/base.apk , dex format 0 3 9
--------- beginning of crash2021-09-07 17:48:10.877 25905-25905/xxx.xxx.xxx E/AndroidRuntime: FATAL EXCEPTION: main Process: xxx.xxx.xxx, PID: 25905 java.lang.RuntimeException: Unable to instantiate application xxx.xxx.xxx.base.BaseApplication: ..原创 2021-09-08 16:16:23 · 3577 阅读 · 0 评论 -
Android recycleView滑动与bottomsheet 冲突解决
/** * Determines the top offset of the BottomSheet in the {@link #STATE_EXPANDED} state when * fitsToContent is false. The default value is 0, which results in the sheet matching the * parent's top.原创 2021-08-07 16:09:29 · 4488 阅读 · 0 评论 -
AndroidStudio之Theme、colorPrimary、colorPrimaryDark、colorAccent详解
今天就来看看在Androi5.0中常用的颜色属性。我们可以先定义一个style,然后在这个style中设定每一个Activity或者整个App的颜色,最后在清单文件中来给某个Activity设置主题即可。代码如下:<!--状态栏颜色--><item name="colorPrimaryDark">@color/colorPrimaryDark</item> <!--控制各个控件被选中时的颜色--><item name="colorAcce转载 2021-03-02 10:30:23 · 1384 阅读 · 0 评论 -
Android 12 首个开发者预览版到来
前言周末凑空看了google公众号推送的Android 12初版变更,花了点时间整理了一下。大概有下面几个方向改动1.首先是兼容媒体转码。2.图像和视频等富媒体内容现在可以更轻松地复制/粘贴到您的应用里。3.添加隐私保护并优化性能。4.Jetpack Compose 工具包5.更好的用户体验工具信任安全1.用于跟踪的标识符增加了新的限制2.webView SameSite cookie 行为。提供额外的安全性和隐私性,cookie跨域更透明和拥有更多的控制。3.android:ex原创 2021-02-27 18:04:20 · 198 阅读 · 0 评论 -
Android TextView 设置内容可滚动
前言开发中scrollBar 用的最多的地方就是在内容超过显示区域后,可以手动上下左右滑动来查看解决方案比较多。方案一使用一个可滑动的组件ScroolView包裹用于在内容超过显示区域后可滑动的布局。限制一个固定高度即可实现<ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/tv_bottom" android:l原创 2020-12-19 17:14:50 · 16589 阅读 · 2 评论 -
Andorid图片等比例缩放解决方案示例
前言图片等比例缩放平时经常用到,网上也提供了很多种方式来解决。这里记录自己开发过程中用到的一种等比例缩放场景。Android imageView adjustViewBounds属性设置,可以支持等比缩放,再加上动态计算图片比例调整宽高比。1.配置ImageView 的 adjustViewBounds属性为true; <ImageView android:id="@+id/pic" android:layout_width="wrap_content" and原创 2020-12-15 21:18:32 · 3639 阅读 · 1 评论 -
RecycleVeiw 多列等分实现
前言recycleView 的item等分开发中经常用到,实现方案多样。比如:1.计算屏幕宽度除以等分数,然后动态设置item的宽高进行等分。2.固定item数量,通过调整padding 内边距或者调整margin 外边距达到等分。3.通过简单设置recycleView属性,让系统自动进行适配达到等分。这里介绍下只用布局属性方式进行等分。最终设置如下:#源码val gridLayoutManager = GridLayoutManager(this@PlayTogetherActivit原创 2020-12-06 17:13:10 · 650 阅读 · 0 评论 -
android 客户端数据库选型
地址名称特殊https://www.jianshu.com/p/330bbd3b0e68数据库对比https://github.com/greenrobot/greenDAOgreendao(android)不包含反射,基于sqlite封装。插入删除较优,代码自动生成https://github.com/realm/realm-javarealm (跨平台)包含原生c,基于mvvc,类似git快照,查询性能比greendao优https://github....原创 2020-10-26 20:12:42 · 514 阅读 · 0 评论 -
Android 集成原生google,facebook 登录分享sdk
前言海外版app集成三方登录,早期采用umengsdk,由于国外对用户隐私及用户数据的使用有严格规定。 umeng后台会采集app用户信息造成google play对上架的app,下架处理。不得已移除umeng登录分享组件。解决被google play 下架问题:1.官方解决方案联系客服,根据google官方提供的解决方案,在用户隐私协议中添加特殊的解释条款。原以为问题得以解决。好了一个版本,紧跟着就拒绝上架了。拒绝原因: umeng share存在获取用户数据情况2.彻底解决移除app中所原创 2020-09-09 21:31:39 · 1746 阅读 · 0 评论 -
Android 平时开发用到的三方库
名称地址评价shadowviewhttps://github.com/amikoj/shadowview原创 2020-08-31 21:32:14 · 245 阅读 · 0 评论 -
Android 共享内存(ashmem)持续更新
Android 共享内存(ashmem)前言项目中接入讯飞语音合成,在sdk中看到 MemoryFile,了解下用法发现,看到的只是冰山一角。官方介绍:SharedMemory enables the creation, mapping, and protection controlover anonymous shared memory.SharedMemory 启用对匿名共享内存的创建,映射和保护控制。简单用法:将data数组内容写入到sd卡上。MemoryFile memFile=原创 2020-08-27 21:23:46 · 544 阅读 · 0 评论 -
通过 BUILD.BRAND 获取的手机品牌列表
应用开发过程中免不了,通过手机品牌进行各自适配一些知识:android手机信息可以通过android.os.Build类中提取设备硬件和系统版本信息,android.os.Build.MANUFACTURER; //硬件制造商android.os.Build.BRAND; //手机品牌android.os.Build.DEVICE; //设备名android.os.Build.MODEL; //用户可见的手机型号android.os.Build.DISPLAY; //显示屏参数android原创 2020-08-17 21:08:04 · 10111 阅读 · 1 评论 -
RecycleView根据内容自适应高度,最大高度限制
前言recylceView 日常开发经常使用到,默认高度自适应,如何增加最大高度限制如下:public class MeasureLinearLayoutManager extends LinearLayoutManager { private int maxHeight; public MeasureLinearLayoutManager(Context context) { super(context); } public MeasureLinea原创 2020-08-10 15:00:24 · 800 阅读 · 0 评论 -
Android Git 工作流,基础,回撤commit
一 ,Git的工作流程1.删除工作区,暂存库,版本库(commited)git分区工作区、暂存区、版本库tip:1.1 除了隐藏的.git文件夹,其他项目文件位于的地方便是工作区 (默认)1.2 工作区的文件需要添加到Git的暂存区(git add)1.3 Git的版本库(git commit)2.git 状态untracked、unstaged、uncommited2.1 新建的文件都是untracked状态(未跟踪)2.2 git add到暂存区,Git便会在暂存区中生成一个该文件原创 2020-07-28 21:33:07 · 993 阅读 · 0 评论 -
Android 基础 MaterialButton
项目中经常会使用到,给按钮添加边框,点击效果,圆角,icon+文字圆角。发现系统就有提供好的组件,除了CardView 可以设置。android material design支持库中各种可以直接拿来用的组件。meterialDesign 支持库下面基于com.google.android.material.button.MaterialButton 这个组件,展示了可以设置的集中效果。如上,基本上可以满足日常开发。注意使用过程中一些细节点。1.设置圆角描边,并且同时设置背景色时,放大会看到背景原创 2020-07-27 09:59:31 · 721 阅读 · 0 评论 -
android 手机 apk安装失败对应码
下面是从网上找到的几种常见的错误及解决方法:1、INSTALL_FAILED_INVALID_APK:无效的安装包,安装包已损坏请检查安装包是否完整。如果是xpk包,可以通过手动安装xpk来检测一下。如果是apk包,请重新下载。2、INSTALL_FAILED_OLDER_SDK:系统版本过低当前程序不支持您的手机。3、INSTALL_FAILED_INSUFFICIENT_STORAGE:没有足够的存储空间。4、INSTALL_FAILED_INVALID_INSTALL_LOCATION:无原创 2020-07-09 11:29:11 · 9817 阅读 · 0 评论 -
Android 英文数字混排导致提前换行完美解决
前言数字加英文混排造成,段落提前换行异常。网上可找到处理方式较多。处理方式:1.自定义TextView,测量文字宽度与父窗体宽度自行进行人为换行占主流。2.全角半角进行统一,将字符串中的半角转换成全角,(转换之后字符宽度变大效果不好)如图效果:解决方式:自定义TextView 有偶发的oom情况,半角字符转全角字符有字体不美观情况。从字面上看是由于空格导致的提前换行。六种空格的区别进入只要将半角的空格转换成全角空格就可以完美解决。oom情况也可以避免掉如下:package com.原创 2020-05-22 14:52:36 · 1430 阅读 · 0 评论 -
android 10文件存储兼容
前言Android Q 推送已经一段时间,手上几部测试机也已经升级到android 10 系统。google 对用户隐私是越来越上心了。简单介绍下适配10系统分区存储。看图如图10系统兼容脑图。包括兼容方案,延时兼容处理,兼容完成如何查验是否兼容成功。为什么需要兼容10系统?gogle 官网罗列的一大串兼容10的好处。比较重要的一点是为了保护用户隐私使用类似应用沙箱原理。自己的app只...原创 2020-04-27 15:22:03 · 4853 阅读 · 1 评论 -
Android app umeng推送处理流程
前言app 中添加推送可以显著提高app打开率,一些重要的通知也可以及时的推送到app端。推送三方平台可选的比较多,这里用umeng做个推送的处理流程解析。有推送就会有通知绑到一起说...原创 2020-03-28 15:18:28 · 1228 阅读 · 0 评论 -
Android LocalBroadcastManager 使用
前言LocalBroadcastManager 简单使用。1.注册 【添加IntentFilter】2.反注册3.发广播public class Main2Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { ...原创 2020-03-25 15:01:35 · 2270 阅读 · 0 评论 -
Unity 与Android 交互梳理
1.Unity 代码结构由研发部门导出 Android Studio IDE可以识别的 Unity Module,手动进行依赖。代码结构同正常的Android Module 结构一致。 Unity module - -build -libs -src -main -assets -java -j...原创 2020-02-25 16:57:22 · 1673 阅读 · 2 评论 -
Android git 解决ignore文件不生效
删除git 缓存git rm -r --cached .git add .git commit -m ‘update .gitignore’原创 2020-02-18 15:48:27 · 518 阅读 · 1 评论