jniレイヤコードの作成およびsoライブラリの生成

2864 ワード

本文の内容
Android Jniレイヤ間のデータ型の変換
の準備を
開発デバッグを行う前に、開発環境の構築、開発前にndkをインストールし、デバッグが必要な場合はLLDBサーバをダウンロードしてデバッグするなどの準備をしなければなりません.準備が整ったらまずプロジェクトを建てる
新規プロジェクト
次にndkを関連付ける
OKに成功しました.次にgradle-experimentalプラグインを追加します.この3つのファイルを変更する必要があります.
./build.gradle
./app/build.gradle
./gradle/wrapper/gradle-wrapper.properties

プロファイル

./build.gradle

  com.android.tools.build:gradle-experimental   com.android.tools.build:gradle

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            //classpath 'com.android.tools.build:gradle:2.3.3'
            classpath "com.android.tools.build:gradle-experimental:0.9.3"

            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }

./app/build.gradle

        ,       :
//  com.android.model.application    com.android.application
  apply plugin: 'com.android.model.application'
  model {
      android {
          compileSdkVersion = 25
          buildToolsVersion = '25.0.3'
          defaultConfig {
              applicationId = "cn.zkteco.jnidemo"
              minSdkVersion.apiLevel = 15
              targetSdkVersion.apiLevel =  25
              versionCode = 1
              versionName = "1.0"
          }

          //   NDK
          ndk {
              //   so   ,    
              moduleName ="aes128"
              toolchain = 'clang'
              CFlags.add('-std=c99')
              //      
              ldLibs.addAll(['android','OpenSLES', 'log'])
              //     abi   so 
              abiFilters.addAll(['armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86']) //, 'x86_64', 'mips', 'mips64'
              debuggable = true
          }

          buildTypes {
              release {
                  minifyEnabled = false
                  proguardFiles.add(file('proguard-android.txt'))
              }
          }
      }
  }

  dependencies {

  }


./gradle/wrapper/gradle-wrapper.properties

 distributionUrl        

  distributionUrl=https\\://services.gradle.org/distributions/gradle-3.3-all.zip

まとめ


もしこの時すべてokならば、クラスを建てましょう.このクラスはC/C++コードを呼び出すために使われています.
jniフォルダとCコードを自動的に生成
ノーマルコール
もちろんコードもよくデバッグしてasのedit configurationsをクリックします
選択肢はいくつかありますが、一般的にはnative、auto、javaの間で切り替えられます.また、デバッグするときは、コードを修正したら、再実行する前にcleanが一番いいです.makeはコードにバグがないときに持っていくことができます.soライブラリ、具体的なパスは:appbuildintermediatesbinariesdebug
今はsoを使ってもいいです.もし私のコードを詳しく見たいなら、私のgithubに移動してください.また悪くない一日が過ぎた.
どんな問題があっても一緒に交流することができます.