我正在尝试运行这些项目,使用jni来使用android工作室进行arm程序集调用,但它有外部makefile,我有点迷失
https://github.com/Miouyouyou/ARMv7-Java-JNI-call
https://github.com/Miouyouyou/ARMv7-Java-JNI-return
我在windows上使用android studio,当我尝试使用android studio终端(使用gnu make)时,我得到了
armv7a-hardfloat-linux-gnueabi-as -o decypherArcane.o decypherArcane.s process_begin:CreateProcess(NULL,armv7a-hardfloat-linux-gnueabi-as -o decypher make(e = 2):系统找不到指定的文件。 make:*** [decypherArcane.o]错误2
我认为如果我将makefile转换为.bat一个
,它可能会有效这是makefile(它位于android studio项目的根目录之外)
`CROSS_COMPILE = armv7a-hardfloat-linux-gnueabi-
LD = $(CROSS_COMPILE)ld.gold
AS = $(CROSS_COMPILE)as
ANDROID_APK_NATIVE_LIB_DIR = ./apk/app/src/main/jniLibs
ANDROID_LIBNAME = libarcane.so
SOURCE = decypherArcane.s
OBJECT = decypherArcane.o
.PHONY: all
all: $(OBJECT)
$(LD) -shared --dynamic-linker=/system/bin/linker --hash-style=sysv -o $(ANDROID_LIBNAME) $(OBJECT)
mkdir -p $(ANDROID_APK_NATIVE_LIB_DIR)/armeabi{,-v7a}
cp $(ANDROID_LIBNAME) $(ANDROID_APK_NATIVE_LIB_DIR)/armeabi
cp $(ANDROID_LIBNAME) $(ANDROID_APK_NATIVE_LIB_DIR)/armeabi-v7a
.PHONY: install
install: all
make -C apk
$(OBJECT): $(SOURCE)
$(AS) -o $(OBJECT) $(SOURCE)
.PHONY: clean
clean:
$(RM) $(OBJECT) $(ANDROID_LIBNAME)
.PHONY: distclean
distclean: clean
$(RM) $(ANDROID_APK_NATIVE_LIB_DIR)/armeabi/$(ANDROID_LIBNAME)
$(RM) $(ANDROID_APK_NATIVE_LIB_DIR)/armeabi-v7a/$(ANDROID_LIBNAME)
`
答案 0 :(得分:1)
我已经更新了这两个项目ARMv7-Java-JNI-return和ARMv7-Java-JNI-call,使得构建过程在Windows上稍微容易一些。
您需要:
PATH
环境变量中的Android NDK路径。对于每个项目:
mkBuild
如果一切顺利,你应该看到这样的事情:
[armeabi] Compile arm : arcane <= decypherArcane.s
[armeabi] SharedLibrary : libarcane.so
[armeabi] Install : libarcane.so => apk/app/src/main/jniLibs/armeabi/libarcane.so
[armeabi-v7a] Compile arm : arcane <= decypherArcane.s
[armeabi-v7a] SharedLibrary : libarcane.so
[armeabi-v7a] Install : libarcane.so => apk/app/src/main/jniLibs/armeabi-v7a/libarcane.so
如果是这种情况,请插入手机并在打开的命令窗口中键入以下内容:
cd apk
gradlew installDebug
同样,如果一切顺利,那么您的手机应该有一个新的Android APP,名为 Decyph&#39; App 或 Wild Assembly!。运行新应用并查看结果。
现在,如果您在尝试构建,安装或运行这些示例时遇到任何问题,请在Github或Gitlab镜像上打开问题单。