如何解决Android Studio中Could not find com.yanzhenjie:permission:2.0.3错误?
解决Android Studio中无法找到com.yanzhenjie:permission:2.0.3依赖的问题
错误原因
你遇到的Could not find com.yanzhenjie:permission:2.0.3错误,核心原因有两个:
- 依赖坐标写错:该权限库(AndPermission)的正确Maven坐标是
com.yanzhenjie:andpermission:2.0.3,而非com.yanzhenjie:permission:2.0.3 - 仓库配置不全:即使坐标正确,该版本的库可能未发布到Google Maven或Maven Central,需要添加额外仓库
解决方案
步骤1:修正依赖坐标
打开app模块下的build.gradle(或build.gradle.kts),将错误的依赖替换为正确的:
// 替换之前的错误依赖 implementation 'com.yanzhenjie:andpermission:2.0.3'
步骤2:添加必要的仓库
由于Gradle 8.2.2属于新版Gradle,仓库配置通常在项目根目录的settings.gradle(或settings.gradle.kts)中,添加JitPack仓库:
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() // 添加JitPack仓库 maven { url 'https://jitpack.io' } } }
如果你的项目仍使用旧版结构(仓库配置在项目级build.gradle),则修改该文件:
allprojects { repositories { google() mavenCentral() maven { url 'https://jitpack.io' } } }
步骤3:同步并构建项目
点击Android Studio右上角的「Sync Project with Gradle Files」按钮,同步完成后重新构建项目。
替代方案:使用原生权限API
如果不想依赖第三方库,推荐使用AndroidX原生的Activity Result API来申请危险权限,示例代码如下:
在MainActivity.java中:
import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.Manifest; public class MainActivity extends AppCompatActivity { // 声明权限请求Launcher private ActivityResultLauncher<String[]> requestPermissionLauncher; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化权限请求Launcher requestPermissionLauncher = registerForActivityResult( new ActivityResultContracts.RequestMultiplePermissions(), result -> { // 处理权限申请结果 Boolean locationGranted = result.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false); Boolean coarseLocationGranted = result.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false); if (locationGranted != null && locationGranted) { // 权限已授予,执行位置相关操作 } else { // 权限被拒绝,提示用户 } } ); // 发起位置权限申请 requestPermissionLauncher.launch(new String[]{ Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION }); } }
内容的提问来源于stack exchange,提问作者우정민
相关产品推荐
相关产品推荐

