无法获取源代码以在 Android Studio 的 JNI 文件夹中构建
Can't get source code to build in JNI folder in Android Studio
我正在使用启用了 experimental NDK plugin 的 Android Studio 1.3。我已将整个 Box2d 文件夹与 Android.mk 和 Application.mk 一起放入 android studio 的 jni 文件夹中。 Android 工作室似乎完全忽略了 .mk 文件,因为当我更改它们时没有任何反应。无论如何,当我收到 directoy not found 错误时,我正在尝试编译 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 () 发布了一个答案,使得不可能 运行 任何东西 < lolipop.
希望对您有所帮助
我正在使用启用了 experimental NDK plugin 的 Android Studio 1.3。我已将整个 Box2d 文件夹与 Android.mk 和 Application.mk 一起放入 android studio 的 jni 文件夹中。 Android 工作室似乎完全忽略了 .mk 文件,因为当我更改它们时没有任何反应。无论如何,当我收到 directoy not found 错误时,我正在尝试编译 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 (
希望对您有所帮助