利用源生Launcher开发定制Home

2024-02-22 00:38

本文主要是介绍利用源生Launcher开发定制Home,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.将所有的com.android.launcher3修改为com.demo.launcher

linux环境下可以批量修改,命令如下:
sed -i “s/com.android.launcher3/com.demo.launcher/g” grep com.android.launcher3 -rl Launcher3

2.新建Android Studio工程,新建library,将Launcher3的源码拷贝到library中。具体拷贝目录到:library\src\main目录下。

3.需要配置library的build.gradle

apply plugin: 'com.android.library'
apply plugin: 'com.google.protobuf'android {compileSdkVersion 28buildToolsVersion "29.0.2"defaultConfig {minSdkVersion 28targetSdkVersion 28versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}sourceSets {main.java.srcDirs += 'src/main/src'main.java.srcDirs += 'src/main/src_flags'main.java.srcDirs += 'src/main/protos'main.java.srcDirs += 'src/main/src_ui_overrides'main.proto.srcDirs += 'src/main/proto_overrides'main.proto.srcDirs += 'src/main/protos'main.res.srcDirs += 'src/main/res'}compileOptions {sourceCompatibility = '1.8'targetCompatibility = '1.8'}
}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.android.support:appcompat-v7:28.0.0'testImplementation 'junit:junit:4.13'androidTestImplementation 'com.android.support.test:runner:1.0.2'androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'implementation 'com.android.support:support-v4:28.0.0'implementation 'com.google.protobuf:protobuf-java:3.11.4'implementation 'com.google.protobuf.nano:protobuf-javanano:3.2.0rc2'implementation 'com.android.support:support-dynamic-animation:28.0.0'implementation 'com.android.support:recyclerview-v7:28.0.0'
}protobuf {protoc {artifact = 'com.google.protobuf:protoc:3.1.0'}generateProtoTasks {all().each { task ->task.builtins {remove java}task.builtins {java {}// Add cpp output without any option.// DO NOT omit the braces if you want this builtin to be added.cpp {}}}}generatedFilesBaseDir = "$projectDir/src/generated"
}

这里面需要注意的俩个地方:
1.使用sourceSets添加src目录和res目录。这样编译才能链接进去。
2.使用protobuf插件和简本,编译protobuf相关源码。

4.工程目录的build.gradle,也需要增加protobuf的classpath,如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {google()maven { url 'https://maven.google.com' }jcenter()}dependencies {classpath 'com.android.tools.build:gradle:3.6.2'classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
}allprojects {repositories {google()jcenter()}
}task clean(type: Delete) {delete rootProject.buildDir
}

5.需要在android系统源码中拷贝nano相关的源码

编译报错找不到:import com.demo.launcher.userevent.nano.LauncherLogProto.ControlType;

在系统源码中搜索:

find / -name "LauncherLogProto.java"

搜索结果:

/home/CD/sunxiaolin/work/ac_cgn_ga2/out/target/common/obj/JAVA_LIBRARIES/LauncherCommonDepsLib2_intermediates/proto/src/com/demo/launcher/userevent/nano/LauncherLogProto.java

将proto该目录下的文件全部拷贝到Android Studio工程library目录main/protos目录下。

6.在你的工程中,AndroidManifest.xml中加入需要引用的Launcher文件和权限,注意只能在application中添加,library中添加无效。


                                    

这篇关于利用源生Launcher开发定制Home的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/733591

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问