Портирование проекта Android Studio в AOSP: нужен Android.mk

Все,

Я экспериментирую с этим примером.

https://www.truiton.com/2014/11/bound-service-example-android/

У него есть класс обслуживания (например, «extends service»), который создает экземпляр хронометра и возвращает время, прошедшее с момента запуска приложения.

Код компилируется в Android Studio, и я могу установить и запустить файл apk на моем специальном встроенном устройстве Android. Приложение работает нормально.

Я хотел бы иметь возможность скомпилировать пример кода локально в AOSP. В частности, в папке /packages/apps/ с помощью специального файла Android.mk.

Очищенная структура каталогов в папке Chrono_AOSP приведена ниже.

\---src
|   Android.mk
|   AndroidManifest.xml
|
+---java
|   \---com
|       \---ppp_aosp
|           \---chrono
|                   BoundService.java
|                   MainActivity.java
|
\---res
    +---drawable
    +---drawable-v24
    +---layout
    +---mipmap-anydpi-v26
    +---mipmap-hdpi
    +---mipmap-mdpi
    +---mipmap-xhdpi
    +---mipmap-xxhdpi
    +---mipmap-xxxhdpi
    \---values

Код успешно скомпилирован в файл .APK ("mm -B -j4"). Затем я устанавливаю файл APK (adb install chrono_aosp.apk). Однако, когда я запускаю приложение, приложение аварийно завершает работу "Chrono (AOSP) остановлен"

Файл Android.mk приведен ниже

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := Chrono_AOSP
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SDK_VERSION := current
LOCAL_MODULE_TAGS := tests
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v7-appcompat
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/appcompat/res
LOCAL_AAPT_FLAGS := --auto-add-overlay
include $(BUILD_PACKAGE)

Может ли кто-нибудь сказать мне, как исправить/устранить мою проблему?


person vpappano    schedule 27.03.2020    source источник
comment
Все, приношу свои извинения... Первоначально я думал, что причиной сбоя была связь между классами MainActivity и BoundServer. Как оказалось, причиной сбоя является AppCompatActivity. Когда я изменил его на Activity, приложение заработало без проблем. Сейчас я работаю над тем, чтобы пример работал с AppCompatActivity... Если у кого-то есть какие-либо предложения, мы будем очень признательны :-)   -  person vpappano    schedule 30.03.2020


Ответы (1)


Все,

Мне удалось заставить приложение скомпилироваться и запуститься.

Я выполнил поиск «AppCompatActivity» в папке /packages/apps для моей установки AOSP.

Он вернул несколько обращений в java-файлы для приложения Dialer. Я просмотрел файл Android.mk в каталоге приложения Dialer и использовал его в качестве эталона (с минимальными изменениями) для своего пользовательского Android.mk.

person vpappano    schedule 30.03.2020