鱼C论坛

 找回密码
 立即注册
查看: 1581|回复: 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文件:

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.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++代码所需的设置。可以根据需要进行自定义。以下是一个简单的示例:
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++项目的基本结构和配置。你可以根据自己的需要进一步扩展和修改。

希望这对你有所帮助!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> 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文件:
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)。
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中,点击工具栏上的“构建”按钮来构建你的项目。如果一切顺利,你应该能够成功构建并运行应用程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 02:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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