标签: android-source

如何在 Android 10 的 AOSP 中将供应商特定的 API 列入白名单

我正在尝试将特定于供应商的 API 添加到我的 AOSP 代码库中。我能够在 Android 5 到 9 上运行此功能,但无法在 Android 10 上解决此问题。

我阅读了 AOSP 文档上用于实现 Java SDK 库的文档

我有以下蓝图文件:

java_sdk_library {
  name: "com.mycompany.sdk.myclass",
  srcs: ["java/**/*.java"],
  api_packages: ["com.mycompany.sdk.myclass"],
}
Run Code Online (Sandbox Code Playgroud)

我使用以下命令生成了 api 子目录:

build/soong/scripts/gen-java-current-api-files.sh "vendor/mycompany/sdk/myclass" && m update-api
Run Code Online (Sandbox Code Playgroud)

这会将我所有的公共方法签名放入 current.txt 文件中。

我将其作为启动 jar 添加到我的顶级 board.mk 文件中:

PRODUCT_BOOT_JARS += com.mycompany.sdk.myclass
Run Code Online (Sandbox Code Playgroud)

构建此文件会创建相应的 com.mycompany.sdk.myclass.xml 权限文件:

<?xml version="1.0" encoding="utf-8"?>
<permissions>
    <library name="com.mycompany.sdk.myclass"
    file="/system/framework/com.mycompany.sdk.myclass.jar"/>
</permissions>
Run Code Online (Sandbox Code Playgroud)

一切构建和安装都很好。我验证了权限文件位于 /system/etc/permissions/ 中并指向正确的 jar 文件名。但是,当我运行针对我的私有 SDK 构建的测试应用程序时,出现“访问隐藏方法(黑名单、链接、拒绝)”异常:

W/test_app: Accessing hidden method Lcom/mycompany/sdk/myclass;->myMethod(Landroid/content/Context;Z)V (blacklist, linking, denied)
Run Code Online (Sandbox Code Playgroud)

我可以通过发出以下命令来消除此黑名单错误:

adb shell settings put …
Run Code Online (Sandbox Code Playgroud)

api sdk vendor android-source

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

编译一个deodexed AOSP?

我正在尝试为我的GSM Galaxy Nexus(maguro)编译一个deodexed aosp.我在谷歌搜索,没有结果.似乎没有允许编译deodexed系统的标志.

但是在makefile build/core/main.mk中我发现了这个:

   ## precise GC ##

ifneq ($(filter dalvik.gc.type-precise,$(PRODUCT_TAGS)),)
  # Enabling type-precise GC results in larger optimized DEX files.  The
  # additional storage requirements for ".odex" files can cause /system
  # to overflow on some devices, so this is configured separately for
  # each product.
  ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.dexopt-flags=m=y
endif
Run Code Online (Sandbox Code Playgroud)

任何的想法?谢谢

android android-source

4
推荐指数
1
解决办法
2926
查看次数

在AOSP中,解析AndroidManifest.xml的代码是什么?

我试图了解如何以及何时解析应用程序的AndroidManifest.xml,但无法找到它在AOSP源中.我也搜索了AndroidXRef,但我没有看到任何命中(可能是因为这个解析是以二进制XML完成的,因此标签 - 例如android:name- 不是字符串.)

parsing android android-manifest android-source

4
推荐指数
1
解决办法
795
查看次数

在文件夹中添加预先构建的文件集到android out文件夹

我有glibc为arm编译,这与Android glibc或仿生C不同,因为我所遵循的glibc环境将有助于提供更多的api.现在我可以在Android运行时复制/ system /文件夹中的glibc环境,并且在执行chroot时我可以在glibc环境中运行我的程序.

目前我正在单独编译glibc和Android,然后将glibc和它复制到Android模拟器SD卡上,然后在/ system文件夹上解压缩然后在/ system/glibc上执行chroot

我分别编译glibc,然后将它放在Android源代码中.现在在编译Android源码时,我应该怎么做才能将glibc的整个预建文件夹结构复制到/ system文件夹并成为system.img的一部分.

有了这个,当我将system.img复制到Android模拟器并启动它时,glibc已经存在于/ system文件夹中,只需要在glibc环境中运行应用程序.

UPDATE

根据Yuri在他的回答中提到的(我创建了glibc文件夹并将所有内容复制到其中),当我编译代码时,我得到了输出.

build/core/main.mk:490: * Some files have been added to ALL_PREBUILT.
build/core/main.mk:491: *
build/core/main.mk:492: * ALL_PREBUILT is a deprecated mechanism that
build/core/main.mk:493: * should not be used for new files.
build/core/main.mk:494: * As an alternative, use PRODUCT_COPY_FILES in
build/core/main.mk:495: * the appropriate product definition.
build/core/main.mk:496: * build/target/product/core.mk is the product
build/core/main.mk:497: * definition used in all products.
build/core/main.mk:498: *
build/core/main.mk:499: * unexpected glibc in ALL_PREBUILT
build/core/main.mk:500: *
build/core/main.mk:501: * …
Run Code Online (Sandbox Code Playgroud)

linux android makefile prebuild android-source

4
推荐指数
2
解决办法
7259
查看次数

Android:如何以编程方式配对蓝牙设备?

请任何人帮助我将我的Android手机与其他已发现的手机以编程方式配对?

android android-source

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

从更改的framework.jar构建Android AOSP system.img

我正在尝试更改android.webkitandroid平台框架中的文件,然后使用

mmm frameworks/base
Run Code Online (Sandbox Code Playgroud)

将其构建到framework.jar文件中.

如何构建system.img文件以便链接此jar文件?而且,无需构建整个系统.

android build-process android-source

4
推荐指数
2
解决办法
2665
查看次数

在Android源代码中使用CTS

我已经在自定义板上运行了android CTS测试用例.AOSP在android /文件夹下有自己的cts /文件夹.我有两个问题.

cts /在构建和闪存机器人中有什么用途/作用?

为什么我们从站点下载CTS 来运行cts测试用例,而不是使用源代码的cts?

android cts android-source

4
推荐指数
1
解决办法
1046
查看次数

加快Android(AOSP)的构建时间

我在配备16Gb RAM和SSD的Intel i7笔记本电脑上.除了指定-j参数和启用CCACHE之外,还有其他技巧可以用来加速AOSP的编译时间吗?目前它在2小时左右.

我发现-j12在我的CPU下具有最佳性能.

performance makefile android-source

4
推荐指数
2
解决办法
5887
查看次数

Android Studio中的测试支持库的来源

如何android.support.test.*在AS中附加源代码进行调试?
尝试从https://android.googlesource.com/platform/frameworks/testing下载源代码,但该版本似乎与我的测试库版本不匹配.

测试源(例如AndroidJunitRunner)似乎没有通过sdk管理器提供,我错过了什么?

android android-source android-testing android-studio

4
推荐指数
2
解决办法
5817
查看次数

AOSP构建已停止:子命令失败

尝试构建AOSP构建时出现此错误

repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r33 --depth=1
Run Code Online (Sandbox Code Playgroud)

我找不到任何经历过相同的人.

[  5% 3232/63193] Lex: applypatch <= bootable/recovery/edify/lexer.ll
FAILED: out/target/product/generic/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp 
/bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/target/product/generic/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp bootable/recovery/edify/lexer.ll"
flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted (core dumped)
[  5% 3239/63193] target StaticLib: li...IES/libv8src_intermediates/libv8src.a)
ninja: build stopped: subcommand failed.
14:04:56 ninja failed with: exit status 1
build/core/main.mk:21: recipe for target 'run_soong_ui' failed
make: *** [run_soong_ui] Error 1
Run Code Online (Sandbox Code Playgroud)

这让我想到了问题可能存在于环境中.

VirtualBox,8GB RAM,160GB空间,Ubuntu 18.04

有没有人有提案可能会出错?

android android-source

4
推荐指数
1
解决办法
5357
查看次数