android studio 1.0 开发 ndk 调用 c++ so库

一个没用过java和安卓的人使用android studio开发带c++ so库的安卓程序用例(以ndk的hello-jni为例),对于不熟悉java和安卓的人来说这个很花时间,希望通过这篇文章帮助跟我一样的人,欢迎随便转载:

1.下载安装android sdk和ndk,ndk r10(目前最新)是单独可以编译c++的,无需cygwin。

2.安装android studio。

3.通过ndk-build命令编译sample中的hello-jni,生成so库。

4.在android studio新建项目,把生成的全部so文件连同处理器文件夹一同拷贝到项目的libs文件中。修改build.gradle文件,添加sourceSets,内容如下:

apply plugin: ‘com.android.application‘
android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
    defaultConfig {
        applicationId "com.sample.hello"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
        }
    }
    sourceSets {
        main {
            jniLibs.srcDirs = [‘libs‘]
        }
    }
}
dependencies {
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    compile ‘com.android.support:appcompat-v7:21.0.3‘
}

5.添加java文件hellojni文件(注意package):

基本拷贝的sample中的hellojni文件,代码如下(该代码略有不同,我给stringFromJNI传string参数,可自行参考ndk中sample/src中的hellojni文件):

/*
 * Copyright (C) 2009 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.example.hellojni;
public class HelloJni
{
    /* A native method that is implemented by the
     * ‘hello-jni‘ native library, which is packaged
     * with this application.
     */
    public native String  stringFromJNI(String msg);
    /* This is another native method declaration that is *not*
     * implemented by ‘hello-jni‘. This is simply to show that
     * you can declare as many native methods in your Java code
     * as you want, their implementation is searched in the
     * currently loaded native libraries only the first time
     * you call them.
     *
     * Trying to call this function will result in a
     * java.lang.UnsatisfiedLinkError exception !
     */
    public native String  unimplementedStringFromJNI();
    /* this is used to load the ‘hello-jni‘ library on application
     * startup. The library has already been unpacked into
     * /data/data/com.example.hellojni/lib/libhello-jni.so at
     * installation time by the package manager.
     */
    static {
        System.loadLibrary("hello-jni");
    }
}

6.项目中调用so库函数stringFromJNI,首先添加引用:

import com.example.hellojni.HelloJni;

再调用代码:

finalEditText editText =(EditText) findViewById(R.id.editText);
HelloJni hj =newHelloJni();
editText.setText(hj.stringFromJNI("this is java!"));

7.打包发布:

8.其他:

ndk默认是不支持c99(c++),如果需要c99,则修改Android.mk文件,添加LOCAL_CFLAGS := -std=c99

LOCAL_CFLAGS := -std=c99

时间: 2024-10-09 21:29:02

android studio 1.0 开发 ndk 调用 c++ so库的相关文章

Android Studio 1.0开发环境配置(windows7)

一: JDK配置. 配置环境变量,可参考http://blog.csdn.net/u013670933/article/details/41623865 资源(jdk-7u17-windows-x64)   链接: http://pan.baidu.com/s/1pJ2Z419 密码: 7ga8 注意:1.版本要求1.7及以上. 2.JDK和操作系统位数要保持一致. 二: Android Studio配置. 资源 android-studio-bundle-135.1641136(包含SDK)链

Android Studio 3.0 下载 使用新功能介绍

谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快.(英语一般,有些翻译不太好) 下载地址 https://developer.android.google.cn/studio/archive.html 选择显示全部即可看到下载地址,这里给出来了. Windows (64-bit): android-studio-ide-171.4010489-windows.zip (702075896 bytes) https://dl.google.c

Google发布官方集成开发环境Android Studio 1.0

Google发布官方集成开发环境Android Studio 1.0    http://www.36kr.com/p/217653.html Android Studio系列教程一--下载与安装  http://stormzhang.com/devtools/2014/11/25/android-studio-tutorial1/ http://android-studio.org/

Android Studio 1.0.1 + Genymotion安卓模拟器打造高效安卓开发环境

我们开发安卓大多是使用Eclipse和安卓SDK中自带的安卓模拟器.当然,Google早就推出了自己的安卓开发环境——Android studio,在不久前,Google发布了Android Studio 1.0,个人感觉使用起来还是不错的.之前下载过一些Android studio的早期版本,但是都因为"网络问题"而安装失败,无奈删除.而这一次,Android studio 1.0下载后,不需要再联网下载东西了,直接解压就可以使用.  一.Android Studio 1.0.1的下

【转帖】Google发布了安卓开发环境Android Studio 1.0

我们开发安卓大多是使用Eclipse和安卓SDK中自带的安卓模拟器.当然,Google早就推出了自己的安卓开发环境——Android studio,在不久前,Google发布了Android Studio 1.0,个人感觉使用起来还是不错的.之前下载过一些Android studio的早期版本,但是都因为"网络问题"而安装失败,无奈删除.而这一次,Android studio 1.0下载后,不需要再联网下载东西了,直接解压就可以使用.  一.Android Studio 1.0.1的下

【Android Developer Blog】Android Studio 2.0(07 APRIL 2016)

Android Studio 2.0 Android Studio 2.0是打造高品质,高性能应用的Android开发平台,包括手机和平板,Android Auto,Android Wear和 Android TV.作为Google官方的IDE,Android Studio包含了你需要的一切,包括代码编辑器(code editor),代码分析工具(code analysis tools),模拟器(emulators )等.Android Studio 2.0 stable有着更快的编译速度,更好

[Android] 环境配置之正式版Android Studio 1.0

======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 网站:www.qiujuer.net 开源库:Genius-Android 转载请注明出处:http://blog.csdn.net/qiujuer/article/details/41843095 ========================================================

Android Studio 1.0 稳定版发布(含下载链接和使用教程)

本文已同步发布到个人博客:liyuyu.cn 经过两年的发展,Google于今天发布了Android Studio 1.0--针对Android开发者集成开发环境(IDE)的第一个稳定版本. Android Studio有四个不同的版本(你可以在页面里通过设置更新来改变版本),包括Canary. Dev. Beta和Stable.下面是它们的详细介绍: Canary版本:这个版本的更新频率大概是一周,当它们被测试时,它们仍受制于Bug,Google希望开发者能够尽快的发现新Bug. Dev版本:

Android Studio 3.0 新特性

Kotlin 集成 基于IDEA 2017.1 版本构建 对Android O 的支持 对Java8的支持 新的Android Gradle 插件 Google's Maven repository 新的Android分析器(New Android Profiler) APK 调试器 新的设备文件浏览器 Instant Apps support 布局编辑器改进 新的Android Tings 模板 Layout Inspector改进 APK Analyzer 改进 新的Android模拟器功能