首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Android中的JNI文件夹中生成源代码

无法在Android中的JNI文件夹中生成源代码
EN

Stack Overflow用户
提问于 2015-08-19 00:39:13
回答 2查看 1.1K关注 0票数 0

我正在使用AndroidStudio1.3,启用了实验NDK插件。我已经将整个Box2d文件夹与Android.mk和Application.mk一起放到了android中的jni文件夹中。Android似乎完全忽略了.mk文件,因为当我改变它们时,什么都不会发生。不管怎么说,当我得到了directoy而不是找到的错误时,我正在尝试编译Box2d。Error:(19, 42) Box2D/Collision/b2BroadPhase.h: No such file or directory

Android.mk

代码语言:javascript
复制
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

代码语言:javascript
复制
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'
}

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-20 05:34:30

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

要在新的实验性android插件中添加标记:

代码语言:javascript
复制
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'
}

@ph0b (https://stackoverflow.com/a/31365158/5105445)发布了一个答案,使得不可能在任何<棒棒糖上运行。

希望它能帮上忙

票数 0
EN

Stack Overflow用户

发布于 2015-08-19 10:49:20

您想在windows中编译吗?如果是这样,请在Android.mk中使用"\“而不是"/”,如下所示:$(LOCAL_PATH)\Box2D\Common \

如果这无助于在"build.gradle“文件中指定如下所示的包含:

代码语言:javascript
复制
android.ndk {
    moduleName ="liquidfun"
    CFlags += "-I${file("src/main/jni/Box2D/Collision")}".toString()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32084727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档