我正在尝试将特定于供应商的 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) 我正在尝试为我的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)
任何的想法?谢谢
我试图了解如何以及何时解析应用程序的AndroidManifest.xml,但无法找到它在AOSP源中.我也搜索了AndroidXRef,但我没有看到任何命中(可能是因为这个解析是以二进制XML完成的,因此标签 - 例如android:name- 不是字符串.)
我有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) 请任何人帮助我将我的Android手机与其他已发现的手机以编程方式配对?
我正在尝试更改android.webkitandroid平台框架中的文件,然后使用
mmm frameworks/base
Run Code Online (Sandbox Code Playgroud)
将其构建到framework.jar文件中.
如何构建system.img文件以便链接此jar文件?而且,无需构建整个系统.
我已经在自定义板上运行了android CTS测试用例.AOSP在android /文件夹下有自己的cts /文件夹.我有两个问题.
cts /在构建和闪存机器人中有什么用途/作用?
为什么我们从站点下载CTS 来运行cts测试用例,而不是使用源代码的cts?
我在配备16Gb RAM和SSD的Intel i7笔记本电脑上.除了指定-j参数和启用CCACHE之外,还有其他技巧可以用来加速AOSP的编译时间吗?目前它在2小时左右.
我发现-j12在我的CPU下具有最佳性能.
如何android.support.test.*在AS中附加源代码进行调试?
尝试从https://android.googlesource.com/platform/frameworks/testing下载源代码,但该版本似乎与我的测试库版本不匹配.
测试源(例如AndroidJunitRunner)似乎没有通过sdk管理器提供,我错过了什么?
尝试构建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
有没有人有提案可能会出错?