我几乎找到了在Android.mk中添加外部jar引用的答案,但我仍然不在那里.
我的项目在libs /目录中包含commons-io-2.4.jar和jsch-0.1.49.jar.在日食中,一切都建立得很漂亮.现在我想编写一个Android.mk文件来自动构建我的项目.
我的Android.mk看起来像这样,但它不起作用.
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := MyProject
LOCAL_CERTIFICATE := platform
LOCAL_STATIC_JAVA_LIBRARIES := jsch-0.1.49 commons-io-2.4
LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
include $(BUILD_PACKAGE)
LOCAL_STATIC_JAVA_LIBRARIES := libs
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libs:jsch-0.1.49 libs:commons-io-2.4
include $(BUILD_MULTI_PREBUILT)
Run Code Online (Sandbox Code Playgroud)
我确定只有一点秘诀我错了,但我无法弄清楚.
Android.mk文件有很好的参考吗?我所能找到的只是与ndk一起工作的食谱.
我尝试在Android框架中添加一些文件.一切顺利,除了在编译结束时,我遇到了错误.
我也试过make update-api,但没有运气,每次编译它都会给出以下错误.如果有人知道如何解决这个问题,请告诉我.
Docs droiddoc: out/target/common/docs/doc-comment-check
Checking API: checkapi-last
Checking API: checkapi-current
host layoutlib_create: out/host/common/obj/JAVA_LIBRARIES/temp_layoutlib_intermediates/javalib.jar
Couldn't parse API file "frameworks/base/api/current.txt"
...as text: com.google.doclava.apicheck.ApiParseException: missing class or interface. got: private line 6342
...as XML: com.google.doclava.apicheck.ApiParseException: Error parsing API
Couldn't parse API file "out/target/common/obj/PACKAGING/public_api.txt"
...as text: com.google.doclava.apicheck.ApiParseException: missing class or interface. got: private line 6342
...as XML: com.google.doclava.apicheck.ApiParseException: Error parsing API
Exception in thread "main" java.lang.NullPointerException
at com.google.doclava.apicheck.ApiCheck.checkApi(ApiCheck.java:118)
at com.google.doclava.apicheck.ApiCheck.main(ApiCheck.java:67)
******************************
You have tried to change the API from what has been …Run Code Online (Sandbox Code Playgroud) 所以我正在开发Android Studio 2.2.2中的NDK示例.该项目使用clapack(一个数学库),它还有一个与clapack文件夹相同级别的testclapack.cpp.Android.mk文件也位于同一目录中.
Android.mk文件的内容是:
LOCAL_PATH:= $(call my-dir)
export MAINDIR:= $(LOCAL_PATH)
include $(CLEAR_VARS)
include $(MAINDIR)/clapack/Android.mk
LOCAL_PATH := $(MAINDIR)
include $(CLEAR_VARS)
LOCAL_MODULE:= lapack
LOCAL_SHORT_COMMANDS := true
LOCAL_STATIC_LIBRARIES := tmglib clapack blas f2c
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
LOCAL_EXPORT_LDLIBS := $(LOCAL_LDLIBS)
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= testlapack
LOCAL_SRC_FILES:= testclapack.cpp
LOCAL_STATIC_LIBRARIES := lapack
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
但是,Sync Gradle会导致错误:
Gradle sync失败:GNUMAKE:在编译步骤中只需要一个源文件:com.android.build.gradle.external.gnumake.CommandClassifier$NativeCompilerBuildTool@6fd7d241但收到:D:/ SDK/android/ndk-bundle/build //. ./platforms/android-19/arch-arm/usr/include E:/test/lapack/app/src/main/jni/testclapack.cpp
我认为它与Android.mk有关,因为如果我删除了testlapack的部分,那么gradle sync就可以了.
因为我需要在testclapack.cpp中调用函数,所以我需要一些关于如何将它们编译在一起的帮助.
有没有办法在Android.mk中使用条件表达式?我需要它像这样做smth:
IF arch = AREABI_V7
*use path for my arm_v7 static libs*
ELSE
*use path for arm static libs*
Run Code Online (Sandbox Code Playgroud) 我意识到之前已经问过这个问题,但没有答案能够解决我的问题.
我正在尝试构建一个随NDK提供的示例Android应用程序,其中包含以下Android.mk文件:
LOCAL_PATH := $(call my-dir)
MY_PATH := $(LOCAL_PATH)
include $(call all-subdir-makefiles)
include $(CLEAR_VARS)
LOCAL_PATH := $(MY_PATH)
LOCAL_MODULE := native-activity
LOCAL_SRC_FILES := main.c
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
Run Code Online (Sandbox Code Playgroud)
当我构建我的项目时,我得到以下错误:
**** Build of configuration Default for project NativeActivity ****
/Users/Jono/Documents/Development/Android Development/android-ndk-r9c/ndk-build all
usage: dirname path
make: /Users/Jono/build/core/build-local.mk: No such file or directory
make: *** No rule to make target `/Users/Jono/build/core/build-local.mk'. Stop.
**** Build Finished ****
Run Code Online (Sandbox Code Playgroud)
问题是它在我的根目录中寻找构建文件,但我不确定它在做什么,它在寻找什么文件,它应该在哪里查找,然后我应该做些什么来修复它.
我正在尝试为设备构建AOSP 4.4.2的内核.当我编译内核时,我得到了
build/core/base_rules.mk:134: *** vendor/google/libs:
MODULE.TARGET.SHARED_LIBRARIES.libjpeg already defined by external/jpeg. Stop.
Run Code Online (Sandbox Code Playgroud)
我知道共享变量libjpeg已经定义,我需要删除其中一个.那是对的吗?
我试着查看external/jpeg文件夹,我不确定我要查看哪个文件.有人可以告诉我如何处理这种情况.
将vendor/XXXX文件夹中的文件替换为最新版本并启动构建(m -j8)。不到5分钟就完成了搭建。
新的系统映像已创建。但是,更改不会在模拟器中更新。但是,当我删除 out 文件夹并再次尝试构建时,一切都会正常。完成构建需要 3-4 小时。
任何人都知道为什么第一次不起作用的原因。
qemu android-emulator android-build android-source android-make
我需要在 aosp 构建树中使用 android.mk 构建一个应用程序。我有一个自定义的 .arr lib,它位于以下文件夹 apps/libs/mylib.aar
任何人都可以告诉我如何在 android aosp 构建中包含 aar。我已经尝试了此处描述的以下方法Stackoverflow link for aosp build with .aar lib
Android.mk 看起来像
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PACKAGE_NAME := sample
LOCAL_CERTIFICATE := platform
# SRC files
#=====================================================================
LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/aidl
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
$(call all-Iaidl-files-under, aidl)
# RES files
#=====================================================================
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_RESOURCE_DIR +=prebuilts/sdk/current/extras/constraint-layout/res
LOCAL_RESOURCE_DIR +=frameworks/support/v7/appcompat/res
LOCAL_RESOURCE_DIR +=frameworks/support/design/res
LOCAL_RESOURCE_DIR +=frameworks/support-v4/res
LOCAL_MANIFEST_FILE :=AndroidManifest.xml
LOCAL_USE_AAPT2 := true
LOCAL_PROGUARD_ENABLED := disabled
# static .aar …Run Code Online (Sandbox Code Playgroud) 我在 at 添加了一个新的 C++ 子项目,frameworks/base/cmds/myproject它有自己的Android.mk文件。当我运行时make myproject,它会编译得很好,没有问题。
但是我想添加make myproject到主要make. 我的意思是,当有人make在 AOSP 的根目录下运行时,我的项目也将包含在内。我该怎么办?