在 AOSP 开发中,make otapackage命令是否可以像make命令一样执行所有操作并另外创建 .zip 文件?我问的原因是因为现在为了 makeotapackage我首先执行makeand then make otapackage,我想知道第一个 make 是否是不必要的?
我找到了一些帖子,但我不能 100% 确定我是否理解。
\n\nhttp://xda-university.com/as-a-developer/getting-started-building-android-from-source
\n\n\n\n运行 \xe2\x80\x9cmake\xe2\x80\x9d 将生成一个基本的、基于映像的构建,该构建不容易刷新到设备。您可能希望构建一个可闪存的 update.zip 样式文件,以便可以轻松安装到设备上。为此,请使用命令 \xe2\x80\x9cmake otapackage\xe2\x80\x9d(对于 CyanogenMod\n ROM,则使用 \xe2\x80\x9cmake bacon\xe2\x80\x9d)。
\n
我的 bitbucket ssh 网址:
git@bitbucket.org:MY_USERNAME/PROJECT_NAME.git
.repo/local_manifests/manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="my_remote" fetch="git@bitbucket.org:MY_USERNAME/" />
<project path="packages/apps/PROJECT_NAME" name="PROJECT_NAME" remote="my_remote" revision="master" />
</manifest>
Run Code Online (Sandbox Code Playgroud)
我收到此错误后repo sync:
Fetching projects: 99% (409/413) fatal: remote error: Git repository not found
error: Cannot fetch PROJECT_NAME
error: Exited sync due to fetch errors
Run Code Online (Sandbox Code Playgroud)
我拥有读/写 bitbucket 存储库的所有权利。
假设一个应用程序进程由 zygote 启动,PID 为 1234。当应用程序启动时,PID:1234 分叉另一个进程,例如 PID:1300。当我退出应用程序时,PID:1234 被信号 9 (SIGKILL )。PID: 1300 随后成为孤儿进程并被 init 进程 (PID: 1) 采用。很快,libprocessgroup 也会触发并杀死 PID:1300(作为 PID:1234 的进程组的一部分)。这是如何触发的?换句话说,libprocessgroup 何时突然介入以清理剩余进程?
我希望分发自定义 API,并且知道这些类将在运行时可用。我希望我的公共和受保护的方法/类包含在我可以分发的 jar 中,但我不需要任何其他源代码,并且如果实际执行该 jar 代码,我想抛出异常。
当您尝试直接执行 jar 时,这正是 Android 框架 jar 的行为。
我的问题是如何从我的源创建相同的 jar,而无需手动检查和创建每个存根方法。我希望它能够随着我的 API 的增长而扩展。
AOSP 现在有了新的构建系统,文件在很多地方都Android.bp被替换了Android.mk。
现在我想根据平台有条件地列出源文件。
说这样的话:
if(atom)
{
src: [
.......list of files.......
],
exclude_srcs: [
.......list of files.......
]
} else
{
src: [
.......list of files.......
],
exclude_srcs: [
.......list of files.......
]
}
Run Code Online (Sandbox Code Playgroud)
有什么建议如何实现这一目标?另外,如何在条件中实现诸如 等逻辑NOT运算OR?
提前致谢。
我多次尝试为我的设备获取 CM(现为 Lineageos)13/14.1 版本,该设备是带有 EMUI 3.0(Kit Kat 4.4.4)的华为 Mediapad T1-A21W(代号:hwt1a21l),但我由于以下原因受到限制:
基本上,从一开始就绝对是零开发或基础,所以我必须制作设备树并提取供应商 blob 才能实现我想要的。幸运的是我从华为网站下载了内核源代码。
好吧,关于设备树:
经过大量搜索和设置后,我创建了一个设备树,但我不明白的是,当我将我的(这个)与另一个我知道它功能齐全的设备进行比较时,例如我的 OnePlus One 中的这个,第二个一个(OnePlus One)它有大量我的没有的文件和目录,所以我不明白它们来自哪里。另外我不太明白一些参数来自哪里,例如,OnePlus One 的 BoardConfig.mk 有大量我的没有的目标(不确定是否是这样调用的,target=parameters)。
也许将 OnePlus 与华为进行比较不是最好的主意,因为它们来自不同的品牌,但无论如何,我之前解释的内容都可以应用于与我的类似设备(荣耀 4X 代号:cherry),这与我的设备几乎相同设备在硬件方面,它们具有相同的CPU和主板。(由于缺乏声誉而无法链接)。
关于供应商 blob:
我尝试遵循许多解释如何获取供应商 blob 的指南。虽然其中 90% 基于现有的供应商 blob,但我发现的其他文件基于名为extract-files.sh的脚本,该脚本应该位于device_vendor_codename中,并根据以下内容自动提取供应商文件另一个名为propietary-files.txt的文件。问题是我的设备路径(device_huawei_hwt1a21l)中没有 extract-files.sh 和 propietary-files.txt 文件,我不知道如何获取它们。该脚本不是问题,因为我可以下载一个脚本并轻松地将其适应我的设备,但最大的问题是要提取的特定供应商文件(propietary-files.txt),这是我无法控制的。
我们的 Android 服务使用 HIDL 服务与我们的驱动程序/硬件交互,但在长时间运行期间,我们看到很多这样的打印“binder 线程池(1 个线程)饥饿 xxx 毫秒”,时间为 120ms < xxx > 310ms。一段时间后,我们看到从 HIDL 服务复制的内存是错误地址,当我们访问它时会给出 SIGSEGV。线程池饥饿和内存损坏是否相关?有人见过类似的问题吗?这是 Android O 预览版。
multithreading android android-source android-os-handler android-8.0-oreo
我在自定义设备上运行 android 7.1.1,并使用从“userdebug”配置中的源代码编译的 AOSP,该配置提供 root 访问和调试。
我可以使用 Android 设备桥连接到设备。
adb root
adb shell
device_name:/ # su
Run Code Online (Sandbox Code Playgroud)
所有这些命令都工作正常,我可以作为超级用户进行更改。我遇到的问题是从应用程序运行相同的“su”命令
Java.Lang.Process suProcess = Runtime.GetRuntime().Exec("su");
Run Code Online (Sandbox Code Playgroud)
我收到的错误是:
Java.IO.IOException:无法运行程序“su”:错误= 13,权限被拒绝
adb root/shell su 命令和从应用程序内运行的命令之间有区别吗?
我是 android 构建系统的新手,在 MAC 操作系统中构建时遇到以下错误。请帮助我使构建成功。
In file included from external/libcxx/src/any.cpp:10:
In file included from external/libcxx/include/experimental/any:84:
external/libcxx/include/cstdlib:167:44: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY long abs( long __x) _NOEXCEPT {return labs(__x);}
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/stdlib.h:115:44: note: target of using declaration
inline _LIBCPP_INLINE_VISIBILITY long abs( long __x) _NOEXCEPT
{return labs(__x);}
^
external/libcxx/include/cstdlib:135:9: note: using declaration
using ::abs;
^
external/libcxx/include/cstdlib:169:44: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT …Run Code Online (Sandbox Code Playgroud) 我正在学习 AOSP 构建系统,特别是如何添加新设备。
我在默认的 full-eng 配置上构建 android-6.0.1_r46 Marshmallo 并在模拟器上运行它。它工作正常。
但是,当我尝试在源树中添加自定义设备(如 /device/my_company/my_product/)而不是成功构建并在模拟器上运行它时 - 模拟器只是挂起并显示黑屏。根本没有加载。
我怎样才能让模拟器工作?我的 makefile 如下所示..
Android.mk
ifneq ($(filter my_product, $(TARGET_DEVICE)),)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include $(call all-makefiles-under,$(LOCAL_PATH))
endif
Run Code Online (Sandbox Code Playgroud)
Android产品.mk
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/aosp_my_product.mk
Run Code Online (Sandbox Code Playgroud)
供应商安装程序
add_lunch_combo aosp_my_product-eng
Run Code Online (Sandbox Code Playgroud)
aosp_my_product.mk
#$(call inherit-product, device/generic/mini-emulator-armv7-a-neon/mini_emulator_common.mk) //copied to device.mk
$(call inherit-product, device/my_company/my_product/device.mk)
#Overrides
PRODUCT_NAME := aosp_my_product
PRODUCT_DEVICE :=my_product
PRODUCT_MODEL := Customized Android
PRODUCT_MANUFACTURER :=my_company
PRODUCT_BRAND :=Android
PRODUCT_LOCALES := en_US
PRODUCT_PACKAGE_OVERLAYS := device/my_company/my_product/overlay
PRODUCT_CHARACTERISTICS := nosdcard
Run Code Online (Sandbox Code Playgroud)
设备.mk
PRODUCT_NAME :=aosp_my_product
PRODUCT_DEVICE :=my_product
PRODUCT_MODEL := Customized …Run Code Online (Sandbox Code Playgroud) android-source ×10
android ×8
build ×2
blob ×1
compilation ×1
cyanogenmod ×1
device-tree ×1
git ×1
jar ×1
java ×1
macos ×1
makefile ×1
repo ×1