Android Studio 2.2 Preview 3前後の開発環境の挙動変化メモ
- gradle:2.2.0-alpha3 の話
これビルドは成功するんだけど、9-patchが効かないっていう
わけわかんない状態で、この記事探すまで途方に暮れていました。
$ANDROID_SDK_HOME/build-tools/24.0.0-preview
というフォルダなのに
中のpackage.xml に
<revision><major>24</major><minor>0</minor><micro>0</micro></revision>
と書いているせいで
buildToolsVersion 24
と書かないとエラーになるみたいな話と同じようなヤッツケ感があるよな(汗
- DefaultManifestParserの話
android gradle plugin 2.2.0-alpha3 になっても DefaultManifestParserの public属性が復活しないので最新版に移行しづらいのはどうにかならないのかな〜(汗。自前でManifestを読み込むtaskつくる?
これは勘違いで、2.2-prev2の段階で,public属性は治ってました。
エラーが出てたのはクラスの引数が変わったからというのが正解みたい
- build.gradle (2.1ベース)
import com.android.builder.core.DefaultManifestParser android { defaultConfig { def manifestParser = new DefaultManifestParser() applicationId = manifestParser.getPackage(android.sourceSets.main.manifest.srcFile) versionName = manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile) def manifest = new XmlSlurper().parse(android.sourceSets.main.manifest.srcFile) versionCode manifest.'@android:versionCode'.text() as int minSdkVersion manifestParser.getMinSdkVersion(android.sourceSets.main.manifest.srcFile) targetSdkVersion manifestParser.getTargetSdkVersion(android.sourceSets.main.manifest.srcFile) } }
=>
- build.gradle (2.2ベース)
import com.android.builder.core.DefaultManifestParser android { defaultConfig { def manifestParser = new DefaultManifestParser(android.sourceSets.main.manifest.srcFile) applicationId = manifestParser.getPackage() versionName = manifestParser.getVersionName() versionCode manifestParser.getVersionCode() minSdkVersion manifestParser.getMinSdkVersion() targetSdkVersion manifestParser.getTargetSdkVersion() } }
- run-asの話
Android Studio「No changes to deploy」僕「no changes じゃねぇよ、変更してんだよ!」
これよくあるな・・。何でなんだろう RT
ファイル変更監視は結構怪しいと思いますけどね。。
gradleのせいなのかandroid pluginのせいなのかわかりませんが。。
高速化されたadbとか歌われた辺りから挙動が変更されている気がします。
デバッカーでつないでいてException拾うとよく切断されるんだよな
下記を其の度に繰り返していましたが、端子の劣化が激しいので *1
- USB接続しなおし
- =>USBの接続モードのチェックをON/OFFにする
方が優しいらしい*2
で段落題の件
一時期動いてたrun-asの奴が動かない?? なんで〜と思ってたけど
下記に修正したら動いたので、解釈の仕方が変わったのかと思う
- 一昔前のadb pull *3
pkgname=com.irof.hogeDriven dbname=ScoreDB SERIAL=192.168.56.101:5555 adb -s $SERIAL shell "run-as $pkgname 'chmod 666 /data/data/$pkgname/databases/$dbname'" adb -s $SERIAL pull /data/data/$pkgname/databases/$dbname adb -s $SERIAL shell "run-as $pkgname 'chmod 600 /data/data/$pkgname/databases/$dbname'"
=>
- 最近のadb
adb -s $SERIAL shell "run-as $pkgname chmod 666 /data/data/$pkgname/databases/$dbname" adb -s $SERIAL pull /data/data/$pkgname/databases/$dbname adb -s $SERIAL shell "run-as $pkgname chmod 600 /data/data/$pkgname/databases/$dbname"
run-asの後の'◯◯' の[']を除くと動く。
前はどっちでも動いていたので 厳密になったのかな?
- IDEの話
Android StudioがCPU全部持っていくのまぁいいんだけどPC操作できなくなるからUIレンダリングまわりのコアは別で管理してほしい
Android Studio 2.2-preview3 はこれが特に顕著。同時に公式エミュレータ立ち上げたらこの前久々のブルースクリーンがでてPC再起動しましたし。。 RT
- GradleSyncでCPUが100%
- レイアウトプレビューでCPU100%
- でもCustomThemeと判定される昔のレイアウトとかはまともに表示できない*4
- ボタンとかテキストが見えないのは明らかにバグやろと。
- 流石に画像あたりはプレビューできるようなんですが。。
新規プロジェクトで作る時の
- ConstraintLayout
とかは綺麗にですんですけどね(NoActionBar Theme辺りが選択されてる)
これThemeが見つからないとCPUが分回る作りなんじゃないだろうか??
Android Studio 2.2 preview 3 でwear有りのプロジェクトをプロジェクトウィザード経由で新規作成してビルドしようとしただけでMultiDex出るんだけど、初心者に厳しすぎじゃない?(テクブ本の写経をしようとしていただけなんだけどorz
何もいじってなくてapk転送しようとしただけでこの状態になるorz
しかも動いたら動いたで
のお話にハマると。。。*5
- NDKの話
また新しいNDKのDSLが実装中らしい。
AndroidModelは捨てたんですかね。。(汗
確かにAndroid Studio 2.2 Preview 3のSDK ManagerにはCMakeが加わっているのが確認できる。 URL
.@keicha_hrs さんが呟かれていたCMakeの話だけど、AS 2.2 で新規プロジェクト+C++サポートで生成される。externalNativeBuild.cmake.path "CMakeLists.txt" の記述をチョットでも弄ると不正扱いでエラーになる
2016-06-19 17:50:21 via YoruFukurou to @keicha_hrs
add_library(native-lib SHARED ../jni/native-lib.cpp) # src/main/cpp/native-lib.cpp)な形でビルドは出来た
で、Android.mkの参照版を試してみた。
- gradle tasksまでは成功
- build.gradle (2.2ベース)
android {
externalNativeBuild{
ndkBuild{
path "jni/Android.mk"
}
}
}
- 実際のNDKのタスクの実行をしようとした時点で
- LOCAL_SRC_FILESが見つからないエラーが出る*6
- 結局今までどおりのndk対応がベストという結論でしたorz
GradeによるJNIライブラリのビルドはこちらを参考になりました。FYI。。 URL
@toshi0383 もしかして一番したので解決されていたりしますか? どの回答で解決したのか気になります
2016-06-19 18:03:46 via YoruFukurou to @toshi0383
@kimukou2628 BAになってるヤツそのままでいけましたよ。ちなみにMacではうまくいっていますが、Windowsでうまくいくかは未検証です。 URL
@toshi0383 ありがとうございます。確かにビルドだけならこれで良さそうですね。チョット試してみます
2016-06-20 23:08:00 via YoruFukurou to @toshi0383
@kimukou2628 Windowsはndk-build.cmdまで書かないとダメでした。
@kimukou2628 あと\.local.propertiesにndk.dir を書かないとダメでした。
@toshi0383 確かにそうでしたね。情報ありがとうございます。stack overflowに書いてあった一番下の 2.2.0-prevの新しいDSLの奴は、やはり動きませんでした普通にndk-build.cmd を自分で呼ぶほうが良いようです
2016-06-23 00:53:24 via YoruFukurou to @toshi0383