# poplar-device
**Repository Path**: weberfeng_admin1/poplar-device
## Basic Information
- **Project Name**: poplar-device
- **Description**: 使用AOSP 源码编译Hi3798CV200 poplar ROM
- **Primary Language**: Android
- **License**: GPL-3.0
- **Default Branch**: android-12.0.0_r7
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2021-10-13
- **Last Updated**: 2024-10-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# poplar-device
- [简介](#section11660541593)
- [搭建构建环境](#section161941989596)
- [下载AOSP 源码](#section119744591305)
- [下载poplar相关代码](#section169045116126)
- [编译](#section169045116136)
- [烧写和启动](#section1371113476307)
## 简介
使用AOSP android-12.0.0_r7版本源码编译Hi3798CV200 poplar ROM
## 搭建构建环境
安装所需的软件包 (Ubuntu 18.04),需要64位版本的Ubuntu。
```
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
```
## 下载AOSP源码
下载 repo 工具:
```
mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo
```
初始化仓库:
```
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-12.0.0_r7
```
同步源码树:
```
repo sync
```
## 下载poplar相关代码
在AOSP android-12.0.0_r7 top 目录下:
```
rm -rf device/linaro (delete linaro directory)
git clone https://gitee.com/weberfeng_admin1/poplar-device.git device/linaro -b android-12.0.0_r7
```
## 修改AOSP源码并编译
1. 临时修改framework/base/keystore/java/android/security/KeyStore.java,解决system_server crash的问题,具体原因待查。
```
11-15 09:20:56.981 5462 5547 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: LockSettingsService
11-15 09:20:56.981 5462 5547 E AndroidRuntime: java.lang.AssertionError: 4
11-15 09:20:56.981 5462 5547 E AndroidRuntime: at android.security.KeyStore.state(KeyStore.java:68)
11-15 09:20:56.981 5462 5547 E AndroidRuntime: at com.android.server.locksettings.LockSettingsService.ensureProfileKeystoreUnlocked(LockSettingsService.java:742)
11-15 09:20:56.981 5462 5547 E AndroidRuntime: at com.android.server.locksettings.LockSettingsService.access$500(LockSettingsService.java:188)
11-15 09:20:56.981 5462 5547 E AndroidRuntime: at com.android.server.locksettings.LockSettingsService$1.run(LockSettingsService.java:760)
11-15 09:20:56.981 5462 5547 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:938)
11-15 09:20:56.981 5462 5547 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
11-15 09:20:56.981 5462 5547 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:201)
11-15 09:20:56.981 5462 5547 E AndroidRuntime: at android.os.Looper.loop(Looper.java:288)
11-15 09:20:56.981 5462 5547 E AndroidRuntime: at android.os.HandlerThread.run(HandlerThread.java:67)
11-15 09:20:56.981 5462 5547 E AndroidRuntime: at com.android.server.ServiceThread.run(ServiceThread.java:44)
diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java
index a9543443d3f4..2af10d8d7867 100644
--- a/keystore/java/android/security/KeyStore.java
+++ b/keystore/java/android/security/KeyStore.java
@@ -65,7 +65,8 @@ public class KeyStore {
case UserState.LSKF_LOCKED:
return KeyStore.State.LOCKED;
default:
- throw new AssertionError(userState);
+ //throw new AssertionError(userState);
+ return KeyStore.State.UNLOCKED;
}
}
```
2. 编译
```
source build/envsetup.sh
lunch lunch poplar-eng
make -j8
```
## 烧写和启动
```
将boot.img、cache.img、system.img、userdata.img和vendor.img拷贝到device/linaro/poplar-tools目录下
运行命令:
./poplar_recovery_builder.sh all -a -u
cp -r recovery udisk_directory
cp recovery/fastboot.bin udisk_directory
使用U盘启动poplar:
usb reset
fatload usb 0:1 ${scriptaddr} recovery_files/install.scr
source ${scriptaddr}
```
启动截图:


