首页
/ Android_Native_Surface 项目教程

Android_Native_Surface 项目教程

2024-08-19 17:08:29作者:贡沫苏Truman

1. 项目的目录结构及介绍

Android_Native_Surface 项目的目录结构如下:

Android_Native_Surface/
├── app/
│   ├── src/
│   │   ├── main/
│   │   │   ├── cpp/
│   │   │   │   ├── main.cpp
│   │   │   │   ├── native-lib.cpp
│   │   │   ├── java/
│   │   │   │   ├── com/
│   │   │   │   │   ├── example/
│   │   │   │   │   │   ├── MainActivity.java
│   │   │   ├── res/
│   │   │   │   ├── layout/
│   │   │   │   │   ├── activity_main.xml
├── CMakeLists.txt
├── build.gradle
├── settings.gradle

目录结构介绍

  • app/: 主应用程序目录。
    • src/: 源代码目录。
      • main/: 主源代码目录。
        • cpp/: C++ 源代码目录。
          • main.cpp: 主 C++ 文件。
          • native-lib.cpp: 本地库文件。
        • java/: Java 源代码目录。
          • com/example/: 包目录。
            • MainActivity.java: 主 Java 活动文件。
        • res/: 资源目录。
          • layout/: 布局文件目录。
            • activity_main.xml: 主活动布局文件。
  • CMakeLists.txt: CMake 构建文件。
  • build.gradle: Gradle 构建文件。
  • settings.gradle: Gradle 设置文件。

2. 项目的启动文件介绍

启动文件

  • MainActivity.java: 这是应用程序的主活动文件,负责启动应用程序并加载本地库。
package com.example;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {
    static {
        System.loadLibrary("native-lib");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

启动流程

  1. MainActivity 继承自 Activity
  2. 在静态块中加载本地库 native-lib
  3. onCreate 方法中设置布局文件 activity_main.xml

3. 项目的配置文件介绍

配置文件

  • build.gradle: 这是 Gradle 构建文件,负责配置项目的构建过程。
apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    defaultConfig {
        applicationId "com.example"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
        externalNativeBuild {
            cmake {
                cppFlags "-std=c++14"
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.2.0'
}

配置文件介绍

  • apply plugin: 应用 Android 应用程序插件。
  • android: 配置 Android 构建选项。
    • compileSdkVersion: 编译 SDK 版本。
    • defaultConfig: 默认配置。
      • applicationId: 应用程序 ID。
      • minSdkVersion: 最小 SDK 版本。
      • targetSdkVersion: 目标 SDK 版本。
      • versionCode: 版本代码。
      • versionName: 版本名称。
      • externalNativeBuild: 外部本地构建配置。
        • cmake: CMake 配置。
          • **
登录后查看全文
热门项目推荐

项目优选

收起
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
508
547
docsdocs
暂无描述
Markdown
849
5.67 K
kernelkernel
deepin linux kernel
C
33
16
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.04 K
2.47 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
837
1.28 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
843
1.69 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.16 K
851
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.25 K
1.37 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
502
343
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
773
409