CaptainBiken 发表于 2023-8-18 16:14:15

求一个Android Studio C++ project

本帖最后由 CaptainBiken 于 2023-8-18 16:28 编辑

如题,最近在移植C++代码到AS,流程只知道大概,想求一个具体的例子来参照一下,看看具体的CMakeLists,native-lib,MainActivity等文件是怎么个情况{:5_111:}
补充一下:想要个具体的项目来参考,不需要流程或者框架了哈

isdkz 发表于 2023-8-18 16:14:41

你可以创建一个新的Android Studio项目,选择C++支持。这将自动生成一个示例项目,其中包含CMakeLists.txt,native-lib.cpp和MainActivity.java等文件。

以下是一个简单的示例:

1. 打开Android Studio,点击“Start a new Android Studio project”。
2. 选择“Native C++”模板,并点击“Next”。
3. 输入应用程序的名称和包名,并选择项目的保存位置。然后点击“Finish”。
4. 在项目结构中,你会看到一个名为“app”的模块。展开它并找到CMakeLists.txt文件。
5. 打开CMakeLists.txt文件,你会看到一些默认的CMake配置。你可以根据你的需求进行修改。
6. 在app/src/main/cpp目录下,你会找到一个名为native-lib.cpp的文件。这是一个示例的C++源文件,你可以在其中编写你的C++代码。
7. 在app/src/main/java目录下,你会找到一个名为MainActivity.java的文件。这是一个示例的Java文件,你可以在其中编写你的Java代码。

通过这个示例项目,你可以了解如何在Android Studio中使用C++代码,并参考文件的结构和配置。你可以根据你的实际需求进行修改和扩展。希望对你有帮助!

学习编程中的Ben 发表于 2023-8-18 16:15:39

在Android Studio中移植C++代码需要进行以下步骤:

1. 在Android Studio中创建一个新的C++项目。

2. 在项目的根目录下找到CMakeLists.txt文件,这个文件用于配置CMake构建系统。

   下面是一个示例的CMakeLists.txt文件:

   make   cmake_minimum_required(VERSION 3.4.1)

   # 设置C++编译标准
   set(CMAKE_CPP_STANDARD 14)

   # 添加cpp源文件
   add_library(native-lib SHARED native-lib.cpp)

   # 导入依赖库
   target_link_libraries(native-lib log)
   

   这个示例中,我们设置了C++的编译标准为C++14,并且添加了一个名为native-lib的共享库,该库的源文件是native-lib.cpp。同时,我们导入了一个名为log的依赖库。

3. 在app/src/main/cpp目录下创建一个native-lib.cpp文件,这是你的C++源文件。

   下面是一个示例的native-lib.cpp文件:

      #include <jni.h>
   #include <string>

   extern "C" JNIEXPORT jstring JNICALL
   Java_com_example_myapplication_MainActivity_stringFromJNI(
       JNIEnv* env,
       jobject /* this */) {
   std::string hello = "Hello from C++";
   return env->NewStringUTF(hello.c_str());
   }
   

   在这个示例中,我们定义了一个名为stringFromJNI的JNI函数,它返回一个字符串"Hello from C++"。

4. 打开MainActivity.java文件,这是Android应用的主要活动类。在这个文件中,我们需要声明一个本地方法,并加载我们之前创建的共享库。

   下面是一个示例的MainActivity.java文件:

      package com.example.myapplication;

   import androidx.appcompat.app.AppCompatActivity;
   import android.os.Bundle;
   import android.widget.TextView;

   public class MainActivity extends AppCompatActivity {

       // 加载共享库
       static {
         System.loadLibrary("native-lib");
       }

       // 声明本地方法
       public native String stringFromJNI();

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

         TextView textView = findViewById(R.id.textView);
         textView.setText(stringFromJNI());
       }
   }
   

   在这个示例中,我们加载了名为native-lib的共享库,并声明了stringFromJNI()方法,该方法将在C++代码中实现。

以上是一个最简单的移植C++代码的示例,你可以根据自己的具体需求进行相应的修改和扩展。记得在项目配置中将CMakeLists.txt、native-lib.cpp和MainActivity.java的文件路径与示例中的路径保持一致。

希望这个例子能够帮助你理解如何在Android Studio中移植C++代码。如果你还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}

陶远航 发表于 2023-8-18 16:15:53

当你在Android Studio中创建一个C++项目时,Android Studio会自动为你生成一些文件和目录来支持C++开发。下面我会给你一个简单的示例,展示如何设置一个基本的C++项目。

1. 打开Android Studio并点击 "Start a new Android Studio project"。
2. 在新项目向导中选择 "Native C++" 作为项目模板,然后点击 "Next"。
3. 输入应用程序的名称、包名和保存位置,然后点击 "Finish"。
4. Android Studio会为你生成一个C++项目结构。其中包括 app 目录、CMakeLists.txt文件以及 cpp 目录。
5. 打开 CMakeLists.txt 文件,这个文件定义了构建你的C++代码所需的设置。可以根据需要进行自定义。以下是一个简单的示例:

cmake_minimum_required(VERSION 3.10.2)
project("YourAppName")

# 设置要构建的最小API级别
set(CMAKE_ANDROID_MIN_SDK_VERSION 21)

# 添加您的C++源文件
add_library(
    native-lib
    SHARED
    src/main/cpp/native-lib.cpp
)

# 指定所需的依赖库
target_link_libraries(
    native-lib
    android
    log
)


6. 在 cpp 目录下,打开 native-lib.cpp 文件。这个文件是一个示例C++代码文件,你可以在这里添加你自己的C++代码。

#include <jni.h>
#include <string>

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_yourappname_MainActivity_stringFromJNI(
      JNIEnv* env,
      jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}


7. 打开 MainActivity.java 文件,这是你应用程序的主要入口点。你可以在这里调用C++代码。

package com.example.yourappname;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    // 加载本地库文件
    static {
      System.loadLibrary("native-lib");
    }

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

      // 调用C++函数并显示结果
      TextView tv = findViewById(R.id.sample_text);
      tv.setText(stringFromJNI());
    }

    /**
   * 声明一个本地方法,用于加载C++库中的函数
   */
    public native String stringFromJNI();
}


这个示例展示了一个简单的Android Studio C++项目的基本结构和配置。你可以根据自己的需要进一步扩展和修改。

希望这对你有所帮助!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案

CaptainBiken 发表于 2023-8-18 16:26:42

isdkz 发表于 2023-8-18 16:14
你可以创建一个新的Android Studio项目,选择C++支持。这将自动生成一个示例项目,其中包含CMakeLists.txt ...

这些流程我是知道的,之前也问过{:5_110:}

CaptainBiken 发表于 2023-8-18 16:27:20

陶远航 发表于 2023-8-18 16:15
当你在Android Studio中创建一个C++项目时,Android Studio会自动为你生成一些文件和目录来支持C++开发。下 ...

想看个具体的项目

苗澍辰3 发表于 2023-8-22 10:38:58

当将C++代码移植到Android Studio时,你需要进行以下步骤:

创建新的Android项目:
在Android Studio中创建一个新的Android项目。确保选择使用C++支持的项目模板。

配置CMake:
CMake是用于生成Android NDK构建脚本的工具。打开项目的CMakeLists.txt文件并进行配置。下面是一个示例CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.10.2)
project(NativeLib)

# 设置C++标准
set(CMAKE_CXX_STANDARD 11)

# 添加native-lib.cpp文件
add_library(native-lib SHARED native-lib.cpp)

# 链接依赖库
target_link_libraries(native-lib log)
在上述示例中,我们使用C++ 11标准,并将native-lib.cpp文件添加为一个库。在这个例子中,还将log库链接到我们的项目中。

创建C++源文件:
在项目中创建一个名为native-lib.cpp的C++源文件(或者你可以使用自己的文件名)。将现有的C++代码复制到该文件中。

配置JNI:
创建一个名为native-lib.h的头文件,其中包含你在C++源文件中定义的函数声明。然后,在Java代码中创建一个名为MainActivity的类(位于app/src/main/java//MainActivity.java)。

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

    public native String yourFunctionName();// 在这里添加函数声明

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

      // 在这里调用你的C++函数
      String result = yourFunctionName();
      Log.d("NativeLib", "Result from C++: " + result);
    }
}
注意,System.loadLibrary("native-lib")加载了我们在CMakeLists.txt中创建的native-lib库。

构建和运行:
在Android Studio中,点击工具栏上的“构建”按钮来构建你的项目。如果一切顺利,你应该能够成功构建并运行应用程序。

希望以上步骤对你有所帮助。请确保安装了NDK并配置了正确的路径。

苗澍辰3 发表于 2023-8-22 10:58:35

当将C++代码移植到Android Studio时,你需要进行以下步骤:

创建新的Android项目:
在Android Studio中创建一个新的Android项目。确保选择使用C++支持的项目模板。

配置CMake:
CMake是用于生成Android NDK构建脚本的工具。打开项目的CMakeLists.txt文件并进行配置。下面是一个示例CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.10.2)
project(NativeLib)

# 设置C++标准
set(CMAKE_CXX_STANDARD 11)

# 添加native-lib.cpp文件
add_library(native-lib SHARED native-lib.cpp)

# 链接依赖库
target_link_libraries(native-lib log)

在上述示例中,我们使用C++ 11标准,并将native-lib.cpp文件添加为一个库。在这个例子中,还将log库链接到我们的项目中。

创建C++源文件:
在项目中创建一个名为native-lib.cpp的C++源文件(或者你可以使用自己的文件名)。将现有的C++代码复制到该文件中。

配置JNI:
创建一个名为native-lib.h的头文件,其中包含你在C++源文件中定义的函数声明。然后,在Java代码中创建一个名为MainActivity的类(位于app/src/main/java//MainActivity.java)。
public class MainActivity extends AppCompatActivity {
    static {
      System.loadLibrary("native-lib");
    }

    public native String yourFunctionName();// 在这里添加函数声明

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

      // 在这里调用你的C++函数
      String result = yourFunctionName();
      Log.d("NativeLib", "Result from C++: " + result);
    }
}

注意,System.loadLibrary("native-lib")加载了我们在CMakeLists.txt中创建的native-lib库。

构建和运行:
在Android Studio中,点击工具栏上的“构建”按钮来构建你的项目。如果一切顺利,你应该能够成功构建并运行应用程序。
页: [1]
查看完整版本: 求一个Android Studio C++ project