Android开发
会写代码的吉他手
这个作者很懒,什么都没留下…
展开
-
加固APK之后Android12无法安装的问题
首先打包的时候不要去选zipAlignEnabledbuildTypes { release { minifyEnabled true useProguard true// zipAlignEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-opt原创 2022-03-25 21:56:17 · 3158 阅读 · 0 评论 -
ModelCache.safeGet(androidProjectResult.androidProject::getNdkVersion, ““) must not be null
在更新到Android Studio Bumblebee 版本之后,突然发现项目跑不起来了,报错如下:ModelCache.safeGet(androidProjectResult.androidProject::getNdkVersion, "") must not be null在网上找了好多资料,有说在gradle里面设置ndkVersion的,有说在local.properties里面设置ndk.dir的,也有说在Project Structure里面设置NDK的版本的,对我来说都没用。我原创 2022-02-14 15:31:02 · 3373 阅读 · 1 评论 -
在Flutter插件中的Android项目里面集成第三方的Module/Library/AAR
我现在遇到一个情况,就是在Flutter项目里面编写plugin插件,然后在plugin里面的Android项目里集成一个Module。如果按照正常逻辑来写的话那肯定就是在插件的android里面的build.gradle文件里面写:implementation project(':project')然后就可以在Flutter插件的android项目里使用第三方module的api了,正常这么写是没问题,但当你开始编译Flutter的项目的时候,会遇到下面的错误:Project with pat原创 2022-01-13 11:10:14 · 2464 阅读 · 1 评论 -
关于Kotlin做组件化中遇到Unresolved reference:XXX的问题
具体场景是你又一个CommonLib,被主工程给依赖的,在调用CommonLib里面的资源或者类的时候出现了Unresolved reference:XXX,解决办法是在你的CommonLib的build.gradle里面添加:plugins { id 'kotlin-android' id 'kotlin-android-extensions'}或者:apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-ext原创 2021-12-17 10:24:43 · 2651 阅读 · 0 评论 -
Android build packages\flutter_tools\gradle\app_plugin_loader.gradle‘ as it does not exist. site:st
Android在编译的时候报:packages\flutter_tools\gradle\app_plugin_loader.gradle' as it does not exist. site:stackoverflow.com可能是多人开发的时候,flutter的sdk路径被替换了原创 2021-02-06 08:22:49 · 1233 阅读 · 0 评论 -
Kotlin泛型和委托
在Java中泛型早就被用烂了,Kotlin中的泛型和Java的有一样的也有不一样的地方,准确来讲,我们需要给任何要个变量指定一个具体的类型,而泛型允许我们在不指定具体类型的情况下进行编程莫这样编写出来的代码将会有更好的扩展性。在Kotlin中我们定义一个泛型类:class MyClass<T> { fun method(param: T): T { return param }}MyClass就是一个泛型类,但如果我们不想定义一个泛型类,只想用一个泛型方法呢?clas原创 2020-11-24 22:27:41 · 135 阅读 · 0 评论 -
Kotlin内联函数
上一章学了下高阶函数,我们可以用Lambda表达式很好的使用高阶函数,现在来看看高阶函数的原理,要知道Kotlin文件最终都是被编译成Java字节码的,但是Java中并没有高阶函数这个概念,其实Kotlin的编译器会将这些高阶函数的语法转换成Java支持的那种,比如上次我们写的计算两个数的和和差的函数:fun main() { val result = calculate(1, 2) { num1, num2 -> num1 - num2 }}fun calculate(num1: I原创 2020-11-24 21:22:15 · 853 阅读 · 0 评论 -
Kotlin高阶函数
高阶函数:如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么这个函数就成为高阶函数。写习惯了Java的人可能就在想,编程语言中的参数有整型、字符串类型,布尔型等字段类型,怎么能接收一个函数作为参数呢?其实Kotlin新增了一个函数类型的概念,基本定义规则如下:(String, Int) -> Unit看起来有点抽象,一点点解释的话就是 ->左边括号里的,就是该函数类型要接收的参数类型,可以定义好多个,以逗号隔开;->右边用于声明该函数的返回值是什么类型,如.原创 2020-11-23 23:32:09 · 232 阅读 · 0 评论 -
Kotlin扩展函数
扩展函数:在不修改某个类的源码的情况下,仍然可以打开这个类,向该类中添加新的函数。比如说,我们在Android开发中经常用到Toast,每次创建一个Toast的时候,又要传入上下文,还要传入内容,还要时间长短,最后还得写个show,有时候show忘记写了还一脸懵逼的不知道为啥不弹出来,于是可以封装一个ToastUtil来管理toast:public class ToastUtil { public static void showToast(String msg) { Toa.原创 2020-11-22 21:36:07 · 438 阅读 · 1 评论 -
view must have a tag
Android 开发过程中出现了这错误。我这边错误原因是在MVVM架构中使用了组件化,每个组件里面有同名的xml布局导致DataBinding编译时出错,把同名的XML布局改一下名字区分一下就好了。原创 2020-08-29 14:49:34 · 2393 阅读 · 3 评论 -
Android ImageView显示的图片有上下空白块Padding
Android开发中,在Android Studio的xml布局中放入ImageView时,有时候会出现图片莫名其妙的多了上下的边距:但是明明打开这张图片是没有这个边距的,这个时候需要在这个ImageView控件中添加一行代码:android:adjustViewBounds="true"原因是因为图片高度设置的是wrap_content,但有时候图片的质量很高,如果宽度显示的效果是适应屏幕的,那系统就会误以为高度也适应了屏幕。所以用android:adjustViewBounds属性用于保持宽原创 2020-08-28 09:29:48 · 1028 阅读 · 0 评论 -
Android 获取jks签名信息
Android开发过程中,在我们把APK上架到应用市场时,或者使用某些第三方SDK时,会用到我们APK的签名信息,比如SHA1,和MD5。在终端输入:keytool -exportcert -list -v -keystore D:\keystore.jks之后会让你输入口令,注意此时输进去的口令是不可见的,所以你不要以为自己没有敲到键盘,之后就可以看到签名的各种信息了...原创 2020-08-10 11:07:52 · 989 阅读 · 0 评论 -
Android---探究Handler消息机制
在开发Android应用程序的过程中,如果耗时的操作放在Activity的主线程(UI线程)中执行的话,超过五秒钟的时候,就会出现传说中的ANR(Application Not Responsding),即应用无响应。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现ANR。所以在进行一些耗时操作的时候,我们应该放在子线程中去完成的,完成之后如果我们要更新主线程中的UI视图的话,就要用到Handler了,因为Android系统是禁止在子线程中去更新UI视图原创 2020-07-10 01:58:14 · 314 阅读 · 0 评论 -
Android Studio编译报Default interface methods are only supported starting with Android N (--min-api 24)
Android Studio在编译APK的时候报错:Default interface methods are only supported starting with Android N (--min-api 24)错误原因:这是因为java8才支持静态接口方法的原因解决办法:在app的build.gradle文件中配置使用java8编译在app的buiild.gradle中android代码块中添加如下代码://指定jdk版本 compileOptions { so原创 2020-06-28 17:12:29 · 1203 阅读 · 0 评论 -
Android---探究Android组件化
最近折腾了一下组件化,记录下心得。Android发展到现在,从刚开始的MVC,到后来的MVP和MVVM,它们似乎都在做同一件事:解耦组件化也是,我们不停的添加新功能和业务逻辑到项目中,随着时间推移和开发人员的增多,项目发展到一定程度的时候,团队开发开始存在很多问题.不得不花费更多的时间去和同事沟通协调。并且在开发过程中,任何一位开发人员没办法专注于自己的功能模块,从而影响整体开发效率。为了满足各个业务模块的迭代而彼此不受影响,这个时候就需要改变项目架构了。围绕着模块化的这个概念,市面上常见的架构有两种原创 2020-05-27 14:02:11 · 469 阅读 · 0 评论 -
Android组件化开发时无法引用公共模块中的类库问题
在进行组件化开发时我的androix组件都放在commonLib公共组件中去引入的,但是当我在组件中导入AppCompatActivity等类的时候怎么都导不进来。后来研究了一下发现是因为我在commonLib组件中去引入各种类库的时候用的是implementation,换成api就好了,以前compile也没有这个问题,关于compile跟api没啥区别,现在compile已经被废弃了,在高版本的gralde中使用compile的话会报错。而 implementation:implementati原创 2020-05-26 15:51:03 · 1303 阅读 · 0 评论