edyang

我干了什么 究竟拿了时间换了什么
技术分享时间线软件开发、设备接入、视觉与运维实践

Android 发布:调试包与正式签名包的区别

调试安装没问题,替换正式包却失败,可能是签名身份不一致。

调试安装没问题,替换正式包却失败,可能是签名身份不一致。应用升级依赖稳定发布身份。 本文使用Android Studio 2.3、JDK 8、Gradle 3.3、Android Gradle Plugin 2.3.0,compileSdk 25。演示应用使用 Java 与传统 Activity,不使用 AndroidX、后来的 Jetpack 组件或新版本插件 DSL。工具版本、编译 S...

Android 小应用实作:从列表、编辑到本地保存闭环

把控件分别跑通之后,需要一个完整用户任务来验证应用是否真正可用。

把控件分别跑通之后,需要一个完整用户任务来验证应用是否真正可用。这里用匿名笔记工具串起开发链路。 本文使用Android Studio 2.3、JDK 8、Gradle 3.3、Android Gradle Plugin 2.3.0,compileSdk 25。演示应用使用 Java 与传统 Activity,不使用 AndroidX、后来的 Jetpack 组件或新版本插件 DSL。工具...

Android 权限:清单声明与运行时授权分别处理

清单已经写了权限,功能仍然被拒绝,可能是运行系统与目标 SDK 采用了运行时授权机制。

清单已经写了权限,功能仍然被拒绝,可能是运行系统与目标 SDK 采用了运行时授权机制。 本文使用Android Studio 2.3、JDK 8、Gradle 3.3、Android Gradle Plugin 2.3.0,compileSdk 25。演示应用使用 Java 与传统 Activity,不使用 AndroidX、后来的 Jetpack 组件或新版本插件 DSL。工具版本、编译...

Android 本地存储:SQLite 建表与版本升级

应用升级后本地表结构改变,直接删库重建会丢掉用户数据。

应用升级后本地表结构改变,直接删库重建会丢掉用户数据。升级需要有明确迁移路径。 本文使用Android Studio 2.3、JDK 8、Gradle 3.3、Android Gradle Plugin 2.3.0,compileSdk 25。演示应用使用 Java 与传统 Activity,不使用 AndroidX、后来的 Jetpack 组件或新版本插件 DSL。工具版本、编译 SDK...

Android 网络:请求放到后台,结果回到有效界面

界面卡住或抛网络线程异常,说明请求执行位置需要与 UI 更新位置分开。

界面卡住或抛网络线程异常,说明请求执行位置需要与 UI 更新位置分开。 本文使用Android Studio 2.3、JDK 8、Gradle 3.3、Android Gradle Plugin 2.3.0,compileSdk 25。演示应用使用 Java 与传统 Activity,不使用 AndroidX、后来的 Jetpack 组件或新版本插件 DSL。工具版本、编译 SDK 与运行...

Android 列表:RecyclerView 复用时必须重绑完整状态

快速滚动后某行出现别人的勾选或图片,通常是复用视图残留了旧状态。

快速滚动后某行出现别人的勾选或图片,通常是复用视图残留了旧状态。 本文使用Android Studio 2.3、JDK 8、Gradle 3.3、Android Gradle Plugin 2.3.0,compileSdk 25。演示应用使用 Java 与传统 Activity,不使用 AndroidX、后来的 Jetpack 组件或新版本插件 DSL。工具版本、编译 SDK 与运行设备版...

Android 界面:dp、sp 与真实像素分开设计

同一像素宽度在不同手机上显示大小不同。

同一像素宽度在不同手机上显示大小不同。布局需要考虑密度和用户字体设置。 本文使用Android Studio 2.3、JDK 8、Gradle 3.3、Android Gradle Plugin 2.3.0,compileSdk 25。演示应用使用 Java 与传统 Activity,不使用 AndroidX、后来的 Jetpack 组件或新版本插件 DSL。工具版本、编译 SDK 与运行...

Android 深入:旋转屏幕后为什么重新创建页面

旋转后输入消失,不一定是控件保存失效,而是页面经历了重新创建。

旋转后输入消失,不一定是控件保存失效,而是页面经历了重新创建。 本文使用Android Studio 2.3、JDK 8、Gradle 3.3、Android Gradle Plugin 2.3.0,compileSdk 25。演示应用使用 Java 与传统 Activity,不使用 AndroidX、后来的 Jetpack 组件或新版本插件 DSL。工具版本、编译 SDK 与运行设备版本...

Android 从零到应用:让第一个 Activity 真正在设备运行

编辑器能预览布局,不代表 APK 已安装,更不代表启动入口配置正确。

编辑器能预览布局,不代表 APK 已安装,更不代表启动入口配置正确。 本文使用Android Studio 2.3、JDK 8、Gradle 3.3、Android Gradle Plugin 2.3.0,compileSdk 25。演示应用使用 Java 与传统 Activity,不使用 AndroidX、后来的 Jetpack 组件或新版本插件 DSL。工具版本、编译 SDK 与运行设...

Android 工程结构:模块、Manifest 和资源目录

找不到入口页面、资源引用失败或依赖没有生效,常常是修改了错误层级的文件。

找不到入口页面、资源引用失败或依赖没有生效,常常是修改了错误层级的文件。 本文使用Android Studio 2.3、JDK 8、Gradle 3.3、Android Gradle Plugin 2.3.0,compileSdk 25。演示应用使用 Java 与传统 Activity,不使用 AndroidX、后来的 Jetpack 组件或新版本插件 DSL。工具版本、编译 SDK 与运...