- 博客(296)
- 资源 (26)
- 收藏
- 关注
原创 Flutter-升级Xcode后构建iOS报错
代码什么都没改动,貌似只是升级了下Xcode,构建iOS就一直报错,错误有时候还不一样。AI&Google各种问,都说是DerivedData缓存的问题,让删缓存。最后看到了这个,成功解决。折腾了一上午都搞不定。
2025-02-25 14:42:45
994
原创 Flutter:Gradle build failed to produce an .aab file. It‘s likely that this file was generated .....
打包完成后,即使报错如上,实际上还是打包完成的,即如果你非要打包完成后自动修改文件名,也可以不管他。如果你想看到,没有出现成功的提示。你就得去掉打包过程中修改文件名的代码。果然我仔细看项目代码,找到了修改打包后文件名字的“万恶之源”。虽然没有解决我的问题,但是给了我看flutter源码的启发。按照网上的说法,是Android打包变体导致的。屏蔽掉这句代码后打包成功,不再报错。我命令行中加了变体参数一样报错。
2024-11-15 17:05:15
679
原创 Android 判断手机桌面是否已经存在App的快捷方式
我们需要在桌面添加快捷方式的时候,为了优化体验,有时候需要判断桌面上是否已经存在快捷方式。
2024-06-19 18:27:24
748
原创 计算角度与弧度
无论计算角度还是弧度,始终绕不开的就是正切函数。用于返回夹角的弧度值,进而得到角度。为例,提供两个反切函数。交点的x轴正方向夹角。
2023-04-07 15:53:47
1518
原创 多条件判断的二进制简化
多条件同时判断,并且每个条件都可以影响结果的情况下,如果 if-else 直接判断的话,特别容易混乱,判读出错。我们可以根据二进制数据的特性,每一位都看做是一个 bool 值。假如要在四个条件的组合中判断是否为真,可将每一个条件作为二进制中的一位,按从右到左的顺序编号。四个条件分别为 a,b,c,d ,从右到左分别对应最后 4 位,然后将对应的值保存变量中,如:a=true,b=false,c=true,d=true,得到的二进制为:result=1011//or 转为10进制。
2023-03-09 10:58:10
389
原创 TS 内置条件类型
从 Type 中选取一系列的属性,这些属性来自于 Keys(字符串字面量或字符串字面量的联合类型),用这些属性构成新的 type。获取函数的返回值类型。
2023-03-03 10:16:23
253
原创 Android 使用dx/d8将jar转换为dex
在 JDK1.8 之前我们可以通过 dx 工具将 jar 转为 dex。为了能够支持 JDK1.8,目前 AGP 是通过在 D8/R8 将 class 文件编译成 dex 文件的过程中,对字节码进行转换来实现的,这个转换过程称为脱糖。因此 JDK1.8 及以后我们需要使用 d8 工具将 jar 转为 dex。
2023-01-06 15:50:32
6092
原创 Android dex动态加载后,启动Activity解决方案
在Android dex 动态加载(Kotlin 版)一文中我们讲解了如何 dex 动态加载,以及如何通过反射执行 dex 中的方法。在进一步的研究中发现,直接调用 dex 中的方法会报错。今天我们来一步步分析一下原因,并给出启动 dex 中的 Activity 的解决方案。LoadApk.java 源码代码资源文件Activity, Service 等组件Manifest 配置文件。
2023-01-05 17:47:47
2932
1
原创 Android jar中包含第三方库代码解决方案
Android为了解决jar包无法包含无法包含资源文件&第三方库代码的问题推出了aar包,打包生成aar可以含资源文件&第三方库代码,极大的方便了我们开发SDK。然而我们在做dex动态加载的过程中,dex只能通过jar生成,限制了我们的sdk只能使用jar。资源文件可以通过二进制,base64等方案解决。第三方库代码有三种解决方案,可以根据库的大小,是否包含资源文件等因素综合选择。
2022-12-29 18:21:07
967
原创 Cocos2.4.9编译Android程序报错
MAC电脑会出现此问题,JDK8安装到设备上会有个插件。设备会默认使用插件内到JDK环境。而插件内到JDK是缺少tools.jar的。中拷贝一份tools.jar。复制tools.jar粘贴到。下载完整的JDK8版本。
2022-12-28 10:36:11
939
原创 Mac 管理JDK环境变量
以博主为例,开发Android程序一般使用JDK11;但是制作cocos2.4.9游戏打包环境却只能使用JDK8。在上面的官网页面我们可以下载到最新的JDK19or17,也可以下载目前主流的JDK8or11.mac选择dmg安装会自动配置环境变量,选择压缩包则需要自己解压后配置环境变量。选择自己需要的JDK版本及电脑版本,下载安装即可。因此我们需要配置多版本JDK环境,通过。
2022-12-27 19:44:56
410
原创 Mac 管理Python环境
使用pyenv管理python非常方便,如果你之前自己安装了其他版本的python,可以参考如下删除,再使用pyenv安装。如果你觉得每次都python3很麻烦,想直接python就执行python3,可以通过修改系统变量别名来实现。这个时候python指令无效,只能通过python3执行系统内置python3.x。如果你只需要使用Python3.x,并且3.9.x版本符合需求,那么只需要。最新的Mac电脑内置Python3.9,而不再是Python2.x。执行脚本即可,而无需任何做任何操作。
2022-12-27 18:23:58
2075
原创 Android 代码混淆Proguard
假设没指定白名单就进行混淆打包,而某某类的类名被混淆了(假设变成了a),那么可能其他引用或使用该类的类就找不到该类,说不定应用就会因此崩溃或是导致相应的功能无法使用。在Android的具体表现就是打包时,将项目里的包名、类名、变量名根据混淆规则进行更改,使反编译工具反编译出来的代码人难以阅读,从而达到防止被逆向破解的目的。Android代码混淆,又称Android混淆,是伴随着Android系统的流行而产生的一种APP保护技术,用于保护APP不被破解和逆向分析。(每次混淆修改后,打包前注意clean)
2022-12-13 00:33:07
3308
原创 Android Kotlin反射全解析
读此文前你需要学习并了解Java反射的基本知识。Kotlin的反射原理上跟Java是没差别的。他们出现差异的主要原因是Kotlin代码编译转为Java代码后,会发生变化,进而导致反射调用也会出现差别。以静态方法为例。object class 懒汉式单例companion object 静态内部类式单例然后菜单栏} }在Java中这些方法并不是static的,而是被转为了最简单的懒汉式单例类,这也解释了为什么object class在kotlin中是一个单例。
2022-12-09 18:15:00
3718
2
原创 Android dex动态加载(Kotlin版)
语言–KotlinJDK11SDK33AndroidStudio版本libaray项目打包成jarjar通过dx命令行工具转为dex.jardex.jar放到assets目录下App启动读取assets中的dex.jar复制到App可访问的文件夹中(建议内部存储的沙盒中,不受权限限制)实例化DexClassLoader加载dex获取ClassLoader对象通过ClassLoader.loadClass方法,获取想要执行的类。
2022-12-09 17:02:10
3542
原创 Win10解决:系统管理员已阻止你运行此应用
Win10安装msi软件包时出现错误提示如下:Win10家庭版没有组策略,输入,会提示找不到。解决如下:将文件重命名为:组策略.bat,一定要是.bat批处理格式。右键文件选择”以管理员身份运行“。等待安装完毕,即可【win+R】快捷键打开运行,输入打开组策略。靠谱的参考https://www.jb51.net/os/win10/737756.html
2022-12-02 12:12:19
6950
原创 Android 下载不同版本的platform-tools
复制到浏览器,回车即可下载28.0.2版本。右键下载成功的内容,复制链接地址。可以看到当前下载的是33.0.3版本。选择不同平台进行下载最新版本。下载完成后,进入下载内容。
2022-11-24 16:51:21
6743
原创 Python 通过adb传输文件到手机
Python 通过adb传输文件到手机。1. 手机开启开发者模式2. USB或wifi连接到电脑调试3. 电脑安装了```adb```,并配置了环境变量
2022-08-11 16:03:29
1898
原创 Windows批量修改文件名bat脚本
@echo offset /p w=请输入文件格式(即扩展名并以回车结束):set /p wf=请输入要修改的文字(以回车结束):set /p cb=请输入要改成的文字(若是删除则直接回车,以回车结束):for /f "delims=" %%i in ('dir /b /a-d "*.%w%"' ) do ( set str1=%%i setlocal EnableDelayedExpansionset "str1=!str1:%wf%=%cb%!"ren "%%i" "!str1!"en
2022-05-16 18:49:26
3819
原创 Android Hlit构建错误:Expected @HiltAndroidApp to have a value.
旧项目中使用Hlit后一直编译报错如下:Expected @HiltAndroidApp to have a value. Did you forget to apply the Gradle Plugin?stackoverflow上有人解决了这个问题:https://stackoverflow.com/questions/62887817/expected-hiltandroidapp-to-have-a-value-did-you-forget-to-apply-the-gradle-plu
2022-04-16 21:09:46
3243
原创 Android 玩转Glide4---缓存篇
前言系列文章专栏: 玩转Glide4概述加载相同的网络资源的时候,为了减少流量开销,优化加载速度,我们一般都会选择使用缓存。Glide作为最优秀的图片加载库,广受大家认可,必然也有着十分优秀的缓存机制。Glide缓存基于LRU原理实现了两种缓存:内存缓存MemoryCache硬盘缓存DiskCacheGlide是默认同时开启这两种缓存的。内存缓存MemoryCache基于LRU的缓存驱逐算法实现。默认开启,也可以调用skipMemoryCache(boolean skip)开启或者
2022-03-23 17:49:33
9514
原创 Android Glide4.x 注: [1] Wrote GeneratedAppGlideModule
问题使用Glide4.x想更换网络组件,引入了官方库okhttp集成库implementation 'com.github.bumptech.glide:okhttp3-integration:4.13.1'然后编译报错如下:> Task :app:kaptDebugKotlin FAILED注: [1] Wrote GeneratedAppGlideModule with: [com.bumptech.glide.integration.okhttp3.OkHttpLibraryGlid
2022-03-23 15:48:39
4444
原创 Android Activity Results API自动化注册&极简使用方案
Activity Results APIActivity Result API提供了用于注册结果、启动结果以及在系统分派结果后对其进行处理的组件。—Google官方文档一句话解释:官方Jetpack组件用于代替startActivityForResult()/onActivityResult()。看完文档会发现,能代替startActivityForResult(),但也并没有好用到哪去。其实startActivityForResult()的调用并不麻烦,复杂页面的使用,做一下简单的封装即可。核
2022-03-04 14:29:22
4609
原创 Android页面关闭时自动隐藏软键盘
问题我们希望页面关闭时自动隐藏软键盘。关闭软键盘的代码很简单:调用InputMethodManager#hideSoftInputFromWindow即可。public boolean hideSoftInputFromWindow(IBinder windowToken, int flags)hideSoftInputFromWindow方法是有返回值boolean类型的。Activity关闭时经历的三个生命周期onPause()---onStop()---onDestory()我们分别deb
2022-02-18 15:14:03
2879
原创 Android ProgressBar传统样式
<ProgressBar style="@android:style/Widget.ProgressBar.Small" android:layout_width="wrap_content" android:layout_height="wrap_content" />
2021-11-11 11:32:33
1577
原创 Python中文报错UnicodeDecodeError
Python脚本运行传值中文的时候,一直报错如下:UnicodeDecodeError: 'utf8' codec can't decode byte 0xc7 in position 0解决win10设置-时间和语言-语言-管理语言设置-更改系统区域设置-勾选bate版使用uft-8提供全球语言支持-重启参考https://ask.youkuaiyun.com/questions/724167...
2021-11-02 17:27:29
325
原创 Android Constraintlayout约束失效bug:ArrayLinkedVariables cannot be cast to SolverVariableValues
使用Constraintlayout开发页面时,出现了一个奇怪的bug。具体表现为:页面混乱,约束全部失效。控制台可以捕捉到报错信息如下:java.lang.ClassCastException: androidx.constraintlayout.solver.ArrayLinkedVariables cannot be cast to androidx.constraintlayout.solver.SolverVariableValues百度搜索了一圈,完全没有结果。无奈只能Google。
2021-06-10 17:04:04
921
原创 Android NavigationView头部点击事件无响应
一开始百度都说需要动态inflateHeaderView,然后通过findViewById取设置点击事件。如: View drawerView = navigationView.inflateHeaderView(R.layout.nav_header_main); CircleImageView account = (CircleImageView) drawerView.findViewById(R.id.account); account.setOnClickLis
2021-06-09 18:06:48
405
原创 SQL 根据A表往B表中添加默认数据
例如:有一个user表和message表,要根据user的用户id,在message表中根据每个id生成一条默认数据。SQLite写法INSERT INTO "message" ( "conversation", "msgid", "msgtime", "msgdirection", "isread", "isacked", "isdelivered", "islistened", "status", "msgbody", "msgtype", "bodytype", "se
2021-06-03 17:53:52
274
windows老版图片查看器
2018-12-07
Android自定义输入法软键盘
2018-11-28
Kotlin学习手册电子书合集
2018-11-19
Okhttp3+MVP
2018-10-31
BroadcastReceiver代码示例
2017-05-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人