标签: android-source

如何在 Android 5.0+ 上运行蓝牙 HID 主机

我有一个蓝牙HID设备,我需要得到工作与在Android 5.0分叉一台Nexus 7平板电脑2013运行自定义生成运行我的应用程序。所以:

  • @hide 不是约束
  • 允许更改 AOSP
  • 任何 Android 版本 5.0* - 5.1* 都可以

现在我的设备有一个键盘,并且发送和接受一些供应商特定的 HID 报告。通过工作,我的意思是发送和接收所有 HID 报告

基于我所做的 AOSP 源代码探索,似乎:

  1. HidService服务广播BluetoothInputDevice.ACTION_REPORT所有输入 HID 报告的意图 [我的应用程序有一个BroadcastReceiver接收ACTION_REPORT意图]

  2. BluetoothInputDevice提供了其他的接口等setReport()sendData()connect()通过等HidService

  3. BluetoothInputDevice用于HidService提供 HID 设备接口。

  4. HidService.java 是一个 JNI 包装器 com_android_bluetooth_hid.cpp

  5. com_android_bluetooth_hid.cpp,在 初始化时HidService,将自己的回调注册到 Bluedroid

我已将日志添加到 AOSP 以跟踪调用,似乎以上所有内容都是正确的。

get_report_callback()com_android_bluetooth_hid.cpp不会被调用,因此,我的应用程序不接收ACTION_REPORT意向。

如果我ACTION_REPORT从我的应用程序发送虚拟意图,那么我BroadcastReceiver …

android bluetooth hid android-source android-intent

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

在主线程中的断点处停止时,几秒钟后 ANR 崩溃(AOSP - RK3288 框)

我有一个 RK3288 盒子,我正在为它开发一个应用程序。

我遇到了一个让我很头疼的问题。我无法调试任何东西。
每次我附加调试器时,当我遇到主线程上的断点时,我的应用程序会在几秒钟后崩溃。以下是发生这种情况时的 logcat:

05-02 20:52:39.734 459-534/system_process I/InputDispatcher: Application is not responding: Window{3026b626 u0 com.kushtrim.playground/com.kushtrim.playground.MainActivity}.  It has been 5001.8ms since event, 5001.6ms since wait started.  Reason: Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago.  Wait queue length: 17.  Wait queue head age: 5505.1ms.
05-02 20:52:39.794 459-534/system_process I/WindowManagerService: Input event dispatching timed out sending to com.kushtrim.playground/com.kushtrim.playground.MainActivity.  Reason: Waiting to send non-key event because …
Run Code Online (Sandbox Code Playgroud)

debugging android android-source android-anr-dialog

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

Android.bp 和 ninja:错误:未知目标

packages/apps在 Android O 的供应商目录下有一个应用程序。该应用程序依赖于 HIDL 接口,该接口作为 Java 库添加。

如果我用Android.mk文件构建应用程序,它构建得很好。如果我使用Android.bp文件构建应用程序,隐藏Android.mk,它不会构建并失败并出现错误:

忍者:错误:未知目标 'MODULES-IN-vendor-${vendor_name}-apps-${app_name}',你的意思是 'MODULES-IN-vendor-${vendor_name}-apps-${another_app_name}'?

或者它可以只是

忍者:错误:未知目标 'MODULES-IN-vendor-${vendor_name}-apps-${app_name}'

我的Android.bp样子:

android_app {

    java_libs: ["some.hidl.lib-V1.0-java"],

    java_static_libs: ["android.hidl.base-V1.0-java-static"],

    srcs: ["**/*.java"],

    android_resource_dirs: ["res/**"],

    name: "MyApplication",

    module_name: "MyApplication",

    package_name: "me.myself.MyApplication", // also tried just the name as it is done in Android.mk

    enabled: true,

    proguard_enabled: disabled

}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

android android-source

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

Android - 使用 PackageInstaller 和 PackageInstaller.Session 静默安装 APK

查看 Android (AOSP) 的来源,installPackage标记为已弃用并检查 Android 的 PackageManager 应用程序,它使用PackageInstaller该类创建一个PackageInstaller.Session实例来执行 APK 的安装。

我正在尝试在我的应用程序中做同样的事情。我使用系统密钥签名,并且我确实INSTALL_PACKAGES在清单中包含了权限。

这是我的代码:

    val packageName = "com.spotify.music"
    val inputStream = File(filesDir, "spotify.apk").inputStream()

    // ...

    val packageInstaller = context.packageManager.packageInstaller
    val params = PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL)
    params.setAppPackageName(packageName)

    val sessionId = packageInstaller.createSession(params)
    val session = packageInstaller.openSession(sessionId)
    val out = session.openWrite("COSU", 0, -1)
    inputStream.copyTo(out)
    session.fsync(out)
    inputStream.close()
    out.close()
    session.commit(null)
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下奇怪的空指针异常:

Error while installing: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.AppOpsManager.checkPackage(int, java.lang.String)' on a null object reference

有人知道这里出了什么问题吗?

android android-source silent-installer android-package-managers kotlin

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

与 passthrough 相比,binderised hidl 的优势是什么?

在android中,与passthrough hidl相比,binderised hidl有什么优势?

据我所知,有两种 hidl 方式(绑定方式(单独进程中的客户端/服务器),直通方式(同一进程中的客户端/服务器)。与直通方式相比,绑定方式有什么优势?

我认为绑定方式比直通有更多的开销,因为绑定方式需要使用绑定器通信(RPC)。

为什么供应商使用绑定方式?

android hal android-source

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

AOSP Build TARGET_PRODUCT 失败

我正在尝试使用 AOSP 构建外部工具。我的操作系统是 Linux,发行版 ArchLinux (i3wm),但为了编译 AOSP,我在 Docker 中使用了 Ubuntu ( https://android.googlesource.com/platform/build/+/master/tools/docker )

第一步:

# init repo
repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r36 --depth=1
repo sync
. build/envsetup.sh # set up environment
lunch aosp_arm-eng # select target to build
Run Code Online (Sandbox Code Playgroud)

第二步:选择工具并构建

cd external/selinux
mma -j48
Run Code Online (Sandbox Code Playgroud)

输出:

ninja: error: unknown target 'MODULES-IN-'
15:41:55 ninja failed with: exit status 1
make: *** [run_soong_ui] Error 1
make: Leaving directory `/home/user/aosp'

#### make failed to build some targets (6 seconds) ###
Run Code Online (Sandbox Code Playgroud)

另一个工具

cd external/wpa_supplicant_8
mma …
Run Code Online (Sandbox Code Playgroud)

arm wolfram-mathematica android-source armv8

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

AOSP 构建模拟器无法启动/显示黑屏

我从 AOSP 构建的 Android 模拟器有问题。

我的步骤是:

$ repo sync -j8
$ source build/envsetup.sh
$ lunch --> chose 22. aosp_x86_64-eng
$ make -j8
$ set_stuff_for_environment
$ emulator
Run Code Online (Sandbox Code Playgroud)

然后模拟器启动,但一直黑屏,很长一段时间没有响应。我还尝试了其他目标,例如 1. aosp_arm-eng

其他所有模拟器都启动(通过 AVD Manager 或 Android Studio)像往常一样工作。

我使用 macOS 10.14.6

android android-emulator android-source

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

如何解决已定义的资源条目

我正在使用 aosp 并在运行命令后:

make 2>&1 | tee build-log.txt
Run Code Online (Sandbox Code Playgroud)

我收到很多错误,例如:

packages/apps/Settings/res/values/aliases.xml:19: error: Resource entry confirm_lock_pattern is already defined.
res/layout/confirm_lock_pattern.xml:0: Originally defined here.

packages/apps/Settings/res/values/aliases.xml:20: error: Resource entry confirm_lock_password is already defined.
res/layout/confirm_lock_password.xml:0: Originally defined here.

packages/apps/Settings/res/values/strings.xml:5193: error: Resource entry enable_verbose_log_vpu is already defined.
packages/apps/Settings/res/values/strings.xml:5189: Originally defined here.
Run Code Online (Sandbox Code Playgroud)

当我检查特定文件 aliases.xml 和 strings.xml 时,

别名.xml:

<item name="confirm_lock_pattern" type="layout">@layout/confirm_lock_pattern_base</item>
 <item name="confirm_lock_password" type="layout">@layout/confirm_lock_password_base</item>
Run Code Online (Sandbox Code Playgroud)

字符串.xml:

string android cmake android-source

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

定制 AOSP 的开发人员如何将他们的更改保持在版本控制之下?

获取 AOSP 源,是 134GB。

一个特定版本的 Android 的结账可能需要很多 GB。

定制 AOSP 的开发人员如何将他们的更改保持在(他们自己的)版本控制之下?(鉴于签入 Android 版本源的快照将是许多 GB。)

git android android-source

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

Android 30 的来源在哪里

设想

当我点击ctrl+class name打开一个类的源代码时,android studio 通常会打开一个带有存根方法的虚拟实现。当我降低compileSdkVersion29这些动作正常工作时。

问题

Sources for Android 30sdkmanager窗口找不到。

它会很快发布还是我错过了什么?

https://imgur.com/ERwqSBP.png

android android-source android-10.0

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