鱼C论坛

 找回密码
 立即注册
查看: 717|回复: 6

[已解决]如何将已有C++代码移植到Android Studio上

[复制链接]
发表于 2023-8-4 01:44:42 | 显示全部楼层 |阅读模式
60鱼币
如题,有在VS上跑起来的C++源码,想移植到AS上,现在的进度是能用Android Studio创建C++项目,跑起来显示出Hello From C++。
最佳答案
2023-8-4 01:44:43
本帖最后由 Mike_python小 于 2023-8-4 04:57 编辑

回答:

将已有的 C++ 代码移植到 Android Studio 上可以通过以下步骤完成:

1. 在 Android Studio 中创建一个新的 C++ 项目:
   - 打开 Android Studio,选择 "Start a new Android Studio project" 或者 "File -> New -> New Project"。
   - 在项目创建向导中,选择 "Empty Activity" 或者其他适合的模板,并填写相应的项目信息。
   - 点击 "Finish" 完成项目创建。

2. 将现有的 C++ 代码添加到 Android Studio 项目中:
   - 打开 Android Studio 的项目视图,找到 cpp 文件夹(如果没有,请手动创建)并打开它。
   - 将你的已有 C++ 源代码文件复制到 cpp 目录下。
   - 在 cpp 目录下,创建一个名为 CMakeLists.txt 的文本文件,用于配置 C++ 构建选项和相关的库依赖。例如:

   
  1. make
  2.     cmake_minimum_required(VERSION 3.4.1)

  3.     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

  4.     add_library(native-lib SHARED native-lib.cpp)

  5.     find_library(log-lib log)

  6.     target_link_libraries(native-lib ${log-lib})
  7.    
复制代码


3. 将 C++ 代码与 Java 代码进行交互:
   - 在 Android Studio 中打开 app/src/main/java 目录下的 Java 类文件。
   - 在 Java 类中添加 JNI 接口方法,用于与 C++ 代码进行交互。例如:

   
  1. java
  2.     public class MainActivity extends AppCompatActivity {
  3.         // ...

  4.         public native String getStringFromCpp();

  5.         static {
  6.             System.loadLibrary("native-lib");
  7.         }
  8.     }
  9.    
复制代码


   - 在 C++ 代码中实现 JNI 接口方法。例如:

   

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

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


4. 构建和运行项目:
   - 点击 Android Studio 工具栏上的 "Sync Project with Gradle Files" 按钮,等待项目同步完成。
   - 点击 "Build -> Build Bundle(s) / APK(s) -> Build APK(s)",Android Studio 将会构建你的项目,并生成 APK 文件。
   - 在模拟器或真机上运行生成的 APK 文件,你应该能够看到 "Hello from C++" 的输出。

希望以上步骤可以帮助你成功将已有的 C++ 代码移植到 Android Studio 中。如果还有其他问题,请随时追问。

最佳答案

查看完整内容

回答: 将已有的 C++ 代码移植到 Android Studio 上可以通过以下步骤完成: 1. 在 Android Studio 中创建一个新的 C++ 项目: - 打开 Android Studio,选择 "Start a new Android Studio project" 或者 "File -> New -> New Project"。 - 在项目创建向导中,选择 "Empty Activity" 或者其他适合的模板,并填写相应的项目信息。 - 点击 "Finish" 完成项目创建。 2. 将现有的 C++ 代码添加到 Android Studio 项 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-4 01:44:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Mike_python小 于 2023-8-4 04:57 编辑

回答:

将已有的 C++ 代码移植到 Android Studio 上可以通过以下步骤完成:

1. 在 Android Studio 中创建一个新的 C++ 项目:
   - 打开 Android Studio,选择 "Start a new Android Studio project" 或者 "File -> New -> New Project"。
   - 在项目创建向导中,选择 "Empty Activity" 或者其他适合的模板,并填写相应的项目信息。
   - 点击 "Finish" 完成项目创建。

2. 将现有的 C++ 代码添加到 Android Studio 项目中:
   - 打开 Android Studio 的项目视图,找到 cpp 文件夹(如果没有,请手动创建)并打开它。
   - 将你的已有 C++ 源代码文件复制到 cpp 目录下。
   - 在 cpp 目录下,创建一个名为 CMakeLists.txt 的文本文件,用于配置 C++ 构建选项和相关的库依赖。例如:

   
  1. make
  2.     cmake_minimum_required(VERSION 3.4.1)

  3.     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

  4.     add_library(native-lib SHARED native-lib.cpp)

  5.     find_library(log-lib log)

  6.     target_link_libraries(native-lib ${log-lib})
  7.    
复制代码


3. 将 C++ 代码与 Java 代码进行交互:
   - 在 Android Studio 中打开 app/src/main/java 目录下的 Java 类文件。
   - 在 Java 类中添加 JNI 接口方法,用于与 C++ 代码进行交互。例如:

   
  1. java
  2.     public class MainActivity extends AppCompatActivity {
  3.         // ...

  4.         public native String getStringFromCpp();

  5.         static {
  6.             System.loadLibrary("native-lib");
  7.         }
  8.     }
  9.    
复制代码


   - 在 C++ 代码中实现 JNI 接口方法。例如:

   

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

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


4. 构建和运行项目:
   - 点击 Android Studio 工具栏上的 "Sync Project with Gradle Files" 按钮,等待项目同步完成。
   - 点击 "Build -> Build Bundle(s) / APK(s) -> Build APK(s)",Android Studio 将会构建你的项目,并生成 APK 文件。
   - 在模拟器或真机上运行生成的 APK 文件,你应该能够看到 "Hello from C++" 的输出。

希望以上步骤可以帮助你成功将已有的 C++ 代码移植到 Android Studio 中。如果还有其他问题,请随时追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-4 01:44:57 | 显示全部楼层
回答:

将已有的 C++ 代码移植到 Android Studio 上需要以下步骤:

1. 在 Android Studio 中创建一个新的 C++ 项目。可以使用 "File" -> "New" -> "New Project" 的方式来创建一个新项目,选择 C++ 项目模板并按照向导完成设置。

2. 将已有的 C++ 代码文件添加到 Android Studio 项目中。可以在 Android Studio 的项目视图中找到 "cpp" 文件夹,将原始的 C++ 代码文件复制粘贴到该文件夹中。

3. 配置 CMakeLists.txt 文件。在 Android Studio 项目的根目录中,可以找到名为 "CMakeLists.txt" 的文件。你需要根据你的代码文件结构和依赖关系来配置这个文件,确保正确地包含、编译和链接你的 C++ 代码。如果需要额外的依赖库,你需要在 CMakeLists.txt 文件中添加相关的配置。

4. 构建项目并运行。使用 Android Studio 提供的构建工具构建你的项目,并尝试运行它。在运行之前,确保已经配置好了正确的设备或模拟器,并且设备上安装了必要的运行时或库。如果一切正常,你的项目应该能够在 Android 设备上运行,并显示出你的 C++ 代码输出的内容。

以上是大致的步骤,具体情况可能会因你的代码和项目结构而有所不同。在移植过程中可能会遇到一些问题,比如编译错误、依赖问题等等。你需要根据具体情况进行调试和解决。

希望以上回答对你有帮助。如果还有其他问题,请随时追问。

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

使用道具 举报

发表于 2023-8-4 01:45:08 | 显示全部楼层
要将已有的C++代码移植到Android Studio上,您可以按照以下步骤操作:

1. 在Android Studio中创建一个新的C++项目。您已经完成了这一步,能够成功运行显示"Hello From C++"。
2. 将您的C++源代码文件复制到Android Studio项目的 app/src/main/cpp 目录下。
3. 在 app/src/main/cpp 目录下创建一个名为 CMakeLists.txt 的文件,用于配置C++编译。
4. 打开 CMakeLists.txt 文件,并添加以下内容:

  1. cmake_minimum_required(VERSION 3.4.1)

  2. # 添加您的源代码文件
  3. add_library( # 设置库的名称
  4.              native-lib

  5.              # 设置库的类型为共享库
  6.              SHARED

  7.              # 添加您的源代码文件
  8.              src/main/cpp/your_source_file.cpp )

  9. # 链接要使用的库
  10. target_link_libraries( # 指定要链接的库
  11.                        native-lib )
复制代码


请将 your_source_file.cpp 替换为您的源代码文件的实际名称。

5. 在 app/src/main/cpp 目录下创建一个名为 native-lib.cpp 的文件,用于实现JNI接口。

  1. #include <jni.h>

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


请将 com_example_your_package_name 替换为您的应用程序的包名。

6. 在 MainActivity.java 中添加以下代码,以调用JNI接口并显示C++代码的输出结果。

  1. public class MainActivity extends AppCompatActivity {

  2.     // 加载本地库
  3.     static {
  4.         System.loadLibrary("native-lib");
  5.     }

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

  10.         // 调用JNI接口
  11.         TextView tv = findViewById(R.id.sample_text);
  12.         tv.setText(stringFromJNI());
  13.     }

  14.     // 声明JNI接口
  15.     public native String stringFromJNI();
  16. }
复制代码


7. 构建并运行您的Android应用程序。现在,您的C++代码应该已经成功移植到Android Studio上,并且应用程序应该能够正常运行并显示从C++代码返回的字符串。

请注意,移植C++代码到Android Studio可能会涉及到其他依赖项和配置,具体取决于您的代码和项目要求。以上步骤提供了一个基本的框架,您可能需要根据您的实际情况进行调整。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-4 07:35:25 | 显示全部楼层
您可以选择以下几种方法:

如果您的 IntelliJ 项目已经使用 Gradle 构建系统,您可以直接将项目导入到 Android Studio 中。
如果您的 IntelliJ 项目尚未使用 Gradle 构建系统,您可以新建一个空的 Android Studio 项目,然后将现有源代码复制到与新项目关联的目录中。
您也可以为项目新建一个 Gradle build 文件,然后将项目和上述新 build 文件导入到 Android Studio 中。

我希望这些信息对您有所帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-8-4 09:12:03 | 显示全部楼层
感谢各位大佬的帮助,看来还是得一点点慢慢来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-4 17:25:07 | 显示全部楼层
CaptainBiken 发表于 2023-8-4 06:12
感谢各位大佬的帮助,看来还是得一点点慢慢来


如果解决了就给我设置一个最佳答案把,这对我很重要!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 07:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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