/var/log/messages

Mar 6, 2014 - 2 minute read - Comments - android

build.gradle 修正など

Android Studio が自動で作ったのが以下。

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
}

別件プロジェクトな build.gradle とはかなり違ってるんでびっくり。

sourceSets

以下は追加しとくべきなのかどうか。

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }

    // 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')
}

定型みたいなので追加してみる方向。あとは signingConfigs とか本番用の鍵関連の情報とか bulidTypes とかも必要なのかどうか。

signingConfigs {
    debug {
        storeFile file(homeDirectory + "/.android/debug.keystore")
    }
    
    myConfig
}

if (project.hasProperty('storeFile')) {
    android.signingConfigs.myConfig.storeFile = file(homeDirectory + storeFile)
}
if (project.hasProperty('storePassword')) {
    android.signingConfigs.myConfig.storePassword = storePassword
}
if (project.hasProperty('keyAlias')) {
    android.signingConfigs.myConfig.keyAlias = keyAlias
}
if (project.hasProperty('keyPassword')) {
    android.signingConfigs.myConfig.keyPassword = keyPassword
}

buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        signingConfig signingConfigs.myConfig
    }
}

上記追加であれば gradle.properties というファイルを追加して以下を盛り込む方向。

storeFile=/.android/hoge.keystore
storePassword=fuga
keyAlias=fuga
keyPassword=fuga

手持ちのソレは native なナニを云々してるのでもう少し色々ありますが、この程度の修正で apk 作ったりとかデバグ用な build ができるかとか確認してみます。

問題あれば追記の方向で。

gradlew してみた

とりあえず gradlew に実行権限付いてない。a+x して実行するも failure とのこと。これ、すっかり忘れてたんですが環境変数で $HOME 渡さねば、なんでした。

$ ./gradlew -PhomeDirectory=$HOME clean aR

次は Main Manifest missing とのこと。これ、Eclipse なプロジェクトの build.gradle を真似てるあたり、非常に危険ですね。sourceSets 云々はざくっと削除で。あと、defaultConfig も復活。

あと、gradle.properties は .gitignore に追加必要ってのと雛形として gradle.properties.proto を追加必要。備忘です。

BUILD SUCCESSFUL

と思ったら Android Studio 上で Build できぬ。

って build.gradle に以下な記述が入ってたよorz

def homeDirectory = System.getenv()['HOME']

正常動作を確認。

備忘含めて commit 作って push しときます。つうかバグ修正な commit が作成されるのか。

今のところ

build.gradle は以下なカンジです。

$ cat app/build.gradle 
apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }

    def homeDirectory = System.getenv()['HOME']

    signingConfigs {
        debug {
            storeFile file(homeDirectory + "/.android/debug.keystore")
        }

        myConfig
    }

    if (project.hasProperty('storeFile')) {
        android.signingConfigs.myConfig.storeFile = file(homeDirectory + storeFile)
    }
    if (project.hasProperty('storePassword')) {
        android.signingConfigs.myConfig.storePassword = storePassword
    }
    if (project.hasProperty('keyAlias')) {
        android.signingConfigs.myConfig.keyAlias = keyAlias
    }
    if (project.hasProperty('keyPassword')) {
        android.signingConfigs.myConfig.keyPassword = keyPassword
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.myConfig
        }
    }
}

dependencies {
}

そりゃ良いのですがとりあえず問題発生なので対処しますorz