鱼C论坛

 找回密码
 立即注册
查看: 1177|回复: 7

求一个Android Studio C++ project

[复制链接]
发表于 2023-8-18 16:14:15 | 显示全部楼层 |阅读模式
25鱼币
本帖最后由 CaptainBiken 于 2023-8-18 16:28 编辑

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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++代码,并参考文件的结构和配置。你可以根据你的实际需求进行修改和扩展。希望对你有帮助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-18 16:15:39 | 显示全部楼层
在Android Studio中移植C++代码需要进行以下步骤:

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

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

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

  
  1. make   cmake_minimum_required(VERSION 3.4.1)
  2.    # 设置C++编译标准
  3.    set(CMAKE_CPP_STANDARD 14)
  4.    # 添加cpp源文件
  5.    add_library(native-lib SHARED native-lib.cpp)
  6.    # 导入依赖库
  7.    target_link_libraries(native-lib log)
  8.    
复制代码

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

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

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

  
  1.    #include <jni.h>
  2.    #include <string>
  3.    extern "C" JNIEXPORT jstring JNICALL
  4.    Java_com_example_myapplication_MainActivity_stringFromJNI(
  5.        JNIEnv* env,
  6.        jobject /* this */) {
  7.      std::string hello = "Hello from C++";
  8.      return env->NewStringUTF(hello.c_str());
  9.    }
  10.    
复制代码

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

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

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

  
  1.    package com.example.myapplication;
  2.    import androidx.appcompat.app.AppCompatActivity;
  3.    import android.os.Bundle;
  4.    import android.widget.TextView;
  5.    public class MainActivity extends AppCompatActivity {
  6.        // 加载共享库
  7.        static {
  8.            System.loadLibrary("native-lib");
  9.        }
  10.        // 声明本地方法
  11.        public native String stringFromJNI();
  12.        @Override
  13.        protected void onCreate(Bundle savedInstanceState) {
  14.            super.onCreate(savedInstanceState);
  15.            setContentView(R.layout.activity_main);
  16.            TextView textView = findViewById(R.id.textView);
  17.            textView.setText(stringFromJNI());
  18.        }
  19.    }
  20.    
复制代码

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

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

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

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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++代码所需的设置。可以根据需要进行自定义。以下是一个简单的示例:

  1. cmake_minimum_required(VERSION 3.10.2)
  2. project("YourAppName")

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

  5. # 添加您的C++源文件
  6. add_library(
  7.     native-lib
  8.     SHARED
  9.     src/main/cpp/native-lib.cpp
  10. )

  11. # 指定所需的依赖库
  12. target_link_libraries(
  13.     native-lib
  14.     android
  15.     log
  16. )
复制代码


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

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

  3. extern "C" JNIEXPORT jstring JNICALL
  4. Java_com_example_yourappname_MainActivity_stringFromJNI(
  5.         JNIEnv* env,
  6.         jobject /* this */) {
  7.     std::string hello = "Hello from C++";
  8.     return env->NewStringUTF(hello.c_str());
  9. }
复制代码


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

  1. package com.example.yourappname;

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

  5. public class MainActivity extends AppCompatActivity {

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

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

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

  18.     /**
  19.      * 声明一个本地方法,用于加载C++库中的函数
  20.      */
  21.     public native String stringFromJNI();
  22. }
复制代码


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

希望这对你有所帮助!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

这些流程我是知道的,之前也问过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

想看个具体的项目
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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/[your package name]/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并配置了正确的路径。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-22 10:58:35 | 显示全部楼层
当将C++代码移植到Android Studio时,你需要进行以下步骤:

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

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

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

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

  7. # 链接依赖库
  8. 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/[your package name]/MainActivity.java)。
  1. public class MainActivity extends AppCompatActivity {
  2.     static {
  3.         System.loadLibrary("native-lib");
  4.     }

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

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

  10.         // 在这里调用你的C++函数
  11.         String result = yourFunctionName();
  12.         Log.d("NativeLib", "Result from C++: " + result);
  13.     }
  14. }
复制代码

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

构建和运行:
在Android Studio中,点击工具栏上的“构建”按钮来构建你的项目。如果一切顺利,你应该能够成功构建并运行应用程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-5 11:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表