我想将Android Studio中的最低SDK版本从API 12更改为API 14.我尝试在清单文件中更改它,即
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18" />
Run Code Online (Sandbox Code Playgroud)
并重建项目,但我仍然得到Android Studio IDE抛出一些错误.我认为我必须在"项目属性"或类似的东西中设置min SDK,以便IDE识别出更改,但我无法在Android Studio中找到这样做的地方.
可能重复:以
编程方式获取设备的Android API级别?
如何让手机的Api级别运行我的应用程序?我确信它很简单,但我无法找到它,因为我所有的搜索都会带来大量的垃圾.
Android Studio无法正确地将我重定向到API源.当我点击任何函数时,它会反编译.class文件字节码,而不是从sdk/sources树访问正确的文件.
点击"下载"和"刷新"选项什么都不做.这对于实现监听器来说尤其令人讨厌,因为它从文档中生成函数"不带变量"的标题(即var1,var2等).我已将complie和目标SDK设置为23.我尝试重新安装SDK工具,从canary通道更新AS,使缓存无效但到目前为止没有任何帮助.我切换到API 21,它工作正常.我错过了什么?
编辑 我已经安装了API 23(SDK平台,工具,文档,资源),所以如果你想进行downvote,请发表评论.
编辑 我的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '23.0.2'
defaultConfig {
applicationId "com.myapp.app"
minSdkVersion 10
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile project(':volley')
compile 'com.jakewharton:butterknife:7.0.1'
}
Run Code Online (Sandbox Code Playgroud)
您可以在下面找到具有相同API 23设置和相同行为的空白项目(没有第三方库)的gradle输出.
Executing tasks: [clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies]
Configuration on demand is an incubating feature.
Incremental …Run Code Online (Sandbox Code Playgroud) 在API 23的运行时需要哪些权限才能请求权限?
permissions android android-manifest android-permissions android-api-levels
我正在构建一个Web应用程序,并希望在3.0版本的Android设备上禁用转换效果.
反正有没有在浏览器中通过Javascript获取Android版本号?如果是这样的话?
我目前有一个针对android 2.3(api等级10)的应用程序,但认为可能使用Android 2.1/2.2或更早版本的人甚至无法在市场上看到该应用程序.
因此,我认为,使用API级别3将是最好的使用,但我不知道这是否会也许使我的应用程序工作的某些元素不太好的,大概buggier,因为它实际上使用旧的Android代码.有没有一个很好的方法来找出我应该使用哪个API级别,以及如何将我的应用程序转换为该级别?
摘要
最后,我发现相关问题,setForeground()错误地标记为需要在ViewGroups扩展上使用API 23 FrameLayout.
问题189041:setForeground()被错误地标记为需要扩展FrameLayout的ViewGroups的API 23(NewApi)
如果您没有扩展FrameLayout,那么文档是错误的,并且需要API 23.
问题186273:View.setForeground错误的API级别
更新的问题
被Commonsware 标记为不能setForeground在ImageView上使用方法并由他回答:
这是一个文档错误.setForeground()存在于API Level 1的FrameLayout上; 它仅适用于API级别23的View.
在我的情况下,fork中的检查没有检测到文档错误,但在集成项目中检测到它,我不明白,无论如何,这回答了我的初始问题.
但这不是同一种情况,这个代码已经扩展了Framelayout并且使用了这个方法,它不是一个ImageView,所以我想这个方法已经在API 23中删除了.它现在没有出现在引用中.
更新:我为FrameLayout 添加差异报告:
新问题
所以我的问题改变了如何在以前的版本中使用该方法,为什么有选择地出现检查错误?
如果我添加冗余强制转换,则错误消息将消失:
((FrameLayout) layout).getForeground()
Run Code Online (Sandbox Code Playgroud)
但它正在访问View现在不支持的方法.
因此,我认为针对以前的API会删除错误消息,但我希望使用此Framelayout方法的解决方案或线索来解决我的问题:
ANDROID_COMPILE_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23.0.1
ANDROID_DEFAULT_MIN_SDK_VERSION=19
ANDROID_DEFAULT_TARGET_SDK_VERSION=23
Run Code Online (Sandbox Code Playgroud)
解决方法
简而言之,作为一种解决方法,我将类型FrameLayout直接更改为,因此关于API和转换的警告已经消失,我测试它适用于Android 4.4.4设备和调试,我认为它会崩溃,无论如何它只用于一个动画,我将来会修复/更换它.
最初的问题
我分叉和定制的谷歌样品Android的托皮卡,和Android工作室表明,我不理解使用方法所需的API级别的错误getForeground()之类的View在android.view包:
调用需要API级别23(当前最小值为19):android.view.View#getForeground
该引用标记了API级别1中添加的方法,而documentation(Control+Q)显示了相同的内容:
但是Calling new methods on older versions inspection显示需要API级别23的错误: …
java android android-studio android-api-levels android-framelayout
我想开发一个Android冰淇淋三明治和以上版本的应用程序.所以,我发现android 4.0支持api 14和android 4.0.3 api 15.请查看仪表板http://developer.android.com/about/dashboards/index.html.似乎没有人拥有android ics 4.0但只有4.0.3或4.0.4.这很重要,因为如果它看起来如此,我将使用api 15而不是14来开发应用程序.但是我确信没有人在他的4.0.0版本中安装了android.你能确认仪表板中的数据吗?我的意思是,你能否确认只有4.0.3和4.0.4版本的设备上才有机器人冰淇淋三明治?谢谢
正如我们所知,Apache HTTP Client已在API 23中删除
但是,Volley库目前仍然使用Apache的库如
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.impl.cookie.DateUtils;
Run Code Online (Sandbox Code Playgroud)
我测试了2个项目:一个用于compileSdkVersion 22,另一个用于compileSdkVersion 23获得2个截图:
compileSdkVersion 22
compileSdkVersion 23
我有两个问题:
Apache在运行时使用该库,他们是在API22或更低版本中找到的?Apache图书馆吗?如果没有,当Apache我的图书馆完全删除并且不受支持时,我现在的项目是否仍会继续使用?也许我的英语不太清楚,但希望你能理解我的问题.
任何解释将不胜感激.
更新:
从@ random的评论中,我使用谷歌的官方Volley库创建了一个新的API23项目(我的意思git clone https://android.googlesource.com/platform/frameworks/volley是谷歌建议的这里),而不是compile 'com.mcxiaoke.volley:library:1.0.17'在build.gradle文件中使用.是的,在构建项目时因缺少Apache库而出错.必须按文档添加useLibrary 'org.apache.http.legacy'到build.gradle文件中.
第二次更新:
我刚刚定制了谷歌的排球(作为我项目中的一个模块),删除了Apache库.请转到我的GitHub示例项目供您参考.但请注意,它尚未针对所有情况进行全面测试,并且我仅测试了02个简单案例:GET并且POST我的Web服务请求是ASP.NET Web …
apache android httpresponse android-volley android-api-levels