使用Android Studio开发遇到的问题

来源:互联网 发布:网络雅思课程 编辑:程序博客网 时间:2024/05/17 06:18

问题一:导入SDK中的Samples后,Messages中提示“Error:Cause: failed to find target android-19.0.1 Please install the missing platform from the Android SDK Manager.”

原因:AS安装后,自带的Build-tools版本是19.0.3,而示例是在19.0.1下创建的。

解决:1、使用SDK Manager把19.0.1装上;2、修改project->app->build.gradle中的buildToolsVersion "19.0.1"改为buildToolsVersion "19.0.3"。

另外如果从网上下来的示例导入后,一般需要修改compileSdkVersion为19。


问题二:安装新版本JDK后,编译时仍使用旧版本的JDK

解决:除了更新JAVA_HOME环境变量,在AS中调整File->Project Structure->SDK Location和File->Other Settings->Default Project Structure->SDK Location。


问题三:AS的代码编辑窗口中和运行时,中文显示乱码

解决:AS的代码编辑窗口中的乱码,只需要把IDE右下角的UTF-8改为GBK;运行时显示乱码,1、在project->app->build.gradle中添加compileOptions.encoding = "GBK"。2、不能在布局文件中直接输入中文,需要在R文件中注册下,比如<activity  android:label="中文" >改为<activity  android:label="@string/chinese" >,在strings.xml中添加<string name="chinese">中文</string>。


问题四:AS导入包含jni设置的工程,编译错误

解决:一般Eclipse工程,AS可以直接导入。如果有问题,确认该工程在Eclipse中运行良好,导出为AS工程后,再在AS中导入。


问题五:MainActivity.java中显示R类路径无效

解决:因为某些原因,AS没有自动生成R文件。比如项目依赖的库文件版本与指定的compileSdkVersion不符,这时需要手动指定需要编译的库文件版本号。比如android.compileSdkVersion为19,那么在project->app->build.gradle末尾添加

dependencies {

    compile 'com.android.support:support-v4:+' 改为 compile 'com.android.support:support-v4:19.+'
    compile 'com.android.support:appcompat-v7:+'改为compile 'com.android.support:appcompat-v7:19.+'
}

注意dependencies{}与android{}同级



1:错误 Failure [INSTALL_FAILED_OLDER_SDK]

打开android工程导航列表如下图



找到build.gradle 修改minsdkversion和targetSdkVersion的值 改成你手机或者模拟器的版本对应的api等级


2:Error:duplicate files during packaging of APK ........
Path in archive: META-INF/LICENSE.txt
...................
You can ignore those files in your build.gradle:
android {
 packagingOptions {
   exclude 'META-INF/LICENSE.txt'
 }
}
Error:Execution failed for task ':app:packageDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
  File 1: /Users/Lin1/AndroidStudioProject/app/libs/jaxen-1.1-beta-6.jar.jar
  File 2: /Users/Lin1/AndroidStudioProject/app/libs/dom4j-1.6.1.jar



解决办法是在build.gradle中插入

packagingOptions {    exclude 'META-INF/LICENSE.txt'}

3:Android Studio-Gradle项目中添加JNI生成文件(.so文件)

解决方案http://www.tuicool.com/articles/yuAjAz

其实弄了大半天无非就是把.SO文件打包到APK的lib文件夹中,假如仔细阅读了Gradle的使用方法,自然就知道其实Gradle官方在新版已经自动实现了打包.SO文件的.很简单级就是在配置的android节点下build.gradle加入下面的内容就ok:

sourceSets {        main {            jniLibs.srcDirs = ['libs']        }    }
其他地方无需修改,整个项目的配置文件如下:
apply plugin: <span class="string" style="color: rgb(221, 17, 68);">'android'</span>android {<span class="indent">  </span>compileSdkVersion <span class="number" style="color: rgb(0, 153, 153);">19</span><span class="indent">  </span>buildToolsVersion <span class="string" style="color: rgb(221, 17, 68);">"19.0.0"</span><span class="indent">  </span>defaultConfig {<span class="indent">  </span><span class="indent">  </span>minSdkVersion <span class="number" style="color: rgb(0, 153, 153);">16</span><span class="indent">  </span><span class="indent">  </span>targetSdkVersion <span class="number" style="color: rgb(0, 153, 153);">19</span><span class="indent">  </span><span class="indent">  </span>versionCode <span class="number" style="color: rgb(0, 153, 153);">1</span><span class="indent">  </span><span class="indent">  </span>versionName <span class="string" style="color: rgb(221, 17, 68);">"1.0"</span><span class="indent">  </span>}<span class="indent">  </span>buildTypes {<span class="indent">  </span><span class="indent">  </span>release {<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>runProguard <span class="keyword" style="font-weight: bold;">false</span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>proguardFiles getDefaultProguardFile(<span class="string" style="color: rgb(221, 17, 68);">'proguard-android.txt'</span>), <span class="string" style="color: rgb(221, 17, 68);">'proguard-rules.txt'</span><span class="indent">  </span><span class="indent">  </span>}<span class="indent">  </span>}<span class="indent">  </span>sourceSets {<span class="indent">  </span><span class="indent">  </span>main {<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>jniLibs.srcDirs = [<span class="string" style="color: rgb(221, 17, 68);">'libs'</span>]<span class="indent">  </span><span class="indent">  </span>}<span class="indent">  </span>}}dependencies {<span class="indent">  </span>compile fileTree(dir: <span class="string" style="color: rgb(221, 17, 68);">'libs'</span>, <span class="keyword" style="font-weight: bold;">include</span>: [<span class="string" style="color: rgb(221, 17, 68);">'*.jar'</span>])}
这不就是很简单么,无需手动打包,也无需很复杂的打包拷贝命令,简单的操作就ok。可以说多看看官方文档是多么的重要。


4:How to import android project as library and NOT compile it as apk (Android studio 1.0)

解决方案http://stackoverflow.com/questions/27536491/how-to-import-android-project-as-library-and-not-compile-it-as-apk-android-stud

当然也有可能是你引入的android 工程不是libray工程

将你想要引入的工程改成library   将想要引入的工程的build.gradle 

apply plugin: 'com.android.application'
改成
apply plugin: 'com.android.library'



5:Suggestion: use tools:overrideLibrary="XXXX" to force usage
...............

> Manifest merger failed with multiple errors, see logs

AndroidManifest.xml添加
<uses-sdk tools:overrideLibrary="XXXX"/>

1 0
原创粉丝点击