当前位置: 首页 > news >正文

快速做网站的技术/宁波网站推广找哪家

快速做网站的技术,宁波网站推广找哪家,专门做pp他的网站,access 做网站 出现问题Android NDK 简单来说就是可以让你的应用使用natice-code语言, (比如C ,C)的工具集 一:what is the ndk Ndk 是允许你在你的工程中可以使用native-code (比如C or c)的工具, 你可以利用ndk来构建你的natice-app 正如我们知道的那样, Java 是构建android…

Android NDK 简单来说就是可以让你的应用使用natice-code语言, (比如C ,C++)的工具集

一:what is the ndk

Ndk 是允许你在你的工程中可以使用native-code (比如C or c++)的工具, 你可以利用ndk来构建你的natice-app
正如我们知道的那样, Java 是构建android app 的默认语言, 然而, java 代码很容易被反编译, 但是这对C++ code 来说这并不简单, 并且c++ 代码更加高效

二:why is ndk

C++ 代码反编译困难

对于计算复杂量大的代码, C or C++ code can increase the performance of your app

三:buliding native app

如果你使用android studio 开发, 你需要下载安装ndk包, More info: NDK

1, 首先在代码中声明要在C++ code中要实现的native方法

/*** auth:huanjulu*/
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);setSupportActionBar(toolbar);((TextView) findViewById(R.id.text)).setText(nativeMethod());}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}/*** native code** @return*/public native String nativeMethod();}复制代码

2, 对包含native 关键字方法的类, 生成.h 头文件

进入到本地Java文件夹下 ,在Terminal input the follow commond

 javah -d ../jni jniproject.ndkproject.MainActivity复制代码

first , jniproject.ndkproject is your package name and MainActivity is the class name that contains native code

and after that , you can see the .h file of MainActivity class , it looks like :

Qualified types

and we can looks what contents it contains


/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jniproject_ndkproject_MainActivity */#ifndef _Included_jniproject_ndkproject_MainActivity
#define _Included_jniproject_ndkproject_MainActivity
#ifdef __cplusplus
extern "C" {
#endif
/** Class:     jniproject_ndkproject_MainActivity* Method:    nativeMethod* Signature: ()Ljava/lang/String;*/
JNIEXPORT jstring JNICALL Java_jniproject_ndkproject_MainActivity_nativeMethod(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endif复制代码

3, android.mk``application.mk file

在你的jni directory, 新建android.mk,


LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)LOCAL_MODULE := hellojni
LOCAL_SRC_FILES := hellojni.cpp
include $(BUILD_SHARED_LIBRARY)复制代码

application.mk

APP_MODULES := hellojni  //生成的.so nameAPP_ABI := all  //生成的.so 目标cpu平台复制代码

if you want to know more information of syntax about them, here is the dox
android.mk/#intro

4, 编写你的natie-code 实现文件, (ig .cpp or .c)

#include "jniproject_ndkproject_MainActivity.h"JNIEXPORT jstring JNICALL Java_jniproject_ndkproject_MainActivity_nativeMethod(JNIEnv *env, jclass type) {return env->NewStringUTF("this code from jni cpp");
}复制代码

as wo can see that in above c++ code

first , you need to include you .hfile

#include "jniproject_ndkproject_MainActivity.h"复制代码

接下来你需要按照c++ 代码的规范编写实现方法, 请注意方法实现的命名规范 (JNIEXPORT 返回值类型 JNICALL 包名类名方法名)

5, ndk-build

under the jni dictionary, generate .so file

luhuanju:jni huanjulu$ ndk-build复制代码

接下来你需要把生成的app/src/main/libs 下的平台的.so 文件复制到 app/libs

Qualified types

6, app/build.gradle config seeting

apply plugin: 'com.android.application'android {compileSdkVersion 25buildToolsVersion "25.0.2"defaultConfig {applicationId "jniproject.ndkproject"minSdkVersion 15targetSdkVersion 25versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"ndk {//指定生成的lib,比如此时生成native.somoduleName   "hellojni"}}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {exclude group: 'com.android.support', module: 'support-annotations'})compile 'com.android.support:appcompat-v7:25.2.0'compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'compile 'com.android.support:design:25.2.0'testCompile 'junit:junit:4.12'
}复制代码

the the last step is that you just need call you natice-code library

package jniproject.ndkproject;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.widget.TextView;/*** auth:huanjulu*/public class MainActivity extends AppCompatActivity {static {System.loadLibrary("hellojni");}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);setSupportActionBar(toolbar);((TextView) findViewById(R.id.text)).setText(nativeMethod());}/*** native code** @return*/public native String nativeMethod();}复制代码

here is source code

github.com/isicout/JNI…

http://www.lbrq.cn/news/1575199.html

相关文章:

  • 河口建设局网站/百度app营销软件
  • a网站建设/百度最新秒收录方法2021
  • app制作和网站一样吗/seo排名哪家有名
  • 新网站前期seo怎么做/品牌网站建设公司
  • 安防公司做网站图片/网站建设报价单模板
  • 做美食教程的网站/2020做seo还有出路吗
  • 做外贸的免费网站有哪些/广州seo服务
  • 做货代的要注册哪种物流网站/数字营销成功案例
  • 网络营销如何进行网站推广/凡科网建站系统源码
  • 微信网页上的网站怎么做/seo关键词工具
  • 承德做网站/宣传推广的十种方式
  • 网站这么做404页面/seo研究学院
  • 太原营销型网站建设制作/网址提交
  • 做网站定金要多少/腾讯企点注册
  • 郑州建设银行网站房贷网点在哪里/公众号引流推广平台
  • 定制网站建设成本/十大外贸平台
  • 网网站建设的公司/公司网站如何推广
  • 爱名网做网站教程/东莞网站推广排名
  • 深圳企业网站制作公司怎样/怎样进行seo优化
  • 做数据的网站有哪些内容/看啥网一个没有人工干预的网
  • 网站建设作业怎么写/投放广告
  • 优的网站建设明细报价表/怎么制作个人网站
  • 怎么维护网站教程/seo技术助理
  • 淘宝客网站可以做百度推广/在线域名解析ip地址
  • 建设实验教学网站的作用/sem推广软件哪家好
  • 有名的网站建设/郑州网站技术顾问
  • 建设大学网站费用/营销网
  • 做ppt的网站 知乎/黄冈黄页88网黄冈房产估价
  • 商城网站制作的教程/上海培训机构
  • 深圳企业网站建设专业/地推平台去哪里找
  • PHP imagick扩展安装以及应用
  • 数据结构:后缀表达式:结合性 (Associativity) 与一元运算符 (Unary Operators)
  • NY198NY203美光固态闪存NY215NY216
  • 11. React组件插槽用法
  • 嵌入式硬件——ARM
  • vue excel转json功能 xlsx