• android studio gradle


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

    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)

    http://segmentfault.com/a/1190000002464822

    gradle中有一个核心概念叫任务,跟maven中的插件目标类似。
    gradle的android插件提供了四个顶级任务
    assemble 构建项目输出
    check 运行检测和测试任务
    build 运行assemble和check
    clean 清理输出任务

    执行任务可以通过gradle/gradlew+任务名称的方式执,执行一个顶级任务会同时执行与其依赖的任务,比如你执行

    gradlew assemble

    它通常会执行:

    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不识别

    Gradle工具会自动识别,所以不用指定包名

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

    换成 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

  • 相关阅读:
    正则表达式在行首添加指定内容
    linux之find命令详解
    一次安装rpcbind失败引发的思考
    配置linux实现路由功能
    chkconfig命令详解
    1225 数数字
    蛇形填数 ------- 模拟水题
    开灯问题---------简单模拟
    单源最短路径
    图的表示方式
  • 原文地址:https://www.cnblogs.com/yujian-bcq/p/5082658.html
Copyright © 2020-2023  润新知