Android ndk 如何将C库移植到Android studio JNI文件夹中

Android ndk 如何将C库移植到Android studio JNI文件夹中,android-ndk,java-native-interface,arm,cross-platform,embedded-linux,Android Ndk,Java Native Interface,Arm,Cross Platform,Embedded Linux,我有一个程序,我使用NDK中的arm工具链编译。现在我想把它用作图书馆;将它放在JNI文件夹中,并从我的主要活动调用函数。我想知道如何高效、明智地进行这项工作。我将所有文件和文件夹复制到JNI文件夹。我该如何处理本机C代码中的make文件?我可以修改它们以适应JNI设置吗?有人能帮我解决哪些问题吗?注意,我的问题不是移植本机代码,而是如何有效地进行移植。我想弄清楚IDE中是否有任何自动化工具可以帮助我做到这一点 现在,我得到了以下错误,我相信这告诉我,我复制的旧make文件没有生成项目所需的文件

我有一个程序,我使用NDK中的arm工具链编译。现在我想把它用作图书馆;将它放在JNI文件夹中,并从我的主要活动调用函数。我想知道如何高效、明智地进行这项工作。我将所有文件和文件夹复制到JNI文件夹。我该如何处理本机C代码中的make文件?我可以修改它们以适应JNI设置吗?有人能帮我解决哪些问题吗?注意,我的问题不是移植本机代码,而是如何有效地进行移植。我想弄清楚IDE中是否有任何自动化工具可以帮助我做到这一点

现在,我得到了以下错误,我相信这告诉我,我复制的旧make文件没有生成项目所需的文件?我说得对吗

Error:Execution failed for task ':app:compileDebugNdk'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /home/sansari/ndk/android-ndk-r10d/ndk-build NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/home/sansari/AndroidStudioProjects/NDKSample/app/build/intermediates/ndk/debug/Android.mk APP_PLATFORM=android-21 NDK_OUT=/home/sansari/AndroidStudioProjects/NDKSample/app/build/intermediates/ndk/debug/obj NDK_LIBS_OUT=/home/sansari/AndroidStudioProjects/NDKSample/app/build/intermediates/ndk/debug/lib APP_ABI=all
  Error Code:
    2
  Output:
    make: *** No rule to make target `/home/sansari/AndroidStudioProjects/NDKSample/app/build/intermediates/ndk/debug/obj/local/arm64-v8a/objs/myLib//home/sansari/AndroidStudioProjects/NDKSample/app/src/main/jni/tools/arm-eabi-4.7/lib/gcc/arm-eabi/4.7/crtn.o', needed by `/home/sansari/AndroidStudioProjects/NDKSample/app/build/intermediates/ndk/debug/obj/local/arm64-v8a/libmyLib.so'.  Stop.
这是我的身材,格雷德尔

apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "com.example.sansari.ndksample"
    minSdkVersion 15
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"

    ndk {
        moduleName ="myLib"
    }
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}
这个项目背后的故事是我使用教程创建的。在书中,作者使用了mylib。因此,我得到的错误是,我刚刚移动到JNI文件夹中的make文件没有用于构建mylib.So的行。是这样吗?我查看了我的C代码根目录下的make文件,它与我在GNU make的前几章中读到的目标/依赖结构完全不同。你能帮我找到构建mylib.so需要更新的make文件吗


我找到了一些关于我的问题的信息。默认情况下,build.gradle会忽略本机项目中的现有生成文件。您必须在Android Studio中放入自己的Android.mk和Application.mk文件

我发现,如果我想将一个大型项目移植到Android Studio中,我必须将Android.mk和application.mk添加到Android Studio中的本机项目中

你的Android.mk是什么样子的(如果你使用的是Android Studio,那么build.gradle是什么样子的)?