Android Studio問題記錄

來源:互聯網
上載者:User

標籤: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問題記錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.