android ndk 开发

来源:互联网 发布:痘痘肌洗面奶推荐 知乎 编辑:程序博客网 时间:2024/06/15 23:24

使用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 1