android
Plx0303sunny
这个作者很懒,什么都没留下…
展开
-
安卓打包过程
安卓打包过程关键词:编译–>DEX–>打包–>签名和对齐Android工程的编译打包是个复杂的过程,期间既涉及到工程自身的源代码、资源文件、AIDL文件,又涉及到工程所依赖的库文件(Library, JAR, AAR)等,需要由多个工具分多个步骤完成。打包过程图下面这张图对上面的步骤以及每步用到的工具进行了细分,概括如下:Java编译器对工程本身的java代码进行编译,这些java代码有三个来源:app的源代码,由资源文件生成的R文件(aapt工具),以及有aidl文件生原创 2020-11-17 00:00:02 · 373 阅读 · 0 评论 -
android查看项目依赖关系
查看项目依赖关系./gradlew -q dependencies app_driver:dependencies查找某一个库(aar)被引用的地方./gradlew -q app_driver:dependencyInsight --dependency lib_hotfix_robust --configuration compilegradle 发布某一个lib module./gradlew :some-module:clean :some-module:uploadArchives.原创 2020-11-07 00:48:33 · 915 阅读 · 0 评论 -
android jar包转dex文件
android aar中jar转dex本文主要记录aar中jar转dex过程解压aar重命名aar为zip。图中classes.jar为我们将要转dex的jar包jar转dex定位到 sdk/build-tools/29.0.2 目录下,执行如下方法:dx --dex --output ~/classes.dex ~/classes.jar注:~/classes.dex 为输出目录 ~/classes.jar为输入文件遇到的问题错误1-bash: dx: command n原创 2020-06-20 00:06:59 · 2085 阅读 · 0 评论 -
从零学IM(二)——基于TCP的socket长连接实现
前言此文章主要记录本人在学习IM时的一些历程。主要包含以下内容(对TCP/IP协议这里不做介绍):Java Socket API简单实现echo服务器基于android实现客户端TCP长连接1 Socket 基本用法Socket 是 TCP 层的封装,通过 socket,我们就能进行 TCP 通信。在 Java 的 SDK 中,socket 的共有两个接口:用于监听客户连接的 ServerSocket 和用于通信的 Socket。使用 Socket 的步骤如下:创建 ServerSo原创 2020-05-26 19:24:12 · 1118 阅读 · 0 评论 -
【android】源码解析——onSaveInstanceState执行时机
之前对于activity的onSaveInstanceState方法的调用时机一直不是很理解,看到一些文章讲过onSaveInstanceState以下5种情况被调用:当用户按下手机home键的时候。长按手机home键或者按下菜单键时。手机息屏时。FirstActivity启动SecondActivity,FirstActivity就会调用,也就是说打开新Activity时,原Activity就会调用。默认情况下横竖屏切换时。本文从源码的角度深入理解下改方法的执行时机。众所周知,Andro原创 2020-05-11 15:46:12 · 472 阅读 · 0 评论 -
android SQLite多线程并发访问
背景多线程情况下,进行SQLite操作时容易抛出打开正在关闭的数据库的异常,并且重复开关耗费性能解决在打开和关闭数据时通过计数的方式防止重复打开和重复关闭,保证多个线程同时访问时只打开和关闭数据库一次。代码private synchronized SQLiteDatabase getWritableDatabase() { if (dbCounter.incrementAndGe...原创 2020-01-16 18:25:26 · 485 阅读 · 0 评论 -
RecyclerView滚动指定位置到屏幕中间
背景接到个产品需求,需要使RecyclerView点击item后滚动到RecyclerView的中间位置实现自定义SmoothScroller继承LinearSmoothScroller继承LinearLayoutManager重写smoothScrollToPosition调用自定义SmoothScroller代码package com.wuba.housecommon.filt...原创 2019-12-31 18:15:41 · 1991 阅读 · 1 评论 -
OnTouchListener()只能收到MotionEvent.ACTION_DOWN
在做view跟随手指的时候,发现OnTouchListener只能收到ACTION_DOWN事件。这里记录下解决过程。关键返回true还是false ?返回false和true的区别:setOnTouchListener 单独使用的时候返回值需要设置为true,才能保证MotionEvent.ACTION_DOWN的后续事件可以被接收到当OnTouchListener 和 O...原创 2019-12-19 17:55:52 · 468 阅读 · 0 评论 -
Mac下编译x264 for Android
前言在编译之前建议先去了解交叉编辑环境生成教程,后续编译基于此。自定义NDK交叉编译链(toolchain)环境操作系统:mac os 10.14.2ndk版本:android-ndk-r20libx264: x264-snapshot-20191211-2245脚本下载x264进入下载后的x264目录,创建build_android.sh#!/bin/shNDK_HOM...原创 2019-12-12 15:05:31 · 862 阅读 · 0 评论 -
Android工程中使用FFMPEG静态库(CMake和Android mk)
前言:前文Mac下编译FFMPEG for Android中介绍了如何编译FFMPEG静态库。本文将介绍CMake和Android mk两种方式使用静态库。主要内容CMakeAndroid mkCMakeCMake方式构建使用比较简单,创建的一个新的支持Native C++的工程默认使用此方式。设置包名等信息,点Finish完成将编译好的FFMPEG下include目录...原创 2019-12-11 16:46:48 · 677 阅读 · 0 评论 -
Mac下编译FFMPEG for Android
之前讲到了通过自定义的NDK交叉编译链来为编译FFMPEG做准备,自定义NDK编译工具链.编译环境操作系统:mac osNDK版本:android-ndk-r20编译器:clangFFMPEG版本:4.2.1编译脚本整理了一个编译环境的脚本build.sh在FFMPEG目录下#!/bin/sh# Android NDK sources and standalone tool...原创 2019-12-10 17:54:02 · 945 阅读 · 2 评论 -
自定义NDK交叉编译链(toolchain)
背景:在Mac下编译FFmpeg库时,看了比较多的教程基本都失败,偶然间发现NDK在去GCC化,需要通过交叉编译来完成编译,这里记录下NDK交叉编译链过程地址 https://developer.android.google.cn/ndk/guides/standalone_toolchain简单说交叉编译就是在A平台下编译B平台上可以使用的二进制库文件。环境操作系统:mac osn...原创 2019-12-10 17:03:15 · 1486 阅读 · 0 评论 -
Fresco DraweeView XML常用属性
Fresco DraweeView XML常用属性fresco:fadeDuration="300" // 淡出时间,毫秒。fresco:actualImageScaleType="focusCrop" // 等同于android:scaleType。fresco:placeholderImage="@color/wait_color" // 加载中…时显示的图。fresco:placeh...原创 2019-12-09 15:40:03 · 202 阅读 · 0 评论 -
JNI方式遍历HashMap
JNI方式遍历HashMapextern "C"extern "C"JNIEXPORT jstring JNICALLJava_com_wuba_housecommon_sign_SignUtil_sign0(JNIEnv *env, jobject params) { // 获取HashMap类entrySet()方法ID jclass hashmapClass = en...原创 2019-12-09 14:48:05 · 1433 阅读 · 0 评论 -
Android JNI开发 JAVA关联native C代码(Android.mk方式)
在build.gradle中添加如下代码通过该配置可直接通过android studio关联java代码和native c/c++代码并且调试native断点android { externalNativeBuild { ndkBuild { //android mk 所在的目录 path "src/main/jni/A...原创 2019-12-07 18:10:47 · 288 阅读 · 0 评论 -
Android已有工程接入Kotlin
前言随着kotlin的不断普及,已有项目中涉及到接入Kotlin并后续使用Kotlin开发的计划。1 添加依赖在最外层中添加对kotlin-gradle-plugin依赖buildscript { //增加 ext.kotlin_version = '1.3.31' repositories { google() jcenter()...原创 2019-12-07 15:22:13 · 764 阅读 · 0 评论 -
RecyclerView通用adapter封装
目的通过封装通用adapter精简以及更加快速的完成RecyclerView实现基类通过模板方法,定义adapter行为抽象绑定逻辑,绑定操作抽象在holder中holder点击事件设置,防止多次设置节约性能实现holder基类的实现抽象基础bindHolder模板方法通过bundle 传递额外参数固定方法入参package com.android.app.commonada...原创 2019-12-05 16:12:27 · 291 阅读 · 0 评论 -
RecyclerView实现 时间选择器 仿探探card 画廊 等效果
RVLayoutManager滚轮效果时间选择器PickerLayoutManager特点支持指定滚轮固定个数显示mPickerLayoutManager2 = new PickerLayoutManager(this, PickerLayoutManager.VERTICAL, false,3,0.4f,true);mRecyclerView2.setLayoutManager(m...原创 2019-10-10 15:10:55 · 828 阅读 · 0 评论 -
RecyclerView万能adapter封装(支持组件化)
项目中用到的最多的元素就是列表,在android中目前最流行了的当属RecylerView了。项目中也涉及到很多RecylerView替换Listview的场景。看过比较多对adapter封装的文章,总有些不太简洁。所以本文将介绍自己封装的高度解耦Adapter和viewholder。帮你快速高效生成一个万能列表。理念构造一个通用的Adapter,避免一个列表一个适配器,避免增加(viewT...原创 2019-10-10 11:28:13 · 640 阅读 · 0 评论 -
可折叠更多和收起的TextView
代码package com.test.plx.views;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.text.Layout;import...原创 2019-07-14 20:57:08 · 459 阅读 · 0 评论