Android 컴파일gradle 동적 수정 버전 번호

12732 단어 Android
코드를 구축할 때 매번 버전 번호를 수정하고 싶지 않기 때문에 특정한 조건하에서 동적 수정 버전 번호를 추가할 수 있는 기능이 필요하다
  • manifest에 차지 기호
  • 를 넣는다
    
    
    
  • 수정build.gradle
  • import com.google.gson.Gson
    
    class Version {
        int versionCode
        String versionName
    }
    
    
    def versionJsonFile = file('./version.json')//                       
        def versionJsonObject = new Gson().fromJson(versionJsonFile.text, Version.class)
        android.applicationVariants.all {
            variant ->
                println("variants name : " + variant.name)
    			//                   ,               
                if (variant.name.toLowerCase().contains("ceshirelease") ) {
                    println("variants name : versionCode " +  versionJsonObject.versionCode + "versionname: " + versionJsonObject.versionName)
                    versionJsonObject.versionCode = versionJsonObject.versionCode + 1
                    int lastIndexPoint = versionJsonObject.versionName.lastIndexOf(".")
                    String newStr = versionJsonObject.versionName.substring(0, lastIndexPoint)
                    println("newStr" +  newStr)
                    versionJsonObject.versionName = newStr + "." + versionJsonObject.versionCode
                    println("versonJsonStr.versionName " +   versionJsonObject.versionName)
                }
    			//     ,           ,         BuildConfig.class     
                variant.mergedFlavor.versionCode = versionJsonObject.versionCode
                variant.mergedFlavor.versionName = versionJsonObject.versionName
    			//         ,                     ,     
                variant.mergedFlavor.manifestPlaceholders.put("versioncode", versionJsonObject.versionCode)
                variant.mergedFlavor.manifestPlaceholders.put("versionname", versionJsonObject.versionName)
        }
    	
    	//          ,           ,          
    	//         apk                     
    	   afterEvaluate {
            project ->
                gradle.taskGraph.afterTask {
                    task, taskState ->
    				   //    assembleceshirelease            ,         ,     
                        if (task.name.toLowerCase().contains("assembleceshirelease") && taskState.getFailure() == null) {
                            println("try assemble ceshi release" )
    						//      
                            versionJsonFile.withPrintWriter { out ->
                                    out.println(new Gson().toJson(versionJsonObject))
                            }
                        }
                }
        }
    	
    

    apk에 이름을 다시 붙이는 것도 마찬가지예요.
               variant.getOutputs().all {
                   File file = it.outputFile;
                   println(" file property  file.canRead() " + file.canRead() + " file.canWrite " + file.canWrite())
                   String pathString = file.getPath();
                   println(" path String : " + pathString + " File.pathSeparator: " + File.separator)
    			   //               
                   pathString = file.getParent() + File.separator +  "test.apk";
                   println(" path pathString : " + pathString)
                   file.renameTo(pathString)
               }
    

    좋은 웹페이지 즐겨찾기