[Android JNI] --- Java和Android简介

简介: [Android JNI] --- Java和Android简介

1 Java简介

1.1 Java技术体系

技术体系 说明
Java SE(Java Standard Edition):标准版 Java技术的核心和基础
Java EE(Java Enterprise Edition):企业版 企业级应用开发的一套解决方案
Java ME(Java Micro Edition):小型版 针对移动设备应用的解决方案

1.2 Java版helloeworld示例

// HelloWorld.java
public class HelloWorld {
  public static void main(String[] args) {
    System.out.print("Hello World");
  }
}
• 1
• 2
• 3
• 4
• 5
• 6

编译运行如下:

javac 编译命令、 java 执行命令

1.3 IDEA管理Java程序的结构

project(项目、工程)

module(模块)

package(包)

class(类)

Note:

1>文件名称必须与代码中的类名称一致

2>一个代码文件中可以有多个class,但是只有一个能为public,且public修饰的类名必须与文件名相同

3>java没有头文件的概念

4>所有的java 类默认继承object类

5>Java的属性控制protected > 默认> private> public

2 Android简介

2.1 android studio开发环境

概念明晰

  • Android studio
    Android Studio 目录结构:

项目下面有两个分类:一个是app(代表app模块);另一个是Gradle Scripts。其中,app下面又有3个子目录,其功能说明如下:

(1)manifests子目录,下面只有一个XML文件,即AndroidManifest.xml,它是App的运行配置文件。

(2)java子目录,下面有3个com.example.myapp包,其中第一个包存放当前模块的Java源代码,后面两个包存放测试用的Java代码。

(3)res子目录,存放当前模块的资源文件。res下面又有4个子目录:

drawable目录存放图形描述文件与图片文件;

layout目录存放App页面的布局文件;

mipmap目录存放App的启动图标;

values目录存放一些常量定义文件,例如字符串常量strings.xml、像素常量dimens.xml、颜色常量colors.xml、样式风格定义styles.xml等。

Gradle Scripts下面主要是工程的编译配置文件,主要有:

(1)build.gradle,该文件分为项目级与模块级两种,用于描述App工程的编译规则;

(2)proguard-rules.pro,该文件用于描述Java代码的混淆规则;

(3)gradle.properties,该文件用于配置编译工程的命令行参数,一般无须改动;

(4)settings.gradle,该文件配置了需要编译哪些模块。初始内容为include ‘:app’,表示只编译app模块。

(5)local.properties,项目的本地配置文件,它在工程编译时自动生成,用于描述开发者电脑的环境配置,包括SDK的本地路径、NDK的本地路径等。

1>使用xml标记描述界面,使用java代码书写逻辑

2>app工程分为2个层次,第一个层次是项目,另一个层次是模块

模块依附于项目,每个项目至少有一个模块,也能拥有多个模块

3>一般说的编译运行app,指的是运行某个模块,并非某个项目,因为模块才对应实际的app

  • android sdk
    安卓SDK:安卓SDK是用于安卓操作系统的软件开发工具包。它包含了开发安卓应用程序所需的API、库、调试器和其他工具。使用安卓SDK可以创建各种类型的安卓应用程序,包括移动应用、游戏、浏览器插件等。
  • Java sdk
    Java SDK:Java SDK是用于Java编程语言的软件开发工具包。它包含了Java编程所需的所有工具和库,如编译器、调试器、JRE等。使用Java SDK可以创建各种类型的应用程序,包括桌面应用、Web应用、移动应用等。

安装java sdk后,安装目录会有jdk jre

jre(java runtime environment):java程序运行时环境,包含jvm和运行时所需要的核心类库

jdk:java程序开发包,包含jre和开发人员使用的工具。

开发工具:编译工具Javac.exe; 运行工具java.exe

jdk,jre, jvm关系

配置环境变量

检查是否安装好:jave -version

  • native sdk
    Native SDK:Native SDK是用于本地应用程序开发的软件开发工具包。它包含了本地编程语言(如C++)所需的工具和库,如编译器、调试器等。使用Native SDK可以创建各种类型的本地应用程序,包括桌面应用、游戏、嵌入式系统等。

安卓调试

  • 安卓 模拟器 Device manager -> Create device
  • 在线真机调试

2.2 Android体系架构

2.3 Android基础知识简介

2.3.1 UI

软件设计可分2部分:编码设计和UI设计

安卓UI由布局和控件组成

2.3.2 布局和控件

布局:

布局中所有元素均可用View和ViewGroup组成

View通常绘制用户可查看并进行交互的内容

VeiwGroup是不可见容器,用于定义view和ViewGroup对象的布局结构

布局申明:在src/main/res/layout/activity_main.xml进行编辑

加载xml资源: setContentVeiw()

组件

TextView

EditText

Button

ImageView

3. Android四大组件

activity

service

BroadcastReceiver

ContentProvider

数据存储

网络编程

相关文章
|
4月前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
290 1
|
3月前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
146 1
|
3月前
|
安全 Java API
【性能与安全的双重飞跃】JDK 22外部函数与内存API:JNI的继任者,引领Java新潮流!
【9月更文挑战第7天】JDK 22外部函数与内存API的发布,标志着Java在性能与安全性方面实现了双重飞跃。作为JNI的继任者,这一新特性不仅简化了Java与本地代码的交互过程,还提升了程序的性能和安全性。我们有理由相信,在外部函数与内存API的引领下,Java将开启一个全新的编程时代,为开发者们带来更加高效、更加安全的编程体验。让我们共同期待Java在未来的辉煌成就!
71 11
|
3月前
|
安全 Java API
【本地与Java无缝对接】JDK 22外部函数和内存API:JNI终结者,性能与安全双提升!
【9月更文挑战第6天】JDK 22的外部函数和内存API无疑是Java编程语言发展史上的一个重要里程碑。它不仅解决了JNI的诸多局限和挑战,还为Java与本地代码的互操作提供了更加高效、安全和简洁的解决方案。随着FFM API的逐渐成熟和完善,我们有理由相信,Java将在更多领域展现出其强大的生命力和竞争力。让我们共同期待Java编程新纪元的到来!
105 11
|
4月前
|
存储 搜索推荐 Java
探索安卓开发中的自定义视图:打造个性化UI组件Java中的异常处理:从基础到高级
【8月更文挑战第29天】在安卓应用的海洋中,一个独特的用户界面(UI)能让应用脱颖而出。自定义视图是实现这一目标的强大工具。本文将通过一个简单的自定义计数器视图示例,展示如何从零开始创建一个具有独特风格和功能的安卓UI组件,并讨论在此过程中涉及的设计原则、性能优化和兼容性问题。准备好让你的应用与众不同了吗?让我们开始吧!
|
4月前
|
Java 调度 Android开发
Android经典实战之Kotlin的delay函数和Java中的Thread.sleep有什么不同?
本文介绍了 Kotlin 中的 `delay` 函数与 Java 中 `Thread.sleep` 方法的区别。两者均可暂停代码执行,但 `delay` 适用于协程,非阻塞且高效;`Thread.sleep` 则阻塞当前线程。理解这些差异有助于提高程序效率与可读性。
82 1
|
4月前
|
Java Android开发
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
518 1
|
4月前
|
IDE Java Linux
探索安卓开发:从基础到进阶的旅程Java中的异常处理:从基础到高级
【8月更文挑战第30天】在这个数字时代,移动应用已经成为我们日常生活中不可或缺的一部分。安卓系统由于其开放性和灵活性,成为了开发者的首选平台之一。本文将带领读者踏上一段从零开始的安卓开发之旅,通过深入浅出的方式介绍安卓开发的基础知识、核心概念以及进阶技巧。我们将一起构建一个简单的安卓应用,并探讨如何优化代码以提高性能和应用的用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和启发。
|
4月前
|
开发框架 Java Android开发
JNI中调用Java函数
JNI中调用Java函数
29 0
|
4月前
|
开发框架 Java Android开发
JNI中调用Java函数
JNI中调用Java函数
34 0