【问题标题】:Package android.support.v4.app does not exist包 android.support.v4.app 不存在
【发布时间】:2018-11-10 14:50:45
【问题描述】:

在我的 Qt Android(5.6+,最新 SDK 和 NDK 10d)应用程序中,由于 targetApi 26,我需要在运行时请求权限。From Google docs 我发现我必须这样做:

import android.Manifest.permission;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;

public class  MyActivity extends QtActivity implements ActivityCompat.OnRequestPermissionsResultCallback
{
  private static final String[] LOCATION_PERMS = {
      permission.ACCESS_FINE_LOCATION
  };
  private static final int LOCATION_REQUEST = 1337;

    private boolean hasPermission(String perm)
  {
    return (PackageManager.PERMISSION_GRANTED == checkSelfPermission(perm));
  }

  public boolean canAccessLocation()
  {
    return hasPermission(permission.ACCESS_FINE_LOCATION);
  }

  @Override
  public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
  {
    //Figure out what was given to us
    switch(requestCode)
    {
      case LOCATION_REQUEST:
        if (canAccessLocation())
          Log.i(TAG, "Access to location is granted");
        else {
          Log.e(TAG, "Access to location is denied");
          finish();
        }
        break;
    }
  }

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
      //Ensure we can run the app
      if (!canAccessLocation())
        requestPermissions( LOCATION_PERMS, LOCATION_REQUEST );
    }
  }
}

我还安装了 Android 支持存储库:

这是我的 build.gradle:

buildscript {
    repositories {
        jcenter()
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

apply plugin: 'com.android.application'

dependencies {
    compile "com.android.support:support-v4:27.0.2"
    compile "com.android.support:support-v13:27.0.2"
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

但我收到错误:package android.support.v4.app 不存在。我还尝试在我的工作站上找到 android-support-v4.jar 但没有成功。添加

compile 'com.android.support:support-v4:+'

from here 没有任何区别。

一件重要的事情:我的项目是在 CMake 的帮助下从命令行构建的,我不能使用任何 IDE,如 Android Studio 或 Eclipse。我错过了什么?

谢谢!

更新: 完整的错误列表:

【问题讨论】:

  • @MohammadKanan 我相信只有 IDE 特定的解决方案
  • 不,还有配置文件设置解决方案,第三个,但可能已经过时了

标签: java android qt android-support-library


【解决方案1】:

我不知道你是否还有这个问题,但如果有人想知道......

我将 compile sdk 版本更改为:27: Android 8.1 (Oreo) 26: Android 8.0 (Oreo) 在build.grade

dependencies {
    implementation 'com.android.support:appcompat-v7:27.0.0'
    implementation 'com.android.support:design:27.0.0'
    implementation 'com.android.support:support-v4:27.1.1'
}

显然 android.support:support 中的 27.1.1 起到了作用(27.0.0 不起作用)。 我希望这会有所帮助(:

【讨论】:

  • build.gradle文件有多个,你改了哪个?
【解决方案2】:

有效地,通过应用来自 Android Studio 的依赖项,更新后的 build.gradle 可以使用您的设置:

apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.0.1'
    compile 'com.android.support:design:25.0.1'

}

我也猜你需要导入Activity:

import android.app.Activity;

【讨论】:

  • 你的 libs 文件夹中有 support-v4.jar 吗?
  • 您是否已将build.gradle 添加到 .pro 中的目的地?
  • =) 我没有 .pro,它使事情变得复杂
  • 我有多个 CMakelist,仅此而已
  • 确保在安装过程中复制了所需的包。通过将build.gradle 复制到android-build 文件夹
猜你喜欢
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
相关资源
最近更新 更多