ubuntu 20.04.4编译 继续尝试编译Android 12,13

2023-10-30

之前使用虚拟机编译过Android10,现在开始记录编译12,上次忘记给镜像了这次补上镜像ubuntu-20.04.4-desktop-amd64:

链接:https://pan.baidu.com/s/1REJ2cIJyqupLRQjN9SW08Q 
提取码:kezj

硬件虚拟机:硬盘先准备400G不知道够不够,内存方面google是推荐16G。。我这内存+交换空间希望能成功编译吧。(ps:内存不够,后面有教设置交换空间)

不知道为啥,repo使用的python指令?为python 建立软连接,自带了python3.8,并建立了python3软连接,我们直接就把python 也搞成python3

sudo ln -s /bin/python3 /bin/python

1、安装git 并配置好git

sudo apt-get install git

git config --global user.name "your name"
git config --global user.email "XXX@XXX.com"

2、下载repo并配置,创建一个目录,下载的repo和aosp源代码全部都在这里面

mkdir aosp
cd aosp

git clone https://aosp.tuna.tsinghua.edu.cn/git-repo/
chmod a+x git-repo/repo

添加repo 到环境变量
export PATH=~/aosp/git-repo:$PATH

3、初始化选择需要下载的Android版本

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

不知道选择哪一个版本的进入到.repo/manifests.git/ 查看有哪些分支,在做选择。

cd .repo/manifests.git/
git branch -a

我们直接选择一个最新的初始化, 

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-12.1.0_r8
repo sync -j4

下面就慢慢等吧。。等的过程我们在检查检查其他需要的东西。。

重新打开一个命令行,由于本人的机子内存不足,是分配了8G后面可能会出现内存不足无法编译的情况,这个时候需要设置交换空间,也就是虚拟内存!!上次编译Android10的时候是8G ,交换6G。。这次编译12估计要设置大一点儿了,机子好的自行忽略下面步骤。

 开始设置交换空间

如果第一步存在swapfile则需要先禁用
sudo swapoff /swapfile

修改swap 空间的大小为8G
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192

设置文件为“swap file”类型
sudo mkswap /swapfile

启用swapfile
sudo swapon /swapfile

4、 安装open-jdk

sudo apt-get install openjdk-8-jdk

5、安装依赖

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev (找不到)
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev(ubutun20也找不到,会被安装6,下面有解决办法)
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
sudo apt-get install libssl-dev

        特别注意:如遇到 libesd0-dev 找不到,执行下面的

sudo vi /etc/apt/sources.list  //在行尾添加下面这个源保存
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse

#安装libesd0-dev
sudo apt-get update && sudo apt-get install libesd0-dev

        方法一:关于编译时报 lib32ncurses5-dev的问题,这个包安装不上。在安装的时候发现要安装libncurses5-dev,但是我软件包都更新为最新版本的了,也就是libncurses5-dev 最新版本是6.2的,我查看了下/usr/lib/x86_64-linux-gnu  这个目录下的动态库,发现只有libncurses.so.6,这就是因为libncurses5-dev这个包太新了,已经更新到6.2了,所以没有libncurses.so.5,因为后面编译需要有libncurses.so.5,不然编译会报错,我想了下有两种方案:一种libncurses5-dev回退到5.9,但是其他也有可能有依赖,又因为libncurses.so.6依赖了libtinfo.so.6,所以干脆如下暴力处理

cd /usr/lib/x86_64-linux-gnu 
sudo cp libncurses.so.6 libncurses.so.5
sudo cp libtinfo.so.6 libtinfo.so.5

        方法二:这是从另外一篇文章看到的,可行

deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe


sudo apt install apt-file
sudo apt-file update
sudo apt-file find libncurses.so.5  #没有 这个文件在执行下面的。
sudo apt install libncurses5

6.1下载完毕后,就来编译Android 12吧。。cd到aosp目录,执行预编译脚本

. build/envsetup.sh

6.2 因为我确定我只使用x86的模拟器所以我直接使用!请使用下面指令,确认你需要使用的编译的版本,第一次执行lunch可能会等很久。


lunch    #一定要执行查看自己需要的版本。每次拉取的项目不同数字代表的版本就不一样。这次我机子差不多等了3分钟。Android10的时候 1分钟左右


lunch sdk_phone_x86_64  # Android 我是模拟器版本

You're building on Linux

Lunch menu... pick a combo:
     1. aosp_arm-eng
     2. aosp_arm64-eng
     3. aosp_barbet-userdebug
     4. aosp_blueline-userdebug
     5. aosp_blueline_car-userdebug
     6. aosp_bonito-userdebug
     7. aosp_bonito_car-userdebug
     8. aosp_bramble-userdebug
     9. aosp_bramble_car-userdebug
     10. aosp_car_arm-userdebug
     11. aosp_car_arm64-userdebug
     12. aosp_car_x86-userdebug
     13. aosp_car_x86_64-userdebug
     14. aosp_cf_arm64_auto-userdebug
     15. aosp_cf_arm64_phone-userdebug
     16. aosp_cf_x86_64_foldable-userdebug
     17. aosp_cf_x86_64_pc-userdebug
     18. aosp_cf_x86_64_phone-userdebug
     19. aosp_cf_x86_64_tv-userdebug
     20. aosp_cf_x86_auto-userdebug
     21. aosp_cf_x86_phone-userdebug
     22. aosp_cf_x86_tv-userdebug
     23. aosp_coral-userdebug
     24. aosp_coral_car-userdebug
     25. aosp_crosshatch-userdebug
     26. aosp_crosshatch_car-userdebug
     27. aosp_crosshatch_vf-userdebug
     28. aosp_flame-userdebug
     29. aosp_flame_car-userdebug
     30. aosp_oriole-userdebug
     31. aosp_oriole_car-userdebug
     32. aosp_raven-userdebug
     33. aosp_raven_car-userdebug
     34. aosp_redfin-userdebug
     35. aosp_redfin_car-userdebug
     36. aosp_redfin_vf-userdebug
     37. aosp_sargo-userdebug
     38. aosp_sargo_car-userdebug
     39. aosp_slider-userdebug
     40. aosp_sunfish-userdebug
     41. aosp_sunfish_car-userdebug
     42. aosp_trout_arm64-userdebug
     43. aosp_trout_x86-userdebug
     44. aosp_whitefin-userdebug
     45. aosp_x86-eng
     46. aosp_x86_64-eng
     47. arm_krait-eng
     48. arm_v7_v8-eng
     49. armv8-eng
     50. armv8_cortex_a55-eng
     51. armv8_kryo385-eng
     52. beagle_x15-userdebug
     53. beagle_x15_auto-userdebug
     54. car_ui_portrait-userdebug
     55. car_x86_64-userdebug
     56. db845c-userdebug
     57. fuchsia_arm64-eng
     58. fuchsia_x86_64-eng
     59. gsi_car_arm64-userdebug
     60. gsi_car_x86_64-userdebug
     61. hikey-userdebug
     62. hikey64_only-userdebug
     63. hikey960-userdebug
     64. hikey960_tv-userdebug
     65. hikey_tv-userdebug
     66. pixel3_mainline-userdebug
     67. poplar-eng
     68. poplar-user
     69. poplar-userdebug
     70. qemu_trusty_arm64-userdebug
     71. sdk_car_arm-userdebug
     72. sdk_car_arm64-userdebug
     73. sdk_car_portrait_x86_64-userdebug
     74. sdk_car_x86-userdebug
     75. sdk_car_x86_64-userdebug
     76. silvermont-eng
     77. uml-userdebug
     78. yukawa-userdebug
     79. yukawa_sei510-userdebug

arm64表示是使用arm64 cpu的设备,eng表示engineer版本,其直接开放了一些root等权限。当然直接使用lunch命令会列出所有可选的编译目标

6.3开始编译,-j参数取决你的cpu数量就行,我是双核双线程,应该是-j4 的,但是考虑到我要做其他的事情,我就使用make -j3

make -j3

         PS:中途肯定会报其他的错,自己百度解决吧。如果使用的我说的ubuntu版本的话,内存够的话,基本不会怎么报错。。这aosp  编译效果越来越好了还能实时看到编译的项目。(推荐16G哟。)如果因为内存问题编译不过。-j设置小点儿

期间编译出错了4,5次都是因为内存溢出了,不过没关系调整make -j1 继续编译几次就行了。

6.4 编译工作结束后,运行模拟器(机器每次重启后都需要重新执行  6.1和6.2 )

运行模拟器实际上需要四个组件

Linux Kernel
system.img
userdata.img
ramdisk.img

运行模拟器

emulator

成功点亮模拟器,Android12 跟编译 Android 10 还是稍微区别!!!一直有人问-j1 还报内存溢出,如果一直报错内存溢出的话,那就加内存吧。没办法了。。


如果你在使用lunch命令时选择的是aosp_arm-eng,那么在执行不带参数的emualtor命令时,Linux Kernel默认使用的是/source/prebuilds/qemu-kernel/arm/kernel-qemu目录下的kernel-qemu文件。而android镜像文件则是默认使用source/out/target/product/generic目录下的system.img、userdata.img和ramdisk.img,也就是我们刚刚编译出来的镜像文件。

这里写图片描述

上面我在使用lunch命令时选择的是aosp_arm64-eng,因此linux默认使用的/source/prebuilds/qemu-kernel/arm64/kernel-qemu下的kernel-qemu,而其他文件则是使用的source/out/target/product/generic64目录下的system.img、userdata.img和ramdisk.img。

在使用emulator命令后,正常的话,我们可以启动模拟器,我这里启动的模拟器信息如下

这里可以看出启动的是我们编译时指定的aosp_arm64-eng模拟器,实际上emulator还有很多其它指令可以选择,这个可以通过它的help命令来查看

emulator -help



7、单独编译模块及SDK
除了通过make命令编译可以整个android源码外,Google也为我们提供了相应的命令来支持单独模块的编译。

编译环境初始化(即执行. build/envsetup.sh)之后,我们可以得到一些有用的指令,除了上边用到的lunch,在envsetup.sh文件中我们还可以找到如下的指令

这里写图片描述

此外还有以下命令可以进行单编:

  • mmm:编译指定目录下的模块,不编译它所依赖的其它模块。
  • mma:编译当前目录下的模块及其依赖项。
  • mmma:编译指定路径下所有模块,并且包含依赖。

如果你修改了源码,想查看生成的APK文件,有两种方式:

  1. 通过adb push或者adb install 来安装APK。
  2. 使用make snod命令,重新生成 system.img,运行模拟器查看。
mmm packages/apps/StorageManager/


稍等一会之后,如果提示编译完成,此时便可在out/target/product/gereric_arm64/system/priv-app就可以找到编译的StorageManager.apk文件了。

这里写图片描述
编译好指定模块后,如果我们想要将该模块对应的apk集成到系统镜像中,需要借助make snod指令重新打包系统镜像,这样我们新生成的system.img中就包含了刚才编译的Launcher2模块了,重启模拟器之后生效。

我们在不断的修改某些模块,总不能每次编译完成后都要重新打包system.img,然后重启手机吧?有没有什么简单的方法呢?
在编译完后,借助adb install命令直接将生成的apk文件安装到设备上即可,相比使用make snod,会节省很多时间。

直接执行make是不包括make sdk的,如果要编译自己的sdk则十分简单,只需要执行如下命令便可

. build/envsetup.sh
lunch sdk-eng
make sdk


如果编译成功,不出意外,在out/host/linux-x86/sdk就可以看到了。
补充
我们简单的来介绍out/target/product/generic_arm64/system目录下的常用目录:
Android系统自带的apk文件都在out/target/product/generic_arm64/system/priv-app目录下
一些可执行文件(比如C编译的执行),放在out/target/product/generic_arm64/system/bin目录下
动态链接库放在out/target/product/generic_arm64/system/lib目录下
硬件抽象层文件都放在out/targer/product/generic_arm64/system/lib/hw目录下

这里需要注意的就是由于我们这里编译的是aosp_arm64-eng编译目标,所以这里的路径中是generic_arm64,如果是编译的其它目标路径可能不一样,比如当编译的是aosp_arm-eng时,则路径中就是generic。

grep -rn 'xxxx' 路径   搜索内容

因为网络或者某些原因导致的无法同步的话,并且以下错误可以执行

Error: leaving XXXX; does not track upstream.

git abandon branchName;

repo forall -c git reset HEAD --hard;repo forall -c git clean -df;repo sync -c -j4
# 将HEAD强制指向manifest的库,而忽略本地的改动。
repo sync -d

# Remove all working directory (and staged) changes.
repo forall -c 'git reset --hard'   

# Clean untracked files
repo forall -c 'git clean -f -d'   

# 拉代码
repo sync -c

查看文献:

Ubantu18.04环境下编译android源码_小草的胖冬瓜的博客-CSDN博客_android源码编译

Android源码编译命令汇总

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu 20.04.4编译 继续尝试编译Android 12,13 的相关文章

  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • 无法获取log.d或输出Robolectrict + gradle

    有没有人能够将 System out 或 Log d 跟踪从 robolectric 测试输出到 gradle 控制台 我在用Robolectric Gradle 测试插件 https github com robolectric robo
  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • 当文本输入聚焦在 React Native for Android 的底部工作表上时,视图移出屏幕

    我正在使用图书馆 https github com osdnk react native reanimated bottom sheet https github com osdnk react native reanimated bott
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • Android向menuItem添加子菜单,addSubMenu()在哪里?

    我想根据我的参数以编程方式将 OptionsMenu 内的子菜单添加到 menuItem 中 我检查了android sdk中的 MenuItem 没有addSubMenu 方法 尽管你可以找到 hasSubMenu 和 getSubMen
  • 如何确定对手机号码的呼叫是本地呼叫还是 STD 或 ISD

    我正在为 Android 开发某种应用程序 但不知道如何获取被叫号码是本地或 STD 的号码的数据 即手机号码检查器等应用程序从哪里获取数据 注意 我说的是手机号码 而不是固定电话 固定电话号码 你得到的数字是字符串类型 因此 您可以获取号

随机推荐

  • element中对el-input 自定义验证规则

    element中对el input 自定义验证规则 首先明确要使自定义校验生效的话 必须 prop 和 rules 的 键对应 如示例 prop description 在 rules 中有对应的键
  • git连接不到远程ssh,解决Unable to negotiate with **** port 22: no matching host key type found. Their offer:

    使用git链接远程push时ssh方式出错 连接失败 解决方法如下 参考文章 记一次使用git报错 解决Unable to negotiate with port 22 no matching host key type found The
  • 【python 6】Numpy

    文章目录 一 创建ndarry 1 使用 np array 由 python list 创建 2 使用np的常规函数创建 二 ndarry 的属性 三 ndarry 的基本操作 四 ndarry 的矩阵操作 Numpy 是python的数值
  • 问题1:VS2017:找不到 Windows SDK 版本10.0.17134.0

    我电脑的VS版本 1 问题1 找不到 Windows SDK 版本10 0 17134 0 请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择 重定解决方案目标 来更改 SDK 版本 2 出现问题的过
  • 数据结构之---C语言实现拓扑排序AOV图

    有向图的拓扑排序 杨鑫 include
  • React TypeScript

    1 安装 就像安装其他插件库一样 在项目文件夹下执行 npm install antd save 如果你安装了 yarn 也可以执行 yarn add antd 2 引用 import Button Tooltip from antd im
  • window下C语言中strtok函数的使用

    基础知识 原型 char strtok char str const char delim 功能 分解字符串为一组字符串 参数说明 str为要分解的字符串 delim为分隔符字符串 其中 str 不能用指针来存储 因为这个方法的本质是 找到
  • IOS 使用自定义View实现圆形布局(Swift)

    前面写过用安卓实现 还是同个需求 只不过现在需要做苹果版本 网上搜到了类似的案列点击打开链接只不过他的是用UICollectionView 跟我的需求有点不符合 没有搜到完全符合的案例 没办法自己写个 记录一下 也给有同种需求的童鞋填个坑
  • C#泛型List删除多个元素的方法

    泛型List如果删除一个 很简单 直接 RemoveAt index 即可 但如果有多个元素 那么删除起来并不是特别简单 需要使用 for 循环的倒叙删除 例子如下 class Program public class Students p
  • windows10安装linux环境

    Windows里玩转Linux 目标 一般的做法 神仙般的做法 可能会遇到的问题 目标 想要在windows里玩转linux 一般的做法 在windows里安装vmware或virtual box 新建一个虚拟机 在虚拟机里通过iso安装l
  • Python ttkbootstrap 制作账户注册信息界面

    前言 ttkbootstrap 是一个基于 tkinter 的界面美化库 使用这个工具可以开发出类似前端 bootstrap 风格的 tkinter 桌面程序 ttkbootstrap 不仅有丰富的案例 同时还有完善的官方文档 可惜是英文的
  • 宽高都200px的div在浏览器窗口居中(水平垂直都居中)

    1 fixed 从中间移动定位 position fixed width 200px height 200px left 50 top 50 margin left 100px margin top 100px 第一行设置完 盒子的左上角的
  • 国茂股份全面迁移到亚马逊云科技,降本增效,驱动业务增长

    亚马逊云科技宣布 中国通用机械工业减速机行业的标杆企业江苏国茂股份有限公司 简称 国茂股份 正在全面迁移到亚马逊云科技 在中国大陆 西云数据运营宁夏区域 光环新网运营北京区域 将ERP 企业资源计划系统 APS 高级计划与排程系统 MES
  • Docker安装使用阿里云镜像

    registry mirrors https kfwkfulq mirror aliyuncs com https 2lqq34jg mirror aliyuncs com https pee6w651 mirror aliyuncs co
  • 【满分】【华为OD机试真题2023 JS】最小的调整次数

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 最小的调整次数 知识点队列栈 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 有一个特异性的双端队列 该队列可以从头部或尾部添加数据 但是只能从头部移出数据 小A
  • dns服务器响应 异常,DNS云学堂|快速定位DNS解析异常问题,牢记这四种DNS状态码...

    DNS的状态码在进行故障排查的时候起着至关重要的作用 在DNS的维护中会经常遇到DNS解析异常问题 通过DNS的状态码可以初步判断DNS解析的异常问题 本期云学堂通过详解DNS状态码的定义 给出常见状态码的场景举例 enjoy 写在前面 本
  • (一)Matlab三日基础入门——矩阵和数组

    目录 创建数组 方式一 直接创建 方式二 调函数创建 zeros 功能 创建由0组成的数组 ones 功能 创建由1组成的数组 rand 功能 创建 0 1 之间均匀分布的随机数生成的数组 矩阵和数组运算 单一运算符 转置 行列互换 计算矩
  • [leetcode]刷题--关于位运算的几道题

    1 位运算的本质 其实是对二进制补码储存形式的修改 位运算常见的运算符为 lt lt 左移n个位置 算数移位 符号位不变 gt gt 右移动n个位置 采用直接丢弃末尾数字的方法 符号位不变 移位都是算数移位 按位取反 对于包括符号位在内全部
  • 两种公钥加密算法——Merkle-Hellman背包、RSA

    今天看了一些加密体制 很厉害 佩服之余顺便总结下公钥 对称密钥很多啊 历史比较有名的有DES AES RC系列 水平不够说不清楚 所以不写了 自己以后也要看 所以尽量通俗易懂 其实是不怎么会很官方很学术 顺道说 明天就七夕了 我还在搞些啥跟
  • ubuntu 20.04.4编译 继续尝试编译Android 12,13

    之前使用虚拟机编译过Android10 现在开始记录编译12 上次忘记给镜像了这次补上镜像ubuntu 20 04 4 desktop amd64 链接 https pan baidu com s 1REJ2cIJyqupLRQjN9SW0