繁体   English   中英

无法获取源代码以在Android Studio的JNI文件夹中构建

[英]Can't get source code to build in JNI folder in Android Studio

我正在启用实验性NDK插件的情况下使用Android Studio 1.3。 我已将整个Box2d文件夹以及Android.mk和Application.mk放入android studio的jni文件夹中。 Android Studio似乎完全忽略了.mk文件,因为当我更改它们时,什么也没有发生。 无论如何,当我遇到Directoy找不到错误时,我正在尝试编译Box2d。 Error:(19, 42) Box2D/Collision/b2BroadPhase.h: No such file or directory

Android.mk

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= liquidfun

LOCAL_C_INCLUDES := $(LOCAL_PATH)/Box2D/Collision \
            $(LOCAL_PATH)/Box2D/Collision/Shapes \
            $(LOCAL_PATH)/Box2D/Common \
            $(LOCAL_PATH)/Box2D/Dynamics \
            $(LOCAL_PATH)/Box2D/Dynamics/Contacts \
            $(LOCAL_PATH)/Box2D/Dynamics/Joints \
            $(LOCAL_PATH)/Box2D/Dynamics/Particle \
            $(LOCAL_PATH)/Box2D/Rope



include $(BUILD_SHARED_LIBRARY)

build.gradle

apply plugin: 'com.android.model.application'
model {
    android {
        compileSdkVersion = 21
        buildToolsVersion = "22.0.1"

        defaultConfig.with {
            applicationId = "com.mycompany.mygame"
            minSdkVersion.apiLevel = 15
            targetSdkVersion.apiLevel = 21
            versionCode = 1
            versionName = "1.0"
        }
    }
    android.buildTypes {
        release {
            minifyEnabled = false
            proguardFiles += file('proguard-rules.pro')
        }
    }
    android.ndk {
        moduleName = "liquidfun"
    }
}
def liquidFunDir = new File("${projectDir}/src/main/java/com/google/fpl/liquidfun")

task createLiquidFunDir {
    liquidFunDir.mkdirs()
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
}

任何提示将不胜感激。 谢谢。

您是否要在Windows中编译? 如果是这样,请在Android.mk中使用“ \\”代替“ /”,例如: $(LOCAL_PATH)\\Box2D\\Common \\

如果这样做没有帮助,请尝试在“ build.gradle”文件中指定包含内容,如下所示:

android.ndk {
    moduleName ="liquidfun"
    CFlags += "-I${file("src/main/jni/Box2D/Collision")}".toString()
}

嘿,我有一个类似的问题。 gradle插件不尊重您的Android.mk文件。 它为您的项目创建一个临时的Android.mk。

要在新的实验性Android插件中添加Cflags,请执行以下操作:

apply plugin: 'com.android.model.application'
model {
    android {
        compileSdkVersion = 21
        buildToolsVersion = "22.0.1"

        defaultConfig.with {
            applicationId = "com.mycompany.mygame"
            minSdkVersion.apiLevel = 15
            targetSdkVersion.apiLevel = 21
            versionCode = 1
            versionName = "1.0"
        }
    }
    android.buildTypes {
        release {
            minifyEnabled = false
            proguardFiles += file('proguard-rules.pro')
        }
    }
    android.ndk {
        CFlags += "-I${projectDir}/src/main/jni/Box2D/Collision".toString()
        CFlags += "-I${projectDir}/src/main/jni/Box2D/Collision/Shapes".toString()
        CFlags += "-I${projectDir}/src/main/jni/Box2D/Dynamics".toString()
        CFlags += "-I${projectDir}/src/main/jni/Box2D/Dynamics/Contacts".toString()
        CFlags += "-I${projectDir}/src/main/jni/Box2D/Dynamics/Joints".toString()
        CFlags += "-I${projectDir}/src/main/jni/Box2D/Dynamics/Particle".toString()
        CFlags += "-I${projectDir}/src/main/jni/Box2D/Rope".toString()

        cppFlags += "-I${projectDir}/src/main/jni/Box2D/Collision".toString()
        cppFlags += "-I${projectDir}/src/main/jni/Box2D/Collision/Shapes".toString()
        cppFlags += "-I${projectDir}/src/main/jni/Box2D/Dynamics".toString()
        cppFlags += "-I${projectDir}/src/main/jni/Box2D/Dynamics/Contacts".toString()
        cppFlags += "-I${projectDir}/src/main/jni/Box2D/Dynamics/Joints".toString()
        cppFlags += "-I${projectDir}/src/main/jni/Box2D/Dynamics/Particle".toString()
        cppFlags += "-I${projectDir}/src/main/jni/Box2D/Rope".toString()
        moduleName = "liquidfun"
    }
}
def liquidFunDir = new File("${projectDir}/src/main/java/com/google/fpl/liquidfun")

task createLiquidFunDir {
    liquidFunDir.mkdirs()
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
}

同样,您似乎正在针对sdk 10进行编译。@ ph0b( https://stackoverflow.com/a/31365158/5105445 )发布了一个答案,该内容使它无法在<lolipop上运行。

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM