android 4.0 如何编译launcher2,android studio 导入 Launcher2 模块,并编译运行

AS 版本:2.3.3

aosp 版本: 4.4 (已经编译过)

launcher 目录: .../packages/apps/ 下的 Launcher2 文件夹

详细步骤:

1. 在 AS 中 新建一个项目:LauncherTest

2.在 项目中 新增一个 Module : launcher22

3. 将 源码 Launcher2 文件夹 中的 AndroidManifest.xml 复制并替换掉 launcher22 中的 AndroidManifest.xml.

4.将 源码 res 目录 复制 并 替换掉 launcher22 中的 res 目录.

5.复制 源码 src 目录下的 所有文件 放到 launcher22 中的 java 目录下.

操作完上述步骤后 AS 结构如下:

67c80db31b6bed11e4f89ad6bfcd9b4b.png

6.修改 API 版本为 19:

f155e82f9dfef38de07e1dae6482edae.png

7.点击 build -> Clean Project 或者

3929427ecd65fed1785e70c85922cd13.png 会出现一些错误信息,解决掉错误信息就可以运行了:

1).错误1:

Error:Execution failed for task ':launcher33:mergeDebugResources'.

> D:...src\main\res\values\strings.xml: Error: Unsupported type 'add-resource'

解决办法:

将strings文件中  :

替换为

dimens文件中 :

替换为

0dp

0dp

0dp

2).错误2:

D:...\src\main\AndroidManifest.xml:25:5-47 Error:

Invalid value for attribute permission#com.android.launcher3.permission.PRELOAD_WORKSPACE@protectionLevel at AndroidManifest.xml:25:5-47, value=(system|signature), acceptable values are (normal,dangerous,signature,signatureOrSystem)

解决办法:

将 文件中:

android:protectionLevel="system|signature"

修改为 :

android:protectionLevel="signature"

3).错误3:

D:...\build\intermediates\res\merged\debug\values\values.xml

Error:(156) Attribute "title" already defined with incompatible format.

Error:(6) Original attribute defined here.

Error:(156) Attribute "title" already defined with incompatible format.

Error:(6) Original attribute defined here.

解决办法:

打开 launcher22 中的 build.gradle 文件,

删除  compile 'com.android.support:appcompat-v7:26.+'

4).错误4:

D:...\LauncherTest\launcher22\src\main\java\com\android\launcher2\Launcher.java

Error:(96, 26) 错误: 程序包com.android.common不存在

Error:(1625, 37) 错误: 找不到符号

符号:   变量 Search

位置: 类 Launcher

解决办法:

进入 编译过的源码目录:/out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/

将 classes.jar 文件 复制到 AS 的 libs 文件夹下(如果没有就创建一个)

并将其名称修改为 android_common.jar .

5).错误5:

AAPT err(Facade for 1848697531): libpng error: Not a PNG file

解决办法:

在 模块的 build.gradle 中 添加 :

android {

...

aaptOptions {

cruncherEnabled = false

}

...

}

6).错误6:

17ccdba4818f7629d053e312035d0395.png

解决办法:

将 xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"

替换为 :

xmlns:launcher="http://schemas.android.com/apk/res-auto"

8.不出意外的话,现在重新 点击 build -> Clean Project 或者

3929427ecd65fed1785e70c85922cd13.png  就可以编译成功了.

9.现在点击运行可能会显示如下错误:

ae7a0ceb3027ef38baed4c90b2fc4ba2.png

解决办法:

找到 模块的 AndroidManifest.xml 文件,

android:name="com.android.launcher2.Launcher"

android:clearTaskOnLaunch="true"

android:launchMode="singleTask"

android:screenOrientation="nosensor"

android:stateNotNeeded="true"

android:theme="@style/Theme"

android:windowSoftInputMode="adjustPan">

// 加上这句

10.安装APK时可能会出现如下错误:

45289f4a676c635310ca750e000c986d.png

解决办法:

找到 模块的 AndroidManifest.xml 文件,

修改其对应的报错的权限的名称即可,

图上是 com.android.launcher.permission.WRITE_SETTINGS 报错,

修改为:

android:name="com.android.launcher.permission.WRITE_SETTINGS_22"

android:description="@string/permdesc_write_settings"

android:label="@string/permlab_write_settings"

android:permissionGroup="android.permission-group.SYSTEM_TOOLS"

android:protectionLevel="normal" />

github地址 : https://github.com/QQQQQQY/Launcher2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值