Articles of makefile

debugging与发布在Android NDK中构build

我正在研究一个必须移植到Android的大型游戏引擎。 所有的代码都是C / C ++,所以我们通过NDK移植。 我已经完成了所有的工作,但是在大量的search之后,我仍然不确定构buildDebug和Release版本的.so文件的最好方法是什么。 每次手工更换东西都变老了。 你有不同的Application.mk文件的每个目标? 或者有什么方法可以在jni /目录下的单个Android.mk文件中包含多个目标? 或者第三个选项可能是编写一个标准的makefile来设置Android.mk文件用来通知构build过程的环境variables? 最后,关于必须在AndroidManifest.xml文件中设置的android:debuggable标志的最后一个问题。 这实际上对复制到设备的生成本机代码有什么影响? 最好的和谢谢, 凯文

使用Android.mk复制/系统中的多个txt文件

目的:我想要使用Android.mk在/ system(Android设备)中复制多个 txt文件 我的发现: 我们可以使用两种方法复制文件1)使用PRODUCT_COPY_FILES。 这是从设备/ / makefile.mk完成的 例如: PRODUCT_COPY_FILES := \ frameworks/base/data/etc/telephony.gsm.xml:system/etc/permissions/telephony.gsm.xml \ some/other/sourc/file:some/destination \ some/other/sourcefile2: some/destination 2)使用BUILD_PREBUILD 例如: ##############copy txt file################## include $(CLEAR_VARS) #LOCAL_MODULE := mydata.txt LOCAL_MODULE_TAGS := optional LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_PATH := $(TARGET_OUT)/myfolder LOCAL_SRC_FILES := mydata.txt include $(BUILD_PREBUILT) 为了上面的工作,在build / target / product / core.mk中inputmydata.txt 我的具体查询是:现在我可以使用第二种方法复制多个文件,一个接一个地重写上面的代码。 但是我想用第二种方法(BUILD_PERBUILD)来复制多个txt文件,而不用重写所有文件的代码。 1)我可以做只有一个包括$(BUILD_PREBUILT)调用? 2)BUILD_MULTI_PREBUILD可以用来解决目的吗? 怎么样 ?

每个NDK的构build是一个完整的重build

可能重复: 防止ndk-build自动清理模块 Android项目与NDK库。 NDK r8c。 在Cygwin下编译(这是一个旧的项目)。 一堆C ++和C文件,以及一些通过LOCAL_LDLIBS链接的.a库。 从前一段时间以来,我注意到每个NDK构build都会覆盖所有源文件。 即使我连续两次调用ndk构build,第二次尝试也是完全重build。 在.mk文件中没有任何效果,我可以看到,我调用的命令是一个vanilla $NDKPATH/ndk-build 。 在任何地方都没有-B选项。 唯一的缺点是:在每一个版本上,NDK都说: /cygdrive/c/android-ndk-r8c/build/core/add-application.mk:128: Android NDK: WARNING: APP_PLATFORM android-9 is larger than android:minSdkVersion 3 in /cygdrive/d/AppPath/AndroidManifest.xml 怎么回事? 我可以以某种方式看到什么文件的date是make决定重build所有?

如何指定NDK_MODULE_PATH的目录

我在过去的几个小时里遇到了这个简单的问题。 我在我的Android项目的根目录中有ndk-modules目录,并且在我的Android.mk文件夹中有以下内容 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) NDK_MODULE_PATH := $(LOCAL_PATH)/../ndk-modules … $(call import-module,mymodule) 当我build立mk文件,我得到了 Android NDK: /MyApp/jni/Android.mk: Cannot find module with tag 'mymodule' in import path Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ? 我在这里做错了什么? 我如何正确指定path? 更新: 规范是正确的。 我在mymodule目录中遇到问题。 对困惑感到抱歉。

从源代码构buildAndroid:不支持的reloc 43

当我编译Android 5.1.1时,我得到了许多像这样的错误: … … … libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43 libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43 libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43 libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43 并且制作过程最终失败: clang: error: linker command failed with exit code 1 (use -v to see invocation) build/core/host_shared_library_internal.mk:44: recipe for target 'out/host/linux-x86/obj32/lib/libnativehelper.so' failed make: *** [out/host/linux-x86/obj32/lib/libnativehelper.so] Error 1 我已经尝试了使用和不使用铿锵声以及用不同版本的铿锵声创build声源。 但是在新的分支上,叮当是一个要求,没有它就不能开始。 什么可能是错的?

Android NDK:如何将Android.mk添加到另一个Android.mk(分层项目结构)?

看起来可能,但我的脚本产生了奇怪的结果: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) include $(LOCAL_PATH)/libos/Android.mk include $(LOCAL_PATH)/libbase/Android.mk include $(LOCAL_PATH)/utils/Android.mk LOCAL_MODULE := native include $(BUILD_SHARED_LIBRARY) 只有第一个包含正在被parsing罚款,其他Android.mk文件被封存在奇数path。 build议? 更新:我已经打破了我的build筑环境…在办公室可以,但是在家LOCAL_PATH:= $(call my-dir)定义LOCAL_PATH到NDK目录而不是项目目录。 这是我的build设批次: set BASHPATH=K:\cygwin\bin\bash set PROJECTDIR=/cygdrive/h/Alex/Alex/Work/Android/remote-android set NDKDIR=/cygdrive/h/Alex/Programming_Docs/Android/android-ndk-r6/ndk-build set APP_BUILD_SCRIPT=/cygdrive/h/Alex/Alex/Work/Android/project/jni/Android.mk set DEV_ROOT=h:/Alex/Alex/Work/Android/project %BASHPATH% –login -c "cd %PROJECTDIR% && %NDKDIR%" 更新:我绝对不明白这个东西是如何构成path的。 我得到的path错误,如“/cygdrive/d/project/jni//cygdrive/d/Soft/project/jni/libos/src/libos.cpp”。这是我决定指定根目录中的所有文件Android.mk而不是包含子模块。 更新2:没有运气,这也不pipe用: LOCAL_PATH:= $(call my-dir) # Include makefiles here. include $(LOCAL_PATH)/libos/Android.mk include $(LOCAL_PATH)/libbase/Android.mk include […]

Android NDK:包括boost c ++库

我想在我的android应用程序中使用NDK使用boost库。 我已经在这里和这里find了一些成功的故事,但我不能对我说同样的话。 我特别试图在这个链接中使用库,以及boost线程库。 在下面的代码中,我只是试图包含线程库,而不是math库。 我用来构buildboost库的过程与我附加的第一个链接非常相​​似。 到目前为止,似乎我已经成功地构build了boost库,但是当我运行ndk-build ,出现以下错误: Prebuilt : libboost_thread.a <= <NDK>/sources/ cp: omitting directory `path/to/ndk/sources/boost' make: *** [obj/local/armeabi/libboost_thread.a] Error 1 显然, cp: omitting directory…不完全是一个错误。 但是除此之外,唯一得到的是下一行,这并不意味着什么。 Error 1 这是我的Android.mk文件: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_STATIC_LIBRARIES := boost_thread LOCAL_LDLIBS := lboost_system-gcc-md lboost_thread-gcc-md -lgnustl_static LOCAL_LDLIBS += lboost_system-gcc-md lboost_thread-gcc-md \ -L$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi \ -lgnustl_static LOCAL_SRC_FILES := #cpp_sources LOCAL_MODULE […]

如何编译Android的GCC?

有没有什么办法可以为Android编译GCC? 基本上,有一个Androidterminal仿真器可以访问GCC编译器,并能够编译一个二进制文件,它将从C或C ++源文件在Android上运行。 我的意图是使用这个,并最终安装make。

启用exceptionC ++

我正在尝试为Android制作APP本机代码。 本机代码在cplusplus中。 每当我尝试制作,出现以下错误。 H236Plus.cpp:135:错误:禁用exception处理,使用-fexceptions启用 如何使用-fexceptions来启用exception处理,以及在哪里使用它?

ant/文件夹突然从Android SDK丢失。 Google删除了它吗?

我已经尝试编译libreoffice核心项目(selectAndroid模块)(与make ,没有涉及Gradle),我得到这个错误: /home/aleksandar/libreoffice/workdir/UnpackedTarball/owncloud_android_lib/build.xml:90: Cannot find /home/aleksandar/Android/Sdk/tools/ant/build.xml imported from /home/aleksandar/libreoffice/workdir/UnpackedTarball/owncloud_android_lib/build.xml 当通过我的SDK看,我意识到/Sdk/tools/ant文件夹甚至不存在。 这是应该的方式吗? 我不知道现在为什么会导致这个错误,特别是我已经多次build立了这个项目,没有任何问题。 我知道唯一改变的是我已经更新了所有的工具(SDK和NDK)。 在发布这个(2017年3月)的时候,是否有任何向后兼容的改变? 这可能是源代码引入错误的变化,但我相信它会被注意到,这是持续了几天…有没有人遇到类似的问题?