Gradle編譯java,Eclipse項目以及遇到的問題

使用Gradle創建一個簡單java項目
步驟:
1、 首先創建一個空的文件夾(名字隨便起),我起名加gradlework
2、 進入空文件夾,在命令行使用gradle init 初始化gradle結構
3、 打開編輯build.gradle文件,添加java插件
並添加eclipse插件,然後添加創建java文件目錄

代碼如下

apply plugin: 'java'
apply plugin: 'eclipse'
 //申明java主類
jar {
    manifest {
        attributes 'Main-Class': 'net.petrikainulainen.gradle.HelloWorld'
    }
}
//創建目錄
task createJavaProject << {
    sourceSets*.java.srcDirs*.each{ it.mkdirs() }
    sourceSets*.resources.srcDirs*.each{ it.mkdirs()}
}



4、 然後執行gradle build 或者gradle assemble
5、 執行 gradle createJavaProject ecplise 創建java項目的src文件目錄
6、 在src\main\java 目錄下添加java代碼文件 文件名爲HelloWorld.java
public class HelloWorld {
 
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}



在執行gradle build ,然後切換到build/libs文件夾下邊執行.jar文件
命令 java -jar "替換爲jar包的名稱"
就能看到執行結果
輸出Hello world!




使用Gradle編譯Eclipse編寫的Android項目:

編譯Eclipse開發的android項目跟java項目一樣十分簡單,如果只是項目本身的話,那麼只要在項目的跟目錄下創建倆個文件就可以了;
步驟:
1、首先要保證Gradle的環境配置沒有問題,然後要確保現在使用的Gradle不是3.3及以上,因爲我測試過程中3.3編譯不過去
2、在項目根目錄下創建文件build.gradle 用來編寫編譯代碼
代碼:
buildscript {
    repositories {
        jcenter()
mavenCentral()
    }


    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    }
}


apply plugin: 'com.android.application'


android {


compileSdkVersion 19
    buildToolsVersion "22.0.1"


    sourceSets {
        main{
            manifest.srcFile 'AndroidManifest.xml'


            java.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']


            res.srcDirs = ['res']


            assets.srcDirs = ['assets']


            jniLibs.srcDirs = ['libs']


        }
      // Move the tests to tests/java, tests/res, etc...  
        instrumentTest.setRoot('tests')  
  
        // Move the build types to build-types/<type>  
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...  
        // This moves them out of them default location under src/<type>/... which would  
        // conflict with src/ being used by the main source set.  
        // Adding new build types or product flavors should be accompanied  
        // by a similar customization.  
        debug.setRoot('build-types/debug')  
        release.setRoot('build-types/release')  
    }
    defaultConfig {
        applicationId "com.oppo.examples"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            //是否開啓混淆
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    compileOptions{
        sourceCompatibility org.gradle.api.JavaVersion.VERSION_1_7
        targetCompatibility org.gradle.api.JavaVersion.VERSION_1_7
    }
    //移除lint檢查的錯誤error
    lintOptions{
        abortOnError false
    }
}


dependencies {
  compile fileTree(dir:'libs', include:['*.jar'])
}



直接複製,然後按你的Gradle修改classpath 'com.android.tools.build:gradle:2.1.0'   爲你的版本。
還可以修改sdk的版本,jdk版本等
  4、在根目錄下創建local.properties,用來指定sdk的路徑,如果是ndk的話也在這配置

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Tue Jun 14 12:00:41 CST 2016
sdk.dir=D\:\\tools\\android_sdk


5、然後在根目錄下打開命令行,直接輸入 gradle build等着就好了,等完成以後就可以看到項目裏邊多了好多文件夾,然後打開\build\outputs\apk
就可以看到編譯好的apk。
如果還有依賴的庫的話那麼就多創建一個settings.gradle   裏邊就項目所包含的類庫
include ':Example',':libraries:lib_shareSDK'  
  
project(':libraries:lib_shareSDK').projectDir = new File('E:/workfile/AndroidWorkspace/lib_shareSDK') 




使用中出現的問題:

1、使用中出現:
Error:Unable to start the daemon process.    
This problem might be caused by incorrect configuration of the daemon.    
For example, an unrecognized jvm option is used.    
Please refer to the user guide chapter on the daemon at http://gradle.org/docs/2.2.1/userguide/gradle_daemon.html    
Please read the following process output to find out more:    
-----------------------    
Error occurred during initialization of VM    
Could not reserve enough space for object heap    
Error: Could not create the Java Virtual Machine.    
Error: A fatal exception has occurred. Program will exit.    


出現這個問題有可能是分配的內存有點小,但是單純的使用Gradle的時候可以通過在文件夾下添加gradle.properties
在文件中添加如下配置信息:

org.gradle.jvmargs=-Xmx512m    


如果沒有用那麼就要檢查下是不是jdk的問題,必須使用jdk 1.7或者以上的才行,而且在第一次使用的時候jdk可能防火牆會提示是否允許,一定不能拒絕,否則也會出現這個問題。
2、 錯誤:找不到或無法加載主類xxxx
問題是在build.gradle中沒有指定主類,或者指定的主類與代碼中的包名不對,必須要保持一致。
3、
org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection c
annot be cast to org.gradle.api.internal.file.collections.DefaultConfigurableFil
eCollection



該問題是因爲最新版本出現的問題,還沒有發現解決辦法,除非使用低版本,(最新3.3,使用2.xxx的就可以了)但不是最好的解決辦法。


4、更新Gradle的版本,更新版本可以隨便找一個項目,打開它的目錄gradle/wrapper  修改


gradle-wrapper.properties文件中最後一行的版本信息爲你要更新的版本信息。
然後在項目根目錄下打開命令行,執行gradlew 類型的任務都會進行下載,下載以後會自動解壓。如果嫌下載太慢可以在網上下載好,然後
複製到相應的目錄下邊。
我的地址在


C:\Users\xxxxxx\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9  下,最後這個文件夾是gradle自己創建的,放到這個裏邊然後在執行
gradlew相應的命令就可以自動解壓了。
5、出現以下錯誤:
Error:(50, 0) Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "Android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
解決辦法就是在gradle.properties文件中添加  android.useDeprecatedNdk=true,如果沒有這個文件就在跟目錄下創建並添加。就可以正常編譯了。
使用Gradle 來創建一個簡單的java項目。
步驟:
1、 首先創建一個空的文件夾(名字隨便起),我起名加gradlework
2、 進入空文件夾,在命令行使用gradle init 初始化gradle結構
3、 打開編輯build.gradle文件,添加java插件
並添加eclipse插件,然後添加創建java文件目錄
代碼如下

4、 然後執行gradle build 或者gradle assemble
5、 執行 gradle createJavaProject ecplise 創建java項目的src文件目錄
6、 在src\main\java 目錄下添加java代碼文件 文件名爲HelloWorld.java
在執行gradle build ,然後切換到build/libs文件夾下邊執行.jar文件
命令 java -jar "替換爲jar包的名稱"
就能看到執行結果
發佈了130 篇原創文章 · 獲贊 53 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章