android ndk 开发

本文介绍了如何在Android Studio 2.0环境下进行NDK开发,涵盖了从设置环境到实际编写JNI代码的全过程,帮助开发者深入理解Android原生库的集成和调用。
摘要由CSDN通过智能技术生成

使用android studio2.0进行ndk开发

首先

1、distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip


2

classpath "com.android.tools.build:gradle-experimental:0.6.0-beta5"

3、gradle文件修改
gradle文件内容:
apply plugin: 'com.android.model.application'
model {
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.2"

        defaultConfig {
            applicationId "com.shirun.jni"
            minSdkVersion.apiLevel = 15
            targetSdkVersion.apiLevel = 23
        }
        buildTypes {
            release {
                minifyEnabled = false
                proguardFiles.add(file('proguard-rules.txt'))
            }
        }
    }
    android.ndk{
            moduleName = "myJni"
    }
    android.productFlavors {
        create("arm") {
            ndk.abiFilters.add("armeabi")
        }
        create("arm7") {
            ndk.abiFilters.add("armeabi-v7a")
        }
        create("arm8") {
            ndk.abiFilters.add("arm64-v8a")
        }
        create("x86") {
            ndk.abiFilters.add("x86")
        }
        create("x86-64") {
            ndk.abiFilters.add("x86_64")
        }
        create("mips") {
            ndk.abiFilters.add("mips")
        }
        create("mips-64") {
            ndk.abiFilters.add("mips64")
        }
        // To include all cpu architectures, leaves abiFilters empty
        create("all")
    }

}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
}
4、在APP目录下右击新建jni目录

5、新建一个类,进行加载jni

6.生成c文件

可以看到在jni下生成了myJni.c文件,文件内容就一个include  

7.生成.h头文件
在工具栏点击Build->Make Project
然后在项目的main目录下输入命令 javah -d jni -classpath D:\Android\sdk\platforms\android-23.android.jar;..\..\build\intermediates\classes\all\debug com.shirun.jni.MyJni

然后可以看到自己的jni目录下多了个.h的头文件

8、然后将我们的myJni.c文件稍作修改

 
9、在main中运行:
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tv = (TextView) findViewById(R.id.tv);
        MyJni myJni = new MyJni();
        tv.setText(myJni.getString("sdd"));
    }
}
效果:

10。最后说一下我们生成的.so库的位置,如果拿错了.so类库,在别的地方是用不了的,当初在这个坑里躺了几个小时.......
 

 
参考资料:
http://www.jianshu.com/p/7844aafe897d
 
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值