With Android Studio 2.2, and the new C++ support they added; can I now write and compile inside android studio, or do I need to compile and import my libraries separately
-
Follow [this](https://developer.android.com/ndk/guides/cpp-support.html) – Real73 Nov 01 '16 at 22:12
-
Ok. I usually just use java for android projects, but got SUPER excited when I saw clang++ getting added during updates. I've been using C++ for a few years, whereas java is fairly new to me. If I'm reading your link right, it is saying that while support exists; for something minor I'm better off using java? – Norman Rockwell Nov 01 '16 at 22:34
2 Answers
Short answer: Yes, you can.
Here is what you can do 1
1) In Android Studio, right click on your module ==> New ==> Package
2) name the package (folder) cpp
(or you can name it jni
)
3) you will see the cpp
directory on the left.
4) You can create .cpp
, .h
and other files within that folder.
Nowm you have to tell gradle
how to build that.
You need install CMake
. 2
1) Go to Preferences ==> Android SDK ==> SDK Tools ==> CMake
2) Select that and click Apply and Ok
Now, you need to add a CMakeLists.txt
file to your project.
Path: my_project/app/CMakeLists.txt
This is what the file should look like:
# https://developer.android.com/studio/projects/add-native-code.html#create-cmake-script
# Minimum version of CMake
cmake_minimum_required(VERSION 3.4.1)
# adding CEC library
# add_library structure: add_library(lib_name lib_type_STATIC_or_SHARED source_file_path)
add_library(my_lib_name SHARED src/main/jni/my_cpp_file.cpp)
# include_directories is to provide the path to you native lib code
# include_directories structure: include_directories(native_lib_folder_path)
include_directories(src/main/jni/)
# adding Android log library
# find_library is used to find NDK API libraries (built in NDK libs)
# find_library structure: find_library(name_you_want_to_call_the_lib lib_name_in_ndk_api)
find_library(log-lib log)
# linking log lib to our native lib
# once you find the library, you have to link that library with your native library
# target_link_libraries structure: target_link_libraries(you_native_lib lib_found_using_find_library)
target_link_libraries(my_lib_name ${log-lib})
And final step: add the following to your build.gradle
:
externalNativeBuild {
cmake {
path 'CMakeLists.txt'
}
}
You should be able to build it now.

- 4,466
- 5
- 39
- 73
-
-
Hi! @th3pat3I can you help me solve this please? As it seems you have more knowledge about NDK. Really appreciate if I get your help on this: https://stackoverflow.com/q/44281689/1468354 – AkshayT Jun 01 '17 at 09:30
-
@THEPATEL I have around 8 .cpp files so do I need to include all of them in CMakeLists.txt file? – Ashish Jain Nov 28 '18 at 09:20
th3pat3l's answer is works fine, but the official documentation for how to add C++ to a project is a little different. Here it is:
https://developer.android.com/studio/projects/add-native-code.html#create-sources
The main difference is the use of file->new->package. The package concept is for adding a java package and has a side effect of creating a folder.
You can do the same thing more directly by switching to project view and just creating the folder where you want it in the directory.

- 621
- 5
- 7