首页 > 代码库 > Android Studio问题记录
Android Studio问题记录
gradle的好处详及细介绍就不说了,网上搜下就好
使用gradle构建项目
安装studio,版本0.8.14
gradle 目前支持插件版本gradle-2.1-all
本地安装gradle-2.1-all,下载包,配置环境变量,路径到bin目录
(记得翻墙)
android studio 快捷键 Alt+Enter引入类import
studio新建项目
studio的Project相当于eclipse的workspace,Module相当于Eclipse的project
studio新建一个Project就会新打开一个studio程序
项目目录如下:
1:根目录的gradle文件
2:主项目的gradle文件
3:library项目的gradle文件
4:编译后生成的文件存放处
主项目目录
新建项目之后,点击Studio左下角Terminal,弹出命令行(终端)运行构建命令,记得命令行路径是在根目录下,我刚开始的时候是进到了主项目运行gradle命令,所以遇到
gradle常用命令有:
gradle --help gradle tasks //列出task列表 gradle asD (gradle assembleDebug) //编译debug打包 gradle asR (gradle assembleRelease) //编译release打包 gradle asD --refresh-dependencies //强制刷新依赖 gradle asD --parallel //并行编译 gradle asD --parallel-threads 3
gradle build gradle clean
直接执行gradle build会生成debug 包和release包 如果不想要debug包可以使用gradle asR命令
gradle基本使用方法可以查看相关文档,不再详细说明
以下是我在研究的时候查找到的文档,或许有用,以备
http://beartung.github.io/rockwithandroid/gradle.html
http://www.cnblogs.com/qianxudetianxia/p/3987395.html
http://www.cnblogs.com/youxilua/archive/2013/05/20/3087935.html
https://gist.github.com/youxiachai/5608223
https://github.com/ShinChven/ImmigrateToGradle
http://avatarqing.github.io/Gradle-Plugin-User-Guide-Chinese-Verision/introduction/README.html
下面是我用的gradle 的配置信息,是在主项目下的,即是上面的2处
另外,1处的配置项目里默认即可,因为有些library项目默认的maven( 默认是这个 jcenter())仓库没找到所以我加了一个
mavenCentral()
apply plugin: ‘com.android.application‘ android { compileSdkVersion 21 buildToolsVersion "21.0.1" defaultConfig { applicationId "com.jiangjinyue.pangdan" minSdkVersion 8 targetSdkVersion 21 versionCode 1 versionName "1.0" } signingConfigs { myConfig{ storeFile file("pangdan.keystore") storePassword "123456" keyAlias "pangdan" keyPassword "123456" } } buildTypes { release { signingConfig signingConfigs.myConfig runProguard false proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘ } debug{。。。。}//测试包 } //渠道Flavors,我这里写了一些常用的,你们自己改 productFlavors { GooglePlay{} Store360{} // QQ{} // Taobao{} // WanDouJia{} // AnZhuo{} // AnZhi{} // BaiDu{} // Store163{} // GFeng{} // AppChina{} // EoeMarket{} // Store91{} // NDuo{} } packagingOptions { // 打包配置 exclude ‘META-INF/LICENSE‘ // 排除一些文件 exclude ‘META-INF/NOTICE‘ exclude ‘META-INF/LICENSE.txt‘ exclude ‘META-INF/NOTICE.txt‘ } //这个是解决lint报错的代码 lintOptions { abortOnError false } sourceSets { main {//引用libs目录下的so文件,JNI jniLibs.srcDirs = [‘libs‘] } } } android.applicationVariants.all{ variant -> //https://gist.github.com/goldierox/9533466 //这里是修改AndroidManifest.xml文件中minSdkVersion variant.processManifest.doFirst { File manifestFile = file("${buildDir}/intermediates/exploded-aar/com.github.amlcurran.showcaseview/library/5.0.0/AndroidManifest.xml") if (manifestFile.exists()) { //println("Replacing minSdkVersion in Android Maps Utils") String content = manifestFile.getText(‘UTF-8‘) content = content.replaceAll(/minSdkVersion="11"/, ‘minSdkVersion=\"8\"‘) manifestFile.write(content, ‘UTF-8‘) // println(content) } File manifestFileN = file("${buildDir}/intermediates/exploded-aar/com.github.sd6352051.niftydialogeffects/niftydialogeffects/1.0.0/AndroidManifest.xml") if (manifestFileN.exists()) { // println("Replacing minSdkVersion in Android Maps Utils") String content = manifestFileN.getText(‘UTF-8‘) content = content.replaceAll(/minSdkVersion="10"/, ‘minSdkVersion=\"8\"‘) manifestFileN.write(content, ‘UTF-8‘) // println(content) } } variant.processManifest.doLast{ //这里是多渠道打包修改AndroidManifest.xml文件里面的渠道值,以友盟为例 <meta-data android:name="UMENG_CHANNEL" android:value="http://www.mamicode.com/UMENG_CHANNEL_VALUE" /> //关于路径我这里build目录下的intermediates
//之前这里用的copy{},我换成了文件操作,这样可以在v1.11版本正常运行,并保持文件夹整洁
//${buildDir}是指./build文件夹
//${variant.dirName}是flavor/buildtype,例如GooglePlay/release,运行时会自动生成
//下面的路径是类似这样:./build/manifests/GooglePlay/release/AndroidManifest.xml
def manifestFile = "${buildDir}/intermediates/manifests/full/${variant.dirName}/AndroidManifest.xml"
//将字符串default替换成flavor的名字
def updatedContent = new File(manifestFile).getText(‘UTF-8‘).replaceAll("UMENG_CHANNEL_VALUE", "${variant.productFlavors[0].name}")
new File(manifestFile).write(updatedContent, ‘UTF-8‘)
//将此次flavor的AndroidManifest.xml文件指定为我们修改过的这个文件
variant.processResources.manifestFile = file("${buildDir}/intermediates/manifests/full/${variant.dirName}/AndroidManifest.xml")
}
}
dependencies { //这里是引用的library以及libs下的jar包,另外使用appcompat-v7的时候默认添加的是21版本的,但是我这里有些style文件找不到,修改成18就好了,查了下,似乎是新本不兼容了,还需要研究
compile fileTree(dir: ‘libs‘, include: [‘*.jar‘]) compile ‘com.android.support:support-v4:+‘ compile ‘com.nineoldandroids:library:2.4.0‘ compile ‘com.github.machinarius:preferencefragment:0.1.1‘ compile ‘com.github.sd6352051.niftydialogeffects:niftydialogeffects:1.0.0@aar‘ compile ‘com.github.amlcurran.showcaseview:library:5.0.0‘ compile project(‘:libraries:social_sdk_library_project‘) compile ‘com.android.support:appcompat-v7:18.0+‘ }
Android Studio问题记录