Issue
I am using Android Studio 1.3 with the experimental NDK plugin enabled. I have dropped the entire Box2d folder into the jni folder in android studio along with Android.mk and Application.mk. Android studio seems to be completely ignoring the .mk files since when I change them nothing happens. Anyway I'm trying to compile Box2d when I get directoy not found errors. 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'
}
Any tips would be much appreciated. Thanks.
Solution
Hey I had a similiar issue. The gradle plugin does not respect your Android.mk file. It creates a temp Android.mk for your project.
To add Cflags for in the new experimental android plugin:
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'
}
Also it looks like you are compiling against sdk 10. @ph0b (https://stackoverflow.com/a/31365158/5105445) posted an answer that make it impossible to run on anything < lolipop.
Hope it helps
Answered By - canuc
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.