Android 1.0 | 1 | Base |
Android 1.1 | 2 | Base1.1 |
Android 1.5 | 3 | Cupcake |
Android 1.6 | 4 | Donut |
Android 2.0 | 5 | Eclair |
Android 2.0.1 | 6 | Eclair 0.1 |
Android 2.1.x | 7 | Eclair mr1 |
Android 2.2.x | 8 | Froyo |
Android 2.3 | 9 | Gingerbread |
Android 2.3.1 | ||
Android 2.3.2 | ||
Android 2.3.3 | 10 | Gingerbread mr1 |
Android 2.3.4 | ||
Android 3.0.x | 11 | Honeycomb |
Android 3.1.x | 12 | Honeycomb mr1 |
Android 3.2 | 13 | Honeycomb mr2 |
Android 4.0 | 14 | Ice Cream Sandwich |
Android 4.0.1 | ||
Android 4.0.2 | ||
Android 4.0.3 | 15 | Ice Cream Sandwich mr1 |
Android 4.1 | 16 | Jelly Bean |
Android 4.1.1 | ||
Android 4.2 | 17 | Jelly Bean mr1 |
Android 4.2.2 | ||
Android 4.3 | 18 | Jelly Bean mr2 |
Android 4.4 | 19 | KitKat |
Android 5.0 | 21 | Lollipop |
Android 5.1 | 22 | ? |
Android 6.0 | 23 | Marshmallow |
Android 7.0 | 24 | Nougat |
Android 8.0 | 26 | Oreo |
Android minSdkVersion の引き上げ
昔のアプリを久しぶりに修正しようと思ったら、minSdkVersionを引き上げる必要があった。
Error:Execution failed for task ':flatalk:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 14 declared in library [com.android.support:appcompat-v7:26.0.0-alpha1] /Users/admin/.android/build-cache/df7faf3c442bb6a7448aef64241ef184a528/output/AndroidManifest.xml
Suggestion: use tools:overrideLibrary="android.support.v7.appcompat" to force usage
引用:
https://developers-jp.googleblog.com/2016/12/google-play-services-and-firebase-for-android-will-support-api-level-14-at-minimum.html
次にリリースされる予定のバージョン 10.2.0 では、最小サポート API レベルが 9 から 14(Android 4.0.1、Ice Cream Sandwich)に引き上げられる予定です。この変更は、2017 年初めに実施される予定です。
Google Play サービスや Firebase を利用する Android アプリへの影響
バージョン 10.0.0 の Google Play サービスや Firebase は、現在と同様、問題なく利用できます。Gingerbread 端末でも今までと同様に動作します。
アプリの最小サポート API レベルが 14 以上(通常は、build.gradle の「minSdkVersion」で指定します)であれば、今後リリースされるバージョン 10.2.0 にアップグレードしてもバージョニングの問題は発生しません。しかし、API レベル 14 以下をサポートしているアプリの場合、ビルド時に次のようなエラーが表示されます。
Cordova Android Runtime Permission Plugin – cordova-plugin-android-permissionsでパーミッション要求が行われない。 requestPermission is not work
cordova-plugin-android-permissions
permissions.requestPermission(successCallback, errorCallback, permission);
ステップ実行で確認すると、hasPermissionではstatus.hasPermissioがFALSEになっているのですが
、デバック実行しても、パーミション要求が動かないことがありました。
原因はpluginの入れ替えで、要求するパーミンションがAndroidManifest.xmlから消えていたのが原因でした、Manifestに無いパーミッションはリクエストしても要求画面は開きません。
cordova-plugin-cameraを入れ直した際に、Manifestからcameraが消えており、要求が失敗していました。
Youtube API – ユーチューブのカテゴリを取得する( VideoCategories: list)
GET https://www.googleapis.com/youtube/v3/videoCategories
partのみ必須になっていたけど、regionCodeも必要だった。。今回はJPを指定。
参照:https://developers.google.com/youtube/v3/docs/videoCategories/list#try-it
{
"kind": "youtube#videoCategoryListResponse",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/siiWQ_WM0OtxtxK7NUUJKFwqDRc\"",
"items": [
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/Xy1mB4_yLrHy_BmKmPBggty2mZQ\"",
"id": "1",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Film & Animation",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/UZ1oLIIz2dxIhO45ZTFR3a3NyTA\"",
"id": "2",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Autos & Vehicles",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/nqRIq97-xe5XRZTxbknKFVe5Lmg\"",
"id": "10",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Music",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/HwXKamM1Q20q9BN-oBJavSGkfDI\"",
"id": "15",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Pets & Animals",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/9GQMSRjrZdHeb1OEM1XVQ9zbGec\"",
"id": "17",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Sports",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/FJwVpGCVZ1yiJrqZbpqe68Sy_OE\"",
"id": "18",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Short Movies",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/M-3iD9dwK7YJCafRf_DkLN8CouA\"",
"id": "19",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Travel & Events",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/WmA0qYEfjWsAoyJFSw2zinhn2wM\"",
"id": "20",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Gaming",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/EapFaGYG7K0StIXVf8aba249tdM\"",
"id": "21",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Videoblogging",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/xId8RX7vRN8rqkbYZbNIytUQDRo\"",
"id": "22",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "People & Blogs",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/G9LHzQmx44rX2S5yaga_Aqtwz8M\"",
"id": "23",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Comedy",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/UVB9oxX2Bvqa_w_y3vXSLVK5E_s\"",
"id": "24",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Entertainment",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/QiLK0ZIrFoORdk_g2l_XR_ECjDc\"",
"id": "25",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "News & Politics",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/r6Ck6Z0_L0rG37VJQR200SGNA_w\"",
"id": "26",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Howto & Style",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/EoYkczo9I3RCf96RveKTOgOPkUM\"",
"id": "27",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Education",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/w5HjcTD82G_XA3xBctS30zS-JpQ\"",
"id": "28",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Science & Technology",
"assignable": true
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/lL7uWDr_071CHxifjYG1tJrp4Uo\"",
"id": "30",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Movies",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/WnuVfjO-PyFLO7NTRQIbrGE62nk\"",
"id": "31",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Anime/Animation",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/ctpH2hGA_UZ3volJT_FTlOg9M00\"",
"id": "32",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Action/Adventure",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/L0kR3-g1BAo5UD1PLVbQ7LkkDtQ\"",
"id": "33",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Classics",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/pUZOAC_s9sfiwar639qr_wAB-aI\"",
"id": "34",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Comedy",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/Xb5JLhtyNRN3AQq021Ds-OV50Jk\"",
"id": "35",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Documentary",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/u8WXzF4HIhtEi805__sqjuA4lEk\"",
"id": "36",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Drama",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/D04PP4Gr7wc4IV_O9G66Z4A8KWQ\"",
"id": "37",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Family",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/i5-_AceGXQCEEMWU0V8CcQm_vLQ\"",
"id": "38",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Foreign",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/rtlxd0zOixA9QHdIZB26-St5qgQ\"",
"id": "39",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Horror",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/N1TrDFLRppxZgBowCJfJCvh0Dpg\"",
"id": "40",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Sci-Fi/Fantasy",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/7UMGi6zRySqXopr_rv4sZq6Za2E\"",
"id": "41",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Thriller",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/RScXhi324h8usyIetreAVb-uKeM\"",
"id": "42",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Shorts",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/0n9MJVCDLpA8q7aiGVrFsuFsd0A\"",
"id": "43",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Shows",
"assignable": false
}
},
{
"kind": "youtube#videoCategory",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/x5NxSf5fz8hn4loSN4rvhwzD_pY\"",
"id": "44",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Trailers",
"assignable": false
}
}
]
}
Cordova Plugin作成 ( plugin.xml記載ミスでassets全部消えた。。)
<resource-file src=”res/assets/cordova-plugin-4assets.js” target=”assets” />
target-dirとtargetを記載ミスしてました。
正しくは、
<resource-file src=”res/assets/cordova-plugin-4assets.js” target=”assets/cordova-plugin-4assets.js” />
<resource-file src=”res/assets/cordova-plugin-4assets.js” target-dir=”assets/” />
プラグイン削除時にtargetも消されるので、assetsごと消されました。
(TensorFlow + keras ) Epoch 50/50 終わったと思ったら。。ImportError: `save_model` requires h5py.
2000/2000 [==============================] - 396s - loss: 1.1921e-07 - acc: 1.0000 - val_loss: 1.1921e-07 - val_acc: 1.0000
Traceback (most recent call last):File "image_classify.py", line 24, in <module>
model.save("image_classifier.h5")
File "/usr/local/lib/python2.7/site-packages/keras/engine/topology.py", line 2553, in save
save_model(self, filepath, overwrite, include_optimizer)
File "/usr/local/lib/python2.7/site-packages/keras/models.py", line 56, in save_model
raise ImportError('`save_model` requires h5py.')
ImportError: `save_model` requires h5py.
mbp:sd201708_sp1_ch02_sample_rev1 dp$
pip install h5py
cordova-splashはcordovaのスプラッシュを一括で作成するnpmパッケージ
cordovaのスプラッシュを一括で作成するnpmパッケージ
https://www.npmjs.com/package/
[code language=”bash”]
sudo npm install cordova-splash -g
[/code]
[code language=”bash”]
cordova-splash –config=config.xml –splash=images/002.splash-screen.png
Checking Project & Splash
✓ platforms found: android
✓ images/002.splash-screen.png exists
✓ config.xml exists
Generating splash screen for android
resize arg
arg 320×200
resize arg
arg 480×320
resize arg
arg 800×480
resize arg
arg 1280×720
resize arg
arg 1920×1280
resize arg
arg 1600×960
resize arg
arg 320×480
resize arg
arg 200×320
resize arg
arg 480×800
resize arg
arg 720×1280
resize arg
arg 960×1600
resize arg
arg 1280×1920
✓ drawable-land-ldpi/screen.png created
✓ drawable-land-mdpi/screen.png created
✓ drawable-port-ldpi/screen.png created
✓ drawable-port-mdpi/screen.png created
✓ drawable-port-hdpi/screen.png created
✓ drawable-land-hdpi/screen.png created
✓ drawable-port-xhdpi/screen.png created
✓ drawable-land-xhdpi/screen.png created
✓ drawable-port-xxhdpi/screen.png created
✓ drawable-port-xxxhdpi/screen.png created
✓ drawable-land-xxhdpi/screen.png created
✓ drawable-land-xxxhdpi/screen.png created
[/code]
‘cordova-plugin-livereload’ has been deprecated!!!
cordovaのplatform addはdeprecatedで停止しても、runできてしまった。
deprecatedだけ除外したのかとおもったら
cordovaのアプリがネットワークに繋がらなかったり、プラグインが動かなくなったので
AndroidManifest.xmlをみるとuses-permissionもactivityも全然足りていない。。
deprecatedの対象cordova-plugin-livereloadを除外して、platform rm addを再度行ってみたら治った。
Installing “cordova-plugin-headercolor” for android
Installing “cordova-plugin-inappbrowser” for android
Installing “cordova-plugin-livereload” for android
##################################################################
‘cordova-plugin-livereload’ has been deprecated!!!
Please use ‘taco run –livereload’ instead.
For more information please visit http://taco.tools/docs/run.html.
##################################################################
Failed to install ‘cordova-plugin-livereload’: Error: Deprecated Plugin ‘cordova-plugin-livereload’
Error: Deprecated Plugin ‘cordova-plugin-livereload’
CordovaアプリのGooglePlay向けリリース準備
cordova-splash –config=config.xml –splash=splash-screen.png
cordova-icon –icon=ic_launcher-web.png
cordova build android —release
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore {KeyStoeFilePath} platforms/android/build/outputs/apk/{ApkFileName} {KeyStoreAliasName}
zipalign -f -v 4 platforms/android/build/outputs/apk/{ApkFileName} platforms/android/build/outputs/apk/{outputApkFileName}
「Symantec Website Securityからの重要なお知らせ」のアンケート
Google社の提案は、お客様のビジネスに対して、全般的にどのような影響をもたらすとお考えになりますか?
って直球!!