android studio gradle

1:build.gradle文件下的一些基本概念html

 

apply plugin: 'android'

def outputDir = "C:/Users/jian_zhou/Desktop/myapk"
def startName = "start"

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}


dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile files('libs/bugly_1.2.3.8__release.jar')
    compile files('libs/CySDK.jar')
    compile files('libs/fastjson-1.1.45.android.jar')
    compile files('libs/httpmime-4.1.2.jar')
    compile files('libs/jg_filter_sdk_1.1.jar')
    compile files('libs/mframework.jar')
    compile files('libs/mid-sdk-2.20.jar')
    compile files('libs/MobLogCollector.jar')
    compile files('libs/MobTools.jar')
    compile files('libs/mta-sdk-2.0.2.jar')
    compile files('libs/RasterSDKv1.1.0.15299.jar')
    compile files('libs/ShareSDK-Core-2.6.1.jar')
    compile files('libs/ShareSDK-Email-2.6.1.jar')
    compile files('libs/ShareSDK-QQ-2.6.1.jar')
    compile files('libs/ShareSDK-QZone-2.6.1.jar')
    compile files('libs/ShareSDK-ShortMessage-2.6.1.jar')
    compile files('libs/ShareSDK-SinaWeibo-2.6.1.jar')
    compile files('libs/ShareSDK-Wechat-2.6.1.jar')
    compile files('libs/ShareSDK-Wechat-Core-2.6.1.jar')
    compile files('libs/ShareSDK-Wechat-Moments-2.6.1.jar')
    compile files('libs/TencentLocationSDK_v4.1.1_r175129.jar')
    compile files('libs/universal-image-loader-1.9.3.jar')
    compile files('libs/wup-1.0.0-SNAPSHOT.jar')
    compile files('libs/Xg_sdk_v2.39_20150915_1121.jar')
    compile files('libs/android-support-v4.jar')
    compile files('libs/eventbus.jar')
}

android {
    signingConfigs {
        config {
            keyAlias 'cmstop'
            keyPassword 'cmstop'
            storeFile file('C:/Users/jian_zhou/Desktop/cmstop.keystore')
            storePassword 'cmstop'
        }
    }



    //忽略lint錯誤
    lintOptions{
        abortOnError false
    }

    compileSdkVersion 19
    buildToolsVersion '20.0.0'

    defaultConfig {
        applicationId "com.wondertek.cj_yun"
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src', 'unvariable', 'variable']
            resources.srcDirs = ['src', 'unvariable', 'variable']
            aidl.srcDirs = ['src', 'unvariable', 'variable']
            renderscript.srcDirs = ['src', 'unvariable', 'variable']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
    buildTypes {
        release {
            minifyEnabled true
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'
//            proguardFile  'proguard.cfg'
            proguardFile  'proguard.cfg'
            signingConfig signingConfigs.config
//            zipAlignEnabled true
        }
        debug {
            signingConfig signingConfigs.config
        }
    }


    //apk 輸出目的路徑的寫法
    android.applicationVariants.all { variant ->
        def file = variant.outputs[0].outputFile
        def fileParent = new File(outputDir)
        variant.outputs[0].outputFile =
                new File(fileParent,startName +"_"+name+ ".apk")
    }
}
View Code

 

2:gradle 命令區別學習(http://www.androidchina.net/2155.html)java

http://segmentfault.com/a/1190000002464822android

gradle中有一個核心概念叫任務,跟maven中的插件目標相似。
gradle的android插件提供了四個頂級任務
assemble 構建項目輸出
check 運行檢測和測試任務
build 運行assemble和check
clean 清理輸出任務

執行任務能夠經過gradle/gradlew+任務名稱的方式執,執行一個頂級任務會同時執行與其依賴的任務,好比你執行json

gradlew assemble

它一般會執行:segmentfault

gradlew assembleDebug
gradlew assembleRelease

 

3:AndroidManifest.xml下package="com.wondertek.cj_yun"與build.gradle 下applicationId的疑問數組

http://blog.csdn.net/maosidiaoxian/article/details/41719357

4:Android 自定義控件在Android Studio中xmlns不識別app

Gradle工具會自動識別,因此不用指定包名maven

把 xmlns:xx="http://schemas.android.com/apk/res/com.xxx"  ide

換成 xmlns:xx="http://schemas.android.com/apk/res-auto"  工具

而後同步一下 就OK了

 

5:Gradle 的詳情

http://wiki.jikexueyuan.com/project/gradle-2-user-guide/

 

6:java 代碼執行動態gradle命令打包

private static void fun1() {
        // TODO Auto-generated method stub
        // 使用 && 來鏈接兩條命令
        String cmd = "cmd /c D: && cd D:\\WorkSource\\Android_Studio\\CmsTopCloudMobile && gradle assemblerelease";
        // 使用數組
        String[] cmds = new String[] { "cmd", "/k", " start ", "notepad" };
        Runtime run = Runtime.getRuntime();
        try {
            Process process = run.exec(cmd);
            // 用緩衝器讀行
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line = null;
            // 直到讀完爲止
            while ((line = reader.readLine()) != null) {
                System.out.println("xxx---->"+line);
                if(line.contains("SUCCESSFUL")){
                    System.out.println("打包成功了"+line);
                    return ;
                }else if(line.contains("FAILED")){
                    System.out.println("打包失敗了"+line);
                    return ;
                }
            }
            reader.close();     
            process.waitFor();   
            process.destroy();    
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
View Code

 cmd 打包用到的一些命令符

cmd /c dir 是執行完dir命令後關閉命令窗口。

cmd /k dir 是執行完dir命令後不關閉命令窗口。

cmd /c start dir 會打開一個新窗口後執行dir指令,原窗口會關閉。

cmd /k start dir 會打開一個新窗口後執行dir指令,原窗口不會關閉。

 

7:java代碼執行自動打包時Runtime.getRuntime().exec 的問題

  主要是主控程序的waitfor方法會被阻塞一直等待下去 須要本身手動處理一下 請參考

   http://jasonshieh.iteye.com/blog/1144891

相關文章
相關標籤/搜索