android应用
文章平均质量分 60
newchenxf
一个喜欢打球的搬砖员,一言不合就要拿砖头来投篮
展开
-
Gradle compileDebugJavaWithJavac lambda 编译错误问题
问题背景导入其他项目的代码,遇到如上错误。也就是编译java的lambda表达式过不去。原因lambda是java新特性,可能要需要升级java版本到11。解决办法升级AndroidStudio到最新的4.2一般一个版本的AndroidStudio都会匹配一个JRE。比如我的电脑,安装最新的4.2后,对应的java版本就升级到11了。JDK目录如下:C:\Program Files\Android\Android Studio\jre可通过如下命令查看版本:C:\Program F原创 2022-05-06 11:45:38 · 1266 阅读 · 0 评论 -
Android 权限动态请求
在Android M版本以后,权限就没办法Manifest声明就万事了,还需要动态请求。网上已经有不少例子,不过这里还是做一个简单的activity,把动态请求的方法,完整的实现一下,基本可以复制粘贴使用。首先,manifest还是声明一下,兼容老版本。 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="an原创 2022-02-17 21:44:28 · 1527 阅读 · 0 评论 -
Android View保存为bitmap
基本流程是,先拿到view的宽高,然后创建一个bitmap和一个canvas,canvas使用bitmap作为buffer。然后,调用view.draw(canvas),把view的内容绘制到canvas上。原创 2022-02-17 21:26:42 · 2785 阅读 · 1 评论 -
一种signal 5 (SIGTRAP), code 1 (TRAP_BRKPT)的原因
`SIGTRAP` 的错误,指的是`函数没有返回值!`所以写C++代码,要小心,虽然没返回值能编译过,但是最终会运行崩溃。原创 2021-12-27 15:02:56 · 15377 阅读 · 1 评论 -
Android替换JSON转义字符
要替换json string的转义字符`\`,可以用`String.replaceAll("\\\\", "")`的方法。原创 2021-12-27 11:08:23 · 3439 阅读 · 0 评论 -
Unity导出Android工程
前言一个Unity游戏,要打包成android apk,有两种方式,一种是直接在Unity上编译出apk;一种是Unity导出android 代码,然后放到AndroidStudio工程编译。第一种很简单,本文不做展开,来聊一下第二种。本文基于Unity 2020.3.13f1c1版本来说明,不同的版本可能使用上稍微有点差异。1 导出首先,需要让工程支持arm v7和arm v8两种架构,否则在某些机型上,会运行失败。做法如下:File -> Build Settings,打开面板后,左下角的原创 2021-12-14 13:08:54 · 18043 阅读 · 1 评论 -
android OpenGL渲染带骨骼动画的3D模型
1 前言前面一篇文章android OpenGL渲染3D模型文件介绍了渲染3D模型的方式,但是,它还是静态的,模型本身不会动,还是不够炫酷。所以本文来讨论一下如何让模型自己动起来。想要动起来,就需要传说中的骨骼动画了。 一般大部分模型文件都支持带骨骼动画的数据,例如fbx, dae,但也有个别不支持,例如obj。本文分两部分讨论,一是捋一下骨骼动画的背景知识,二是在android上怎么用openGL ES渲染。当然了,渲染骨骼动画还是比较麻烦的,大部分场景下,还是走游戏引擎,例如unity。2原创 2021-12-10 11:54:10 · 13372 阅读 · 9 评论 -
signal 11 (SIGSEGV), code 2 (SEGV_ACCERR)的原因和解决办法
1 问题背景写好Android C++代码,运行起来崩溃,日志如下:11-25 15:07:25.546 24467 24527 E glesdemo: ReadMissingBones, m_BoneInfoMap address 0x7e70ed0f88, size 5211-25 15:07:25.554 24467 24527 E glesdemo: GetBoneIDMap, m_BoneInfoMap size 011-25 15:07:25.654 24718 24718 I原创 2021-11-25 15:39:39 · 41517 阅读 · 5 评论 -
android跨进程实现共享内存
android跨进程实现共享内存前言场景1: A&B都是普通app场景2: A&B都是native服务程序场景2: A是普通app,B是系统服务程序前言业务场景:A进程需要拷贝大buffer到B进程,且需要快,越快越好!业务方:A & B双方都是普通app;A是普通app,B是native服务程序(native c++实现,在android源码下编译的服务程序);A & B都是native服务程序首先,创建一块共享内存ashmem,则不管是普通app,还是系统服务程序原创 2021-04-01 10:51:50 · 3641 阅读 · 1 评论 -
Android 查看项目依赖关系
做android项目,module多的话,很容易遇到包冲突的问题。比如v4既有26.1.0版本,也有27.1.0版本。这时候,要找出两个版本都是从哪个module 或者第三方包引入的,然后再用exclude命令,把不要的版本去除。例如 implementation ('com.google.firebase:firebase-core:15.0.0') { ...原创 2019-08-16 10:00:01 · 6900 阅读 · 0 评论 -
【转】Android OOM 发生时物理内存充足
开发过程中,遇到Android OOM,但是手机的物理内存却有5G,空余的也有3G。以下这边文章,跟我的情况类似,故而存下且推广哈^^不可思议的OOM转载 2019-07-29 12:29:51 · 287 阅读 · 0 评论 -
Android 插件化原理--基于开源的Neptune
1. 前言大型App,如微信,淘宝,爱奇艺,功能都非常多,但是app安装包却不大,为啥?很可能就是用了插件的技术。所谓插件,就是一个模块(比如一个jar包,一个apk),可以在运行期,被宿主App动态安装,使用。Android出现了很多插件化技术,比如360的RePlugin,IQIYI的Neptune,阿里的Atlas。各有优缺点,本文不做对比,只专注分析Neptune,写的很好,通俗易懂...原创 2020-12-12 17:51:14 · 874 阅读 · 1 评论 -
Android注解、反射及其应用--自动生成类-精简版ARouter
1. 背景注解和反射的原理,见https://blog.csdn.net/newchenxf/article/details/90231512,本文主要讲如何自动生成类。这算是一个高端用法,挺有意思。首先,要自动生成类,就要用到APT,Annotation-Processing-tool的简写,称为注解处理器。注解处理器在编译期被调用,可以扫描特定注解的信息,你可以为你自己的的注解注册处理...原创 2019-05-15 20:44:10 · 925 阅读 · 0 评论 -
Android注解、反射及其应用--轻量级ButterKnife实现
1. 背景Android开发,少不了遇到注解,比如写一个Activity,基本都要用注解@Override。反射呢,一般用不到,但是如果想自己实现注解,就得用了。所以一般注解和反射,都放在一起讨论。2. 注解Annotation(注解)就是Java提供了一种源程序中的元素关联任何信息或者任何元数据(metadata)的途径和方法。Annotation是被动的元数据,永远不会有主动行为自定...原创 2019-05-15 11:36:58 · 302 阅读 · 0 评论 -
java 线程池ThreadPoolExecutor简介与实例
java 线程池ThreadPoolExecutor使用简介转载 2016-07-22 17:31:23 · 5632 阅读 · 0 评论 -
gradle 安装错误:JAVA_HOME is set to an invalid directory: /usr/lib/jvm/default-java
手动安装gradle时, 即sudo apt-get install gradle然后,要使用gradle,输入 gradle -version,结果,出现了一下错误:chenxf@chenxf-PC:~$ gradle --versionERROR: JAVA_HOME is set to an invalid directory: /usr/lib/jvm/default-javaPlease原创 2016-11-15 10:44:08 · 10393 阅读 · 5 评论 -
AndroidStudio 获取SHA1值
AndroidStudio 获取SHA1值开发android app时,如果需要使用第三方的SDK,经常需要申请key,比如百度地图SDK,就需要提供SHA1和包名。开发版本的SHA1看在这需要2个步骤: 1: 生成自己的keytore文件 Build->Generate SingApk -> Create New 2. 获取SHA1,执行如下命令:keytool -v -list原创 2017-05-01 09:30:49 · 642 阅读 · 0 评论 -
Android 仿QQ语音录制 竖线波纹效果
源码如下: https://github.com/xf420811/audiorecord效果图原创 2017-07-17 12:07:25 · 6657 阅读 · 3 评论 -
子类序列化与父类序列化(Serializable)的区别
今天码代码,遇到了一个很奇怪的问题。就是子类继承了Serializable,父类没有,最后面,子类的数据转为byte[],并存储到数据库,再从数据库出来转为子类对象,发现,父类的变量,值为空!最后调查,发现结论如下: 1. 如果子类实现Serializable接口而父类未实现时,父类不会被序列化! 2. 如果父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口。原因:原创 2017-07-24 20:08:28 · 13939 阅读 · 5 评论 -
[转] ThreadLocal 的原理与用途
本来想自己总结一下,不过看网上已有大神,分析的比较到位,所以决定转发,自己不写啦链接如下:http://www.iteye.com/topic/103804转载 2017-07-25 17:52:55 · 400 阅读 · 0 评论 -
java 静态内部类总结
1. 如果一个类要被声明为static的,只有一种情况,就是静态内部类。2. 静态内部类跟静态方法一样,只能访问外部类的静态的成员变量和方法,不能访问非静态的方法和属性,但是普通内部类可以访问任意外部类的成员变量和方法。3. 静态内部类可以声明普通成员变量和方法,而普通内部类不能声明static成员变量和方法。原创 2017-09-05 21:13:19 · 716 阅读 · 0 评论 -
Manifest merger failed with multiple errors终极解决办法
今天升级一些第三方包的版本,遇到这个错误,该错误不会打印直接的错误原因,很绝望,网上找的思路,都是,可能1, 可能2, 可能3…全靠猜,还没一个猜对的!!!查找到一个终极办法,就是打印出原因!!!!终于解决了我的问题,分享一下。打开AndroidStudio底部的Terminal, 执行./gradlew processReleaseManifest --stacktrace(window...原创 2018-10-18 12:59:14 · 23984 阅读 · 2 评论 -
RXJava & Retrofit 结合最佳实践
RXJava & Retrofit 结合最佳实践开始开始本来决定自己码,发现早有大神写的明明白白了,于是这里贴一下链接,共享大家,也是自己备忘,哈哈哈哈RxJava 与 Retrofit 结合的最佳实践https://www.jianshu.com/p/0fda3132cf98给 Android 开发者的 RxJava 详解...转载 2018-10-17 10:05:07 · 442 阅读 · 0 评论 -
Android的事件分发(dispatchTouchEvent),拦截(onInterceptTouchEvent)与处理(onTouchEvent)
网上例子很多,我觉得看这一边就能理解大概流程了。https://blog.csdn.net/caifengyao/article/details/65437695转载 2018-10-23 11:26:00 · 487 阅读 · 0 评论 -
Android多进程的实现
前言一般,一个app只有一个进程,但会有多个线程,比如UI主线程,各种网络请求的子线程。但是,一些大型的app,比如QQ,会有多个进程!刚通过top命令,看了一下QQ运行时的进程:10644 u0_a130 20 0 12% S 57 1425816K 86924K bg com.tencent.mobileqq:tool10371 u0_a130 16 -4 5...原创 2019-05-20 11:39:01 · 2288 阅读 · 1 评论 -
Android UI 主线程,啥玩意?还有Handler+Looper+MessageQueue几个意思?
Android UI 主线程是什么?看这里。Handler+Looper+MessageQueue几个意思?看这里!原创 2015-08-11 09:15:05 · 2172 阅读 · 2 评论