Android Gradle插件:将NDK可执行文件打包到APK中
正在尝试构建NDK二进制文件并将其打包到APK中 工作室构建:Android Gradle插件:将NDK可执行文件打包到APK中,gradle,android-ndk,Gradle,Android Ndk,正在尝试构建NDK二进制文件并将其打包到APK中 工作室构建: Android.mk include $(CLEAR_VARS) LOCAL_MODULE := hello LOCAL_SRC_FILES := ../../hello.c LOCAL_CFLAGS := -g -fPIE LOCAL_LDLIBS := -fPIE -pie include $(BUILD_EXECUTABLE) Android Studio 3.2.1 建造#AI-181.5540.7.3
Android.mk
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := ../../hello.c
LOCAL_CFLAGS := -g -fPIE
LOCAL_LDLIBS := -fPIE -pie
include $(BUILD_EXECUTABLE)
- Android Studio 3.2.1
- 建造#AI-181.5540.7.32.5056338,建造于2018年10月9日
- Gradle插件版本:3.2.1
- Gradle版本:4.6
- Java版本:JRE:1.8.0_152-release-1136-b06 x86_64
- JVM:JetBrains s.r.o提供的OpenJDK 64位服务器虚拟机
- 操作系统:macOS 10.13.6
Android.mk
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := ../../hello.c
LOCAL_CFLAGS := -g -fPIE
LOCAL_LDLIBS := -fPIE -pie
include $(BUILD_EXECUTABLE)
渐变配置
android {
compileSdkVersion 26
buildToolsVersion '28.0.3'
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
jniLibs.includes = ['anything']
}
}
如果选择共享库而不是可执行文件,我可以看到libhello.so
打包到/lib下的apk中。
如果设置为BUILD\u EXECUTABLE,则编译二进制可执行文件时不会发生任何事情。我不知道我在gradle配置中缺少了什么 这不是对您问题的回答,但仅供参考,您永远不需要明确提供
-g
标志,也不需要提供-fPIE
或-pie
,除非您使用的是旧NDK且minSdkVersion
小于16(如果是,你需要提供两个可执行文件,因为ICS和棒棒糖上都没有可执行文件)。@DanAlbert,谢谢你的评论。我没有使用旧NDK,所以我清理了所有的标志。现在看起来好多了。