网上好多资料和教程都太老了,自己报错了好久。分享一下希望大家少走弯路
像这样去新建一个C++项目
最开始构建可以会很慢(除非科学上网)
我们可以自定义国内的镜像,以及本地gradle包
首先选择我们本地gradle包
distributionurl=https\://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.7-bin.zip
可以在这里去自己下载好一个包,记录一下
然后找到我们的环境变量
在系统变量下面新建两个,如图
第一个地址是我们自己去下载的gradle的包解压后
然后在path里面
%GRADLE_HOME%\bin
加上这个路径
这样我们后续清理缓存什么的比较方便
第二个文件默认是在 c盘 user 你的用户名 .gradle里面
可以改可以不改
我们配置全局环境
就在你自己的.gradle目录里面
新建一个(如果有就自己修改)
init.gradle
文件
文件内容为
[Asm] 纯文本查看 复制代码 // 修复版 init.gradle(兼容 Gradle 7.0+)
// 配置优先级:settings > init.gradle > build.gradle
beforeSettings { settings ->
// 全局仓库配置(通过 dependencyResolutionManagement)
settings.dependencyResolutionManagement {
repositoriesMode = RepositoriesMode.PREFER_SETTINGS // 强制使用 settings 仓库
repositories {
clear()
// 主仓库镜像
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://repo.huaweicloud.com/repository/maven' }
maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public' }
// Google 仓库镜像
maven { url 'https://maven.aliyun.com/repository/google' }
// 中央仓库备份
mavenCentral()
}
}
// 插件仓库配置
settings.pluginManagement {
repositories {
clear()
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://repo.huaweicloud.com/repository/maven' }
maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public' }
mavenCentral()
}
}
}
allprojects {
buildscript {
repositories {
clear()
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://repo.huaweicloud.com/repository/maven' }
maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public' }
maven { url 'https://maven.aliyun.com/repository/google' }
mavenCentral()
}
}
}
这样放着就好
现在你在去AS里面构建应该就快得多了
(如果报错URL什么的,记得去设置里面把gradle改为本地,我每次打开都要重新设置)
现在开始写so
可以看见下面是我们java的声明
这里我的例子就是一个string 方法,传入什么输出什么
在这cpp里面我们具体写实现
[C] 纯文本查看 复制代码 extern "C" JNIEXPORT jstring JNICALL
Java_com_example_so_1moudule_MainActivity_helloworld(
JNIEnv* env,
jobject /* this */, jstring str) {
// 1. 获取 Java 字符串的 C 风格字符指针
const char* nativeStr = env->GetStringUTFChars(str, nullptr);
if (nativeStr == nullptr) {
// 处理空指针(例如,输入字符串为 null)
return env->NewStringUTF("输入字符串为 null");
}
// 2. 将 C 风格字符串转换为 std::string
std::string input_str(nativeStr);
// 3. 释放资源(必须!避免内存泄漏)
env->ReleaseStringUTFChars(str, nativeStr);
// 4. 将 std::string 转换为 jstring 返回
return env->NewStringUTF(input_str.c_str());
}
保存好就ok ,如图
现在运行整个apk文件在你的手机里面
完成
我们再去看看so文件,在build里面可以构建apk文件
\so_moudule\app\build\outputs\apk\debug
目录大约是这样
完成!
|