Java 程序包android.support.v4.app不存在

Java 程序包android.support.v4.app不存在,java,android,qt,android-support-library,Java,Android,Qt,Android Support Library,在我的QtAndroid(5.6+,最新SDK和NDK10D)应用程序中,由于targetApi 26,我需要在运行时请求权限。我发现我必须这样做: import android.Manifest.permission; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; public class MyActivity extends QtActivity

在我的QtAndroid(5.6+,最新SDK和NDK10D)应用程序中,由于targetApi 26,我需要在运行时请求权限。我发现我必须这样做:

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支持存储库:

这是我的身材。格雷德尔:

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'])
}
但我得到错误:包android.support.v4.app不存在。我还试图在我的工作站上找到android-support-v4.jar,但没有成功。添加

compile 'com.android.support:support-v4:+'
没什么区别

有一点很重要:我的项目是在CMake的帮助下从命令行构建的,我不能使用任何像Android Studio或Eclipse这样的IDE。我错过了什么

谢谢

更新: 完整错误列表:

通过应用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'

}
我还认为您需要导入活动:

import android.app.Activity;

我不知道你是否还有这个问题,但万一有人想知道

我将编译sdk版本更改为:27:Android8.1(Oreo)和26:Android8.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中的27.1.1.support:支持成功了(27.0.0不起作用)。
我希望这会有所帮助(:

@MohammadKanan我相信只有IDE特定的解决方案,还有配置文件设置解决方案,第三个,但可能已经过时了。您的libs文件夹中是否有support-v4.jar?您是否已将
build.gradle
添加到.pro中的目标中?=)我没有.pro,它使事情复杂化我有多个CmakeList,这都是为了确保在安装过程中复制所需的软件包。将
build.gradle
复制到
android build
文件夹