安卓学习日记——NDK开发

Android-NDK开发入门 / 省略引用的第三方库可以看到,相比普通的Android应用,build.gradle配置中多了两个externalNativeBuild配置项。其中,defaultConfig里面的的externalNativeBuild主要是用于配置Cmake的命令参数,而外部的externalNativeBuild的主要是定义了CMake的构建脚本CMakeLists.txt的路径。 阅读详情

NDK下载地址:https://developer.android.google.cn/ndk/downloads/index.html
解压完之后配置Path
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:ems="10"
        android:id="@+id/editText"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:ems="10"
        android:id="@+id/editText1"
        android:layout_below="@+id/editText"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignRight="@+id/editText"
        android:layout_alignEnd="@+id/editText" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="加法运算"
        android:onClick="addClick"
        android:id="@+id/button"
        android:layout_below="@+id/editText1"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="结果:"
        android:id="@+id/textView"
        android:layout_below="@+id/button"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

MainActivity

package com.example.ndk;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private EditText editText_num1,editText_num2;
    private TextView textView_result;
    //加载动态链接库
    static
    {
        System.loadLibrary("hello");
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText_num1= (EditText) findViewById(R.id.editText);
        editText_num2= (EditText) findViewById(R.id.editText1);
        textView_result= (TextView) findViewById(R.id.textView);
    }
    //声明一个本地方法,该方法由C或c++实现
    public native int add(int num1,int num2);
    public void addClick(View v){
        String num1=editText_num1.getText().toString();
        String num2=editText_num2.getText().toString();
//调用本地方法
        int result= add(Integer.parseInt(num1),Integer.parseInt(num2));
        textView_result.setText("结果:"+result);
    }
}


在这里插入图片描述
com_example_ndk_MainActivity.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_ndk_MainActivity */

#ifndef _Included_com_example_ndk_MainActivity
#define _Included_com_example_ndk_MainActivity
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_ndk_MainActivity
 * Method:    add
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_example_ndk_MainActivity_add
  (JNIEnv *, jobject, jint, jint);

#ifdef __cplusplus
}
#endif
#endif

hello.c

#include "com_example_ndk_MainActivity.h"
JNIEXPORT jint JNICALL Java_com_example_ndk_MainActivity_add
  (JNIEnv * env, jobject obj, jint num1, jint num2){

    return num1+num2;
  }

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= hello
LOCAL_SRC_FILES := hello.c
include $(BUILD_SHARED_LIBRARY)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
效果
在这里插入图片描述

Android Gradle编译学习日记之一(搭建 Gradle 环境以及编译 Android 应用) 什么你还在用 Eclipse 进行 Android 开发,不要吧。。。。 Google 都已经将 Android Studio 设置为默认推荐工具了,还不赶紧使用。 But at first, 不如先看看如何使用 Gradle 进行 Android 编译吧 阅读详情

相关推荐

告别PS串口焦虑:深入解析AXI Uartlite IP核如何将ZYNQ PL任意引脚变成串口(从Vivado约束到驱动文件全解析)

本文深入解析AXI Uartlite IP核如何将ZYNQ PL任意引脚变成串口,从Vivado约束到驱动文件全解析。通过AXI Uartlite IP核,开发者可以突破PS端UART数量限制,实现高效串口通信。文章详细介绍了IP核架构、Vivado工程配置、驱动开发及调试技巧,帮助开发者快速掌握这一技术。

weixin_33736649的博客 467

Android NDK开发基础

仅作为个人学习记录,请小心求证。 https://developer.android.com/ndk/guides?hl=zh-cn 前言 NDK即Native Development Kit,是Android上用来开发c/c++的开发工具包。 安装步骤:https://developer.android.com/studio/projects/install-ndk 一、基础用法 在local.properties中配置ndk目录: ndk.dir=/Users/bc/android-ndk-r1.

BC工坊 5181

思科—OSPF多区域配置实验

实验目的:配置OSPF多区域,使得不同网段的PC互相ping通。 网络拓扑如下: R0的配置 Router>en Router#conf t Router(config)#int g0/1 Router(config-if)#ip add 192.168.1.1 255.255.255.0 Router(config-if)#no shut Router(config-if)#exit Router(config)#int g0/0 Router(config-if)#ip add 192.168.

m0_46237205的博客 1万+

Android Studio 进行NDK开发,实现JNI,以及编写C++与Java交互(Java调用本地函数)并编译出本地so动态库

NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。就会生成两个文件这几个so文件,如下图一,然后就能正常获取到C++文件(也就是cpp文件)中的数据了,还可以把so动态库提供给第三方使用,具体方式详见。在android的JNI中,要先将相应的C/C++打包成so库,然后导入到lib文件夹中供java调用。(5)安卓中的so文件是什么?

UrasakiNakajima的博客 8428

工业自动化中气动夹爪选型、调试与维护全流程实战解析

在工业自动化领域,气动执行元件是实现精准抓取与搬运的基础。其工作原理是通过压缩空气驱动气缸,转化为直线或旋转运动,从而控制夹爪的开合。这类技术因其结构简单、响应快速、成本低廉及维护方便,在自动化产线中具有极高的技术价值,是实现高效、可靠物料搬运的核心单元。其典型应用场景涵盖电子装配、汽车制造、食品包装等行业的上下料、分拣与定位工序。本文以工业自动化中常见的二指平行气动夹爪(常被工程师代号化为“Gripper-A”)为例,深入剖析其从硬件选型、气动系统集成到程序逻辑联锁的完整工程实践。内容聚焦于夹持力计算中惯

weixin_42629671的博客 366

基于C#的机器人控制框架:如何将ROS与硬件集成

本文探讨了如何利用C#与ROS(Robot Operating System)集成开发机器人控制系统。通过ROSSharp库和rosbridge中间件,实现了C#与ROS的WebSocket通信,并展示了硬件控制模块的设计方法。文章详细介绍了电机控制的串口通信实现、ROS消息订阅机制,以及性能优化和容错处理策略,最终构建了一个智能小车控制框架的案例。这种C#与ROS的集成方案为机器人开发提供了跨平台支持,同时兼顾了系统的高效性和可靠性。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1140

安卓系统开发之NDK

native

Gordon的博客 1597

Java与OSG的梦幻联动:深入编译OpenSceneGraph的Java JNI桥梁,开启3D视觉盛宴的奇幻之旅

🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀在编译OpenSceneGraph (OSG) 的Java版本时,首先需要了解OSG本身是一个主要用于3D图形和视觉仿真的开源库,它主要支持C++。然而,OSG 也支持通过JNI(Java Native Interface)与Java集成,这允许Java程序调用OSG的C++库。

java专栏 869

Android之NDK开发初体验

作为Android开发人员,没有接触过NDK开发也接触过so文件吧。其实NDK编程也没有看来的那么隐秘,今天我们来看看咱们利用NDK来写出自己的so文件

stven_king的专栏 8712

FakeNewsGPT4:通过知识增强的大规模视觉语言模型推进多模态假新闻检测

当前,多模态假新闻的大量涌现导致了显著的分布差异,这一现状亟需我们开发具备广泛适用性的检测器。然而,现有假新闻检测器因特定领域内的训练方式,难以有效获取开放世界中的事实信息。这种训练的封闭性限制了传统检测器的能力,特别是在面对跨域假新闻时,其表现往往不尽如人意。具体而言,开放世界中的假新闻在两个方面具有显著的分布差异:一方面,其操纵内容多种多样,新闻的任一部分都可能受到创意策略的操控;另一方面,真实背景复杂多变,不同地区的新闻背景和主题焦点存在显著差异。

qq_52053775的博客 822

YOLO11涨点优化:原创自研 | 魔改Bottleneck,具备多尺度和特征通道融合的结构

可以将C3k2_MSAMCS放在neck,或者backbone和neck同时修改,具体看自己数据集的涨点情况决定

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1651

安卓开发学习日记第一天(笑)_Android Studio3.6安装_莫韵乐的快乐笔记

安卓开发学习第一天 Android Studio3.6安装 没想到终于要写出自己的第一个博客了 反正是第一篇,有没有人看都无所谓(理智:129/129) 万事开头难,做下去就容易很多了 言归正传 工欲善其事,必先利其器 要学习安卓开发当然少不了Android Studio (啊?你用Eclipse?那没事了,以下都不用看了) 而且是Win10系统哦~ (对,不教win7和xp的安装步骤) 首先我们...

莫韵乐的博客 734

RT-DETR改进策略【模型轻量化】| 替换骨干网络为 2024轻量化网络MoblieNetV4:移动生态系统的通用模型

本文记录的是基于MobileNet V4的RT-DETR目标检测轻量化改进方法研究。通过整合UIBMobile MQA以及优化的NAS策略能够在在不降低性能指标的前提下,降低计算成本。本文配置了原论文中和五种模型,以满足不同的需求。

Limiiiing的博客 1922

android cmake 打印_【Android NDK】(二)打印日志

NDK开发,打印日志也是一个很重要的功能,新建NDK工程的时候会自动集成log的库,下面介绍下手动添加log日志库的方法。一:build.gradle增加log的库android {...ndk {ldLibs "log"}}二:CMakeLists.txt增加log库和依赖find_library(log-liblog)target_link_libraries(${PROJECT_NAME}$...

weixin_42363231的博客 738

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android 学习日记(二)android studio运行github代码

android studio作为android快速开发的主流应用,用来开发android项目可以说是十分方便了,最大的优点就是结构清晰,自带组件快速添加以及拖拽式的页面设计好用又直观。。。优点还有很多,学的还不深,以后再做总结。 1.项目结构说明 参考文章 Android应用程序剖析 这个网站是英文的,但是有很多的讲解和代码案例,很适合入门学习使用。 认识完项目结构之后,你就可以重点关注各部分的实...

rainyrainbow的博客 2171

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android Studio NDK 版本巨坑at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:877)

A problem occurred configuring project ':IflytekAIME'. > java.lang.NullPointerException (no error message) * Try: Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Exception is: org.gradle.api.ProjectCo.

ysc123shift的博客 6460

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ncnn移植安卓踩坑日记

这几天一直在做ncnn移植安卓的相关编译,总算是搞定了。其间遇到了不少问题,都是些编译的小问题,但对我这个编译小白来说还是百度了好久,记录一下,希望能帮到有需要的同学~~ 1.电脑编译及测试 首先,电脑版的编译官方文件上就有,tencent/ncnn 大致就是下载文件, cd ncnn-root mkdir build cd build cmake .. make sudo make instal...

xinggui_baby的博客 3719

安卓开发小程序源代码!字节跳动Android面试凉凉经,讲的明明白白!(1)

看到这篇文章的人不知道有多少是和我一样的Android程序员。35岁,这是我们这个行业普遍的失业高发阶段,这种情况下如果还不提升自己的技能,进阶发展,我想,很可能就是本行业的职业生涯的终点了。我们要有危机意识,切莫等到一切都成定局时才开始追悔莫及。只要有规划的,有系统地学习,进阶提升自己并不难,给自己多充一点电,你才能走的更远。千里之行始于足下。这是上小学时,那种一元钱一个的日记本上每一页下面都印刷有的一句话,当时只觉得这句话很短,后来渐渐长大才慢慢明白这句话的真正的含义。

2401_84520118的博客 713

RockPi4安卓开发日记(二)

1、开发环境:操作系统Ubuntu,开发工具:android studio4.2.1。之前我在win10和MAC OS都有用过android studio,对比发现ubuntu支持非常友好

weixin_45464501的博客 617

良心解析 | 搭建NDK环境历程及问题记录 暨 Android Studio 2.3.3 to 3.3 填坑之路(Update坑 + AVD坑 + NDK坑)...

前言(历程概况) (前言部分有点日记性质,对整个历程做了一个概况,如果你时间紧迫,可以跳过这部分直接看正文部分,正文部分分点分部分给出问题的描述和对应的解决方法) 去年差不多也是这个时候,补了TensorFlow的坑,今年补AS的,莫名倒是有点喜感。 话说前头,这里强调一下,本文所有下载加载过程都是没有使用VPN的,也就是说不用科学上网,但!!!需要优...

aaLiweipeng的博客 562

人工智能小白日记 人脸检测识别之4 移植facenet到安卓平台

文章目录前言正文1-1 如何移植1-2 转换格式1-3 安卓运行环境配置小结 前言 因为业务需要最近开始做tensorflow的移植工作了,一通下来发现有坑无数,萌新表示只能顺着大佬们的步伐前进。 正文 1-1 如何移植 tensorflow官方提供了对移动端的支持。tf lite https://tensorflow.google.cn/lite/guide 由两个模块组成: tflite解释...

kkae8643150的专栏 4648

面试第四轮,学习日记02 继承,Android架构师教你如何突破瓶颈

现在新技术层出不穷,如果每次出新的技术,我们都深入的研究的话,很容易分散精力。新的技术可能很久之后我们才会在工作中用得上,当学的新技术无法学以致用,很容易被我们遗忘,到最后真的需要使用的时候,又要从头来过(虽然上手会更快)。我觉得身为技术人,针对新技术应该是持拥抱态度的,入了这一行你就应该知道这是一个活到老学到老的行业,所以面对新技术,不要抵触,拥抱变化就好了。Flutter 明显是一种全新的技术,而对于这个新技术在发布之初,花一个月的时间学习它,成本确实过高。

2301_79098686的博客 583

2024年最全学习日记02 继承(1),2024年最新测试开发社招面经

针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84562143的博客 762

android项目开发实战入门瞬间日记,kotlin面试题

其实很简单就下面这张图,含概了Android所有需要学的知识点,一共8大板块:架构师筑基必备技能Android框架体系架构(高级UI+FrameWork源码)360°Androidapp全方位性能调优设计思想解读开源框架NDK模块开发移动架构师专题项目实战环节移动架构师不可不学习微信小程序混合开发的flutterAndroid学习的资料我呢,把上面八大板块的分支都系统的做了一份学习系统的资料和视频,大概就下面这些,我就不全部写出来了,不然太长了影响大家的阅读。

2401_83641360的博客 717

android项目开发实战入门瞬间日记,android开发科学计算器

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

2401_84413420的博客 429

探索Android实践之道:PracticeDemo之旅

探索Android实践之道:PracticeDemo之旅 在浩瀚的开源海洋中,有一颗曾经璀璨的星——PracticeDemo。虽然它已宣布退役,但它留下的光辉却值得每一位Android开发者驻足探索。这不仅仅是一个普通的示例代码库,而是一本活生生的Android技术成长日记,记录着作者的技术实践和创新思维的火花。 项目介绍 PracticeDemo最初是为了响应读者的需求,从实现《一步一步教你实现...

gitblog_00831的博客 984
上一篇: 安卓学习日记——Linux常用命令
下一篇: 安卓学习日记——传感器
chen_xiaoke
博客等级 码龄8年 32粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值