標籤:android style blog http io ar os 使用 sp
開始整理使用android studio開發android項目
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 --helpgradle 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="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:[email protected]‘ 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問題記錄