标签: android-source

制作并制作 otapackage

在 AOSP 开发中,make otapackage命令是否可以像make命令一样执行所有操作并另外创建 .zip 文件?我问的原因是因为现在为了 makeotapackage我首先执行makeand then make otapackage,我想知道第一个 make 是否是不必要的?

\n\n

我找到了一些帖子,但我不能 100% 确定我是否理解。

\n\n

http://xda-university.com/as-a-developer/getting-started-building-android-from-source

\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
\n

makefile build android-source

5
推荐指数
2
解决办法
8339
查看次数

如何将bitbucket私有Git存储库添加到AOSP?

我的 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 存储库的所有权利。

git android android-source repo

5
推荐指数
1
解决办法
1603
查看次数

Android 中的 libprocessgroup 如何工作?

假设一个应用程序进程由 zygote 启动,PID 为 1234。当应用程序启动时,PID:1234 分叉另一个进程,例如 PID:1300。当我退出应用程序时,PID:1234 被信号 9 (SIGKILL )。PID: 1300 随后成为孤儿进程并被 init 进程 (PID: 1) 采用。很快,libprocessgroup 也会触发并杀死 PID:1300(作为 PID:1234 的进程组的一部分)。这是如何触发的?换句话说,libprocessgroup 何时突然介入以清理剩余进程?

android android-source activity-manager

5
推荐指数
0
解决办法
1916
查看次数

像 Android 那样使用存根方法创建 API jar?

我希望分发自定义 API,并且知道这些类将在运行时可用。我希望我的公共和受保护的方法/类包含在我可以分发的 jar 中,但我不需要任何其他源代码,并且如果实际执行该 jar 代码,我想抛出异常。

当您尝试直接执行 jar 时,这正是 Android 框架 jar 的行为。

我的问题是如何从我的源创建相同的 jar,而无需手动检查和创建每个存根方法。我希望它能够随着我的 API 的增长而扩展。

java android compilation jar android-source

5
推荐指数
1
解决办法
761
查看次数

如何在Android.bp中添加条件代码

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

提前致谢。

build android-source

5
推荐指数
1
解决办法
2万
查看次数

提取供应商 blob 并制作设备树

我多次尝试为我的设备获取 CM(现为 Lineageos)13/14.1 版本,该设备是带有 EMUI 3.0(Kit Kat 4.4.4)的华为 Mediapad T1-A21W(代号:hwt1a21l),但我由于以下原因受到限制:

  • 没有可以使用的设备树。
  • 没有可以使用的供应商 blob。

基本上,从一开始就绝对是零开发或基础,所以我必须制作设备树并提取供应商 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 blob android-source cyanogenmod device-tree

5
推荐指数
1
解决办法
1万
查看次数

Binder 线程池(1 个线程)饥饿 xxx 毫秒

我们的 Android 服务使用 HIDL 服务与我们的驱动程序/硬件交互,但在长时间运行期间,我们看到很多这样的打印“binder 线程池(1 个线程)饥饿 xxx 毫秒”,时间为 120ms < xxx > 310ms。一段时间后,我们看到从 HIDL 服务复制的内存是错误地址,当我们访问它时会给出 SIGSEGV。线程池饥饿和内存损坏是否相关?有人见过类似的问题吗?这是 Android O 预览版。

multithreading android android-source android-os-handler android-8.0-oreo

5
推荐指数
0
解决办法
2210
查看次数

adb root 工作 Runtime.GetRuntime().Exec("su"); 才不是

我在自定义设备上运行 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 android-source xamarin.android

5
推荐指数
1
解决办法
9324
查看次数

错误:声明与范围内已存在的 using 声明的目标冲突

我是 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)

macos android android-build android-source

5
推荐指数
1
解决办法
6095
查看次数

AOSP 在自定义设备模拟器上构建

我正在学习 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 android-emulator android-source

5
推荐指数
1
解决办法
4343
查看次数