如何将JNI(C/C++本机代码)添加到现有的Android Studio项目中

前端之家收集整理的这篇文章主要介绍了如何将JNI(C/C++本机代码)添加到现有的Android Studio项目中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
就像标题所说 – 如何在不破坏当前项目(包括gradle和proguard设置)的情况下向现有 Android Studio项目添加本机代码

解决方法

从现有项目中执行以下步骤:

1.修改build.gradle(模块应用程序)看起来像这样(很多变化!):

  1. apply plugin: 'com.android.model.application'
  2.  
  3. model {
  4. android.signingConfigs {
  5. create ("myConfig") {
  6. keyAlias '--your-key-alias--'
  7. keyPassword '--key-password--'
  8. storeFile file('--/path/to/keystore.jks--')
  9. storePassword '--store-password--'
  10. }
  11. }
  12. android {
  13. compileSdkVersion 25
  14. buildToolsVersion '25.0.2'
  15.  
  16. defaultConfig {
  17. applicationId "--your.app.name--"
  18. minSdkVersion.apiLevel 19
  19. targetSdkVersion.apiLevel 25
  20. versionCode 1
  21. versionName "1.0"
  22. }
  23. buildTypes {
  24. release {
  25. minifyEnabled true
  26. proguardFiles.add(file('proguard-android-optimize.txt'))
  27. proguardFiles.add(file('proguard-rules.pro'))
  28. signingConfig = $("android.signingConfigs.myConfig")
  29. }
  30. }
  31. ndk {
  32. moduleName "--c-file--"
  33. ldLibs.addAll(["android","log"])
  34. }
  35.  
  36. }
  37. android.dexOptions {
  38. javaMaxHeapSize "2048m"
  39. }
  40. }
  41.  
  42. dependencies {
  43. compile fileTree(dir: 'libs',include: ['*.jar'])
  44. testCompile 'junit:junit:4.12'
  45. compile 'com.android.support:appcompat-v7:25.3.1'
  46. }

您可以复制/粘贴上面的代码,并使用“–value–”修改至少值以匹配您的值.

2.修改build.gradle(项目)

它说的是这样的:

  1. dependencies {
  2. classpath 'com.android.tools.build:gradle:2.3.3'
  3. }

对此:

  1. dependencies {
  2. classpath 'com.android.tools.build:gradle-experimental:0.9.3'
  3. }

我的示例0.9.3中的数字是最新版本的gradle-experimental,可以找到here.最后将gradle-wrapper.properties中的gradle版本更改为Android Studio推荐的版本(如果您还没有).

3.移动proguard设置文件

proguard-android-optimize.txt到app / proguard-android-optimize.txt

4.从java添加调用

像这样

  1. static {
  2. System.loadLibrary("--c-file--");
  3. }
  4. private native byte my_jni(Context context,byte[] mByte,int i);

改变你的需求.上面的例子加载了c文件(没有扩展名写入) – 在gradle文件中声明的相同,并调用函数my_jni,传递应用程序的Context,一些字节数组和一些int,期望函数返回一个字节.

5.在JNI中创建函数

现在,您的功能名称以红色突出显示 – 允许Android Studio创建它创建功能…单击行上的红色指示灯.这将在您的c文件中创建该函数并将焦点更改为它.

完成

进一步阅读here.

提示

>注意释放malloc的所有内容,为每个GetByteArrayElements释放ReleaseByteArrayElements等等>注意如何正确地将一些危险值从C返回到Java,如数组和字符串

猜你在找的C&C++相关文章