Android Studio NDKが開発したjni生成soファイル

4954 ワード

最近どのようにコードをsoパッケージに书いて、コードが解読されないようにしたいと思っています~もちろん、誰かが考えたら方法があります.ハハハ!
さあ!
ターゲット:アンドロイドstudioでsoパッケージを生成する;
ツール:Android studio 2.0;
1、NDKをダウンロード私がダウンロードしたのはandroid-ndk-r 13 b(http://www.androiddevtools.cn/)
2、システム環境変数の設定Path D:android-ndk-r 13 b-windows-x 86_64\android-ndk-r13b
AndroidStudio NDK开发 之 jni生成so文件_第1张图片

3、cmdでndk-buildを成功と記す
Android NDK: Could not find application project directory ! Android NDK: Please define the NDK_PROJECT_PATH variable to point to it. D:\android-ndk-r13b-windows-x86_64\android-ndk-r13b\build\\..\build\core\build-local.mk:151: *** Android NDK: Aborting    .  Stop.
4、アンドロイドstudioのndkパスを配置する
D:\android-ndk-r13b-windows-x86_64\android-ndk-r13b
5、toolsをダウンロードするのは以下の図で、LLDB、NDKとCMakeはスクリーンショットがありません

次のコード
一、プロジェクトのbuild_gradleのandroidディレクトリの下
defaultConfig {
    minSdkVersion 14
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    ndk{
        moduleName"ndk"
        abiFilters "armeabi","armeabi-v7a","x86"//      abi      so ,      
    }
}
sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}

二、javaクラスの作成
/**
 * Created by haohuo on 2017/8/17.
 */
public class JniUtils {
    Context mContext;

    public JniUtils(Context context) {
        mContext = context;
    }

    static {
        System.loadLibrary("ndk");//          build.gradle ndk    moduleName
    }

    public native String NDK();


三、Terminalでコマンドを入力する

cd app/src/main/javaターゲットディレクトリへ
javah -jni com.marvin.demo.utils.JniUtils

四、appディレクトリの下でjniフォルダを作成する

Androidを作成mkファイルコード
コードダイレクトコピー
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=ndk
LOCAL_SRC_FILES :=ndk.c//  .c      java  build_gradle       
include $(BUILD_SHARED_LIBRARY)

対応を作成します.cファイル、私の名前はndkです.c
#include "com_marvin_demo_utils_JniUtils.h"
//         .h   

JNIEXPORT jstring JNICALL Java_com_marvin_demo_utils_JniUtils_NDK
   (JNIEnv *env, jobject obj){
         return (*env)->NewStringUTF(env,"Im NDK");
   }


万里の江山はすでに大半を完成したので,焦らずに最後の震えになった.
五、appのmainディレクトリの下でjniLibsを作成する

Terminalでコマンドndk-buildを実行
不思議な発見jniLibsはよく知っているarmなどのファイルを生成します
終わりだ!