読者です 読者をやめる 読者になる 読者になる

ADT22.2メモ


メモ途中)



22.2.1)早速新規プロジェクト作成の方は緊急パッチでたみたいですね。。。



"schemas.android.com/apk/res/パッケージ名"ではなく
"schemas.android.com/apk/res-auto"
twitterは変な短縮かかりますね


△>アイコンがドロイド君になる件メモ>

アイコンとかは

で確認すると PackageManager 経由で取れるっぽい。あとで確認




support-v8 renderscriptの話)

サンプルで試してみないとなんとも言えないかも。。。


22.2.0)

でやっぱり予想通り

読んでたら、FullActivityのtemplateも駄目らしい。。template自体次回見なおして再リリースしてほしい
って感じですね。
 結局のところ「bindするコードの所も確認しましょう」
って意味の記載が上記のブログには書いてあったので、そこまで追っかけないと使えないのか。。。
eclipse(ADT)嫌いが増えるわけだわ。。。とか思ってしまったりも。。。(苦笑

ココで凄く混乱して

の古いadt22.0.5落としてきて

とか遣ってて動かせず。。*1

追記>
 これは会社の端末ではbuild.xmlのままだった
 自分でやってたときは何回かupdateこけてたのでそのせいっぽい(汗
 あと2回 android update sdkした段階で 18.1.0 が出現したのは ADT22の共通みたいなもん?*2

ただここまで遣って更新する意味があるかどうかは微妙だけど。。

備考)
SDKのテンプレート弄る話は

も参考になるかも

これはgithubandroid eclipse pluginのソースが有るという話



export gradle機能に関して)

生成されたのは

  • MainP/build.gradle
apply plugin: 'android'

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

android {
    compileSdkVersion 17
    buildToolsVersion "18.1.0"

    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')
    }
}
  • LibP/build.gradle
apply plugin: 'android-library'

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

android {
    compileSdkVersion 17
    buildToolsVersion "18.1.0"

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

 ASは別にいらなくて、eclipseで動かせればいいよの前提なら
Android Studio のGUI系 設定メモ - exception think
2-B1) の備考の設定で 外部ツール登録で動かす認識となります

その場合は

  • MainP/build.gradle
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

を上部に追加

  • MainP/settings.gradle(新規)
def library_name='libP'
includeFlat library_name //仮想パス

def lib_prg = project(":$library_name");
lib_prg.projectDir=new File(settingsDir,'../libP') //実体の位置を設定
println "[name]=${lib_prg.name}" 
println "[dir    ]=${lib_prg.projectDir}"

clean build

で実行可能です。

備考1>
ただし [android gradle plugin] の制限として

  • MainP/libP間で同一リソースIDは宣言できない(コンパイル前にplugin内でエラー扱いにしている)

な制限がありますので
(ant buildではIDの上書き<importの先の差替によって優先度を変える>って手法ができるのですが。。。)
そこはコード修正が必要になるかと思います

備考2>
includeFlat の仮想パス指定は gradle的には正しい記述ですが
ASの [android idea plugin]的にはエラー扱いとしています。
pluginの作成者の方々の理想が <>
であるからです *3

備考3>
eclipseなんか嫌いなんで今直ぐ決別したいよ!という貴方なら*4

あたりを参考にすればよいかと思います*5

あとは公式からアナウンスされてる

  • eclipseプロジェクトのインポート対応待ち*6
  • ASで新規プロジェクト作ってソースコピーすればええやん!*7

という手法もとることが可能かと思います

備考4>
ふと後でworkspaceのフォルダみてたら

  • workspace
    • MainP
      • build.gradle
    • libP
      • build.gradle
    • build.gradle
    • settings.gradle
    • gradlew
    • gradlew.bat
    • gradleフォルダ

な生成していた。。。エーこれeclipseから見えんのだけど。
たしかにこの記述であれば、
MainP/libP の方にmavenRepoの宣言はいらんわけだけどさ・・。
なんか違うだろコレ。。。(苦笑

備考5>
最新のversion対応に記述を変更した場合、
defaultConfig を追加しないとAndroidManifest.xmlを誤爆よみして
変なエラーが出てコンパイルがコケるようになったので追加したほうがいいみたい

  • MainP/build.gradle
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+' //☆
    }
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1" 

   defaultConfig {
        minSdkVersion 4
        targetSdkVersion 18
   }

まあ仕方ないね。でもLibP/MainPでの ID重複でも怒られなくなったので、そこは凄い嬉しいかも

備考6>
あとgradle自体を入れずにgradle-warper運用をしたい時の話

下記にexport gradle時にコピーされる構成があるので

  • $ANDROID_SDK_HOME/tools/templates/gradle
    • wrapper/gradle/wrapper/gradle-wrapper.properties

の設定をallベースに書き換えましょう という話。

#Wed Apr 10 15:27:10 PDT 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-all.zip




TL上のメモ 22.2.1)

TL上のメモ 22.2.0)

 結局ASのテンプレート記述の同期転記ミスって感じなのでしょうか。。。
ADTがASに引きづられて不具合出るのは正直勘弁してほしいなと思う。。

*1:Attributeが全然違うからエラーで先に進めないorz

*2:家の構築環境はそこ最初から出たから更新が微妙な状態だったのかも。。。

*3:多分現状のADT形式のプロジェクト形式を快く思っていないのだと思います

*4:なんでADTとeclipse使ってるんですか?<苦笑

*5:zakiさんのサンプルとかって実は難しい。。。

*6:IDEA12やIDEA13EAPにはその機能がもともと有るのですが、ASでは逆にルート封じられていますね<汗

*7:今バリバリ使ってる人はこちらのタイプかと。。