注册网站域名多少钱一年,app开发 网站建设,用dreamware制作网页,成都市建管平台背景是github上下载的工程#xff0c;说明仅支持bazel编译#xff0c;折腾了一天Android studio#xff0c;失败。 不得不尝试单价bazel编译环境#xff0c;并不复杂#xff0c;过程记录如下 说明#xff1a;ubuntu环境是20.04#xff0c;pve虚拟机安装 1.安装jdk
sudo…背景是github上下载的工程说明仅支持bazel编译折腾了一天Android studio失败。 不得不尝试单价bazel编译环境并不复杂过程记录如下 说明ubuntu环境是20.04pve虚拟机安装 1.安装jdk
sudo apt install openjdk-11-jdk 2.下载安装Android Studio
Google网站下载linux上的二进制包也可以apt安装前者定制方便些
下载地址下载 Android Studio 和应用工具 - Android 开发者 | Android Developers 为了方便描述加速下载目录是用户根目录即$HOME
cd ~
tar -xvf android-studio-*.tar.gz
运行
cd ~/android-studio/bin
./studio.sh
随后的界面与Windows上没什么区别我是ssh登录的居然也可以图形交互运行过程会下载安装android sdk这个是最主要的google不让单独下载android sdk了没办法。 记录下默认的sdk目录~/Android/Sdk/ 3.编译bazel
出于某些考虑没有安装最新版本挑了个中间点的版本。例如4.2.2
下载地址https://github.com/bazelbuild/bazel/releases/download/4.2.2/bazel-4.2.2-dist.zip
解压编译
unzip bazel-4.2.2-dist.zip
sudo ./compile.sh
编译过程出现了python报错做个软链接解决
ERROR: /mnt/sdb/code/05_AS/src/BUILD:319:9: Executing genrule //src:embedded_tools_nojdk failed: (Exit 127): bash failed: error executing command(cd /tmp/bazel_SpFJt8tb/out/execroot/io_bazel \exec env - \PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin \/bin/bash -c source external/bazel_tools/tools/genrule/genrule-setup.sh; bazel-out/host/bin/src/create_embedded_tools bazel-out/k8-opt/bin/src/embedded_tools_nojdk.zip bazel-out/k8-opt/bin/src/embedded_tools_nojdk.params)
Execution platform: //:default_host_platform
/usr/bin/env: python: No such file or directory
Target //src:bazel_nojdk failed to build
INFO: Elapsed time: 398.790s, Critical Path: 53.56s
INFO: 1055 processes: 31 internal, 1024 local.
FAILED: Build did NOT complete successfully
原因是/usr/bin目录下找不到python加软连接
ln -s /usr/bin/python3.8 /usr/bin/python
编译ok后把out目录的编译结果拷贝到/usr/bin
cp ./output/bazel /usr/bin
chmod 777 /usr/bin/bazel 4. 编译Android 工程
在下载好的Android工程下执行
bazel build testdpc
报错
obanapve-ubt20:/mnt/sdb/code/03_github/android-testdpc$ bazel build testdpc
Extracting Bazel installation...
Starting local Bazel server and connecting to it...
ERROR: While resolving toolchains for target //:testdpc: no matching toolchains found for types bazel_tools//tools/android:sdk_toolchain_type
ERROR: Analysis of target //:testdpc failed; build aborted: no matching toolchains found for types bazel_tools//tools/android:sdk_toolchain_type
INFO: Elapsed time: 20.400s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (12 packages loaded, 19 targets configured)
原因是没有加入android sdk环境变量
export ANDROID_HOME$HOME/Android/Sdk/
后续编译方便可以把这行加入~/.bashrc 接着下一个报错
obanapve-ubt20:/mnt/sdb/code/03_github/android-testdpc$ bazel build testdpc
INFO: Analyzed target //:testdpc (30 packages loaded, 1164 targets configured).
INFO: Found 1 target...
ERROR: /home/obana/.cache/bazel/_bazel_obana/f87dd64c2bc0bae87f9a70b466547b28/external/androidsdk/BUILD.bazel:13:25: Extracting interface androidsdk//:dx_jar_import failed: missing input file external/androidsdk/build-tools/34.0.0/lib/dx.jar, owner: androidsdk//:build-tools/34.0.0/lib/dx.jar
Target //:testdpc failed to build
Use --verbose_failures to see the command lines of failed build steps.
ERROR: /home/obana/.cache/bazel/_bazel_obana/f87dd64c2bc0bae87f9a70b466547b28/external/androidsdk/BUILD.bazel:13:25 Extracting interface androidsdk//:dx_jar_import failed: 1 input file(s) do not exist
INFO: Elapsed time: 430.708s, Critical Path: 1.62s
INFO: 29 processes: 27 internal, 2 linux-sandbox.
FAILED: Build did NOT complete successfully这个错误很多同学应该熟悉解决方案很简单打开Android Studio下载32版本的build tool然后切换到32版本。 修改项目根目录下的WORKSPACE文件
android_sdk_repository(name androidsdk,api_level 34,build_tools_version 32.0.0,
)也有一种改法就是仿照windows上处理。
cp ~/Android/Sdk/build-tools/34.0.0/d8 ~/Android/Sdk/build-tools/34.0.0/dx
cp ~/Android/Sdk/build-tools/34.0.0/lib/d8.jar ~/Android/Sdk/build-tools/34.0.0/lib/dx.jar 我也在stackoverflow上找到如下方法不知道改哪放弃上述方法更通用些
# Enable d8 merger
build --defineandroid_dexmerger_toold8_dexmerger# Flags for the d8 dexer
build --defineandroid_incremental_dexing_toold8_dexbuilder
build --defineandroid_standalone_dexing_toold8_compat_dx
build --nouse_workers_with_dexbuilder 5.运行APP
编译成功后可以用下命令运行APP可以连物理机也可以avd运行 bazel mobile-install //android:android 教程结束enjoy 附官方文档地址Build Tutorial - Android - Bazel 0.20.0