Category Archives

55 Articles

Other

macでAndroidStudioがアップデート後に起動しない( pleiades.jar 消しちゃった)

Posted by dowell on

docからAndroidStuidoを起動しても、起動しないけど、下記を直接起動してみるとエラーが表示される。


/Applications/Android\ Studio.app/Contents/MacOS/studio


Error opening zip file or JAR manifest missing : /Users/dp/Library/Preferences/AndroidStudio3.3/jp.sourceforge.mergedoc.pleiades/pleiades.jar

更新の時に読み込んでない設定ディレクトリだと思って削除した方にPleiadesのjarが入っていたようなので、pleiadesのプラグインをもう一度インストールすれば起動した。

https://mergedoc.osdn.jp/#pleiades.html#PLUGIN


2019-10-28 08:05:21.209 studio[6644:252431] Value of STUDIO_VM_OPTIONS is (null)
2019-10-28 08:05:21.209 studio[6644:252431] Processing VMOptions file at /Applications/Android Studio.app/Contents/bin/studio.vmoptions
2019-10-28 08:05:21.210 studio[6644:252431] Done
2019-10-28 08:05:21.210 studio[6644:252431] Processing VMOptions file at /Users/dp/Library/Preferences/AndroidStudio3.5/studio.vmoptions
2019-10-28 08:05:21.210 studio[6644:252431] Done
2019-10-28 08:05:21.210 studio[6644:252431] Processing VMOptions file at
2019-10-28 08:05:21.212 studio[6644:252431] No content found
Error opening zip file or JAR manifest missing : /Users/dp/Library/Preferences/AndroidStudio3.3/jp.sourceforge.mergedoc.pleiades/pleiades.jar
Error occurred during initialization of VM
agent library failed to init: instrument
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
Deleting expired sessions...4 completed.

[プロセスが完了しました]

Other

aws chaliceでpynamodb(dynamodb)を利用する際のIAM policy

Posted by dowell on

chaliceはboto3で使っているメソッドから必要なIAMを自動的に付与(更新しないもできる)する機能を持ってるので、boto3でdynamodbを使ったりすれば、自動で付与されるけど、pynamodbを使った場合はそこまでは面倒見てくれないので、boto3でdynamoを利用せず、pynamodbのモデルしか用意してないと、こんな感じでdynamodbへのポリシーは無視される。


$ chalice gen-policy
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cognito-idp:AdminCreateUser",
"cognito-idp:AdminInitiateAuth",
"cognito-idp:AdminRespondToAuthChallenge"
],
"Resource": [
"*"
],
"Sid": "275e6aad3b0a4356ac3b9ab90fbe2422"
}
]
}

なので、手動で管理する必要があるけど、Identity and Access Management (IAM)から編集するのはchalice使う意味なくなるので、.chalice/policy.jsonを利用する。

手動で変更してもいいけど、ミスってもいやなので、適当に下記のapp.pyにboto3でdynamoを操作する記述を追加


dynamodb.get_item(TableName="nanndemoiiyo")
dynamodb.put_item(TableName="nanndemoiiyo")
table = dynamodb.create_table(

この状態でポリシーを見るとDynamodbのポリシーが入るので、jsonとして保存


$ chalice gen-policy > .chalice/policy.json
$ cat .chalice/policy.json

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cognito-idp:AdminCreateUser",
"cognito-idp:AdminInitiateAuth",
"cognito-idp:AdminRespondToAuthChallenge"
],
"Resource": [
"*"
],
"Sid": "c5c6757d1033420fa4ba529b67bd333d"
},
{
"Effect": "Allow",
"Action": [
"dynamodb:CreateTable",
"dynamodb:GetItem",
"dynamodb:PutItem"
],
"Resource": [
"*"
],
"Sid": "5a2f50fb91a34608b571409e5291041b"
}
]
}

環境によってサフィックスが必要
今回は「.chalice/policy.json」から「.chalice/policy-dev.json」に変更してデプロイ時は「–no-autogen-policy」をつければOK

Other

cloudformationでCognitoのUserPool作成でエラー

Posted by dowell on


aws cloudformation deploy --template-file userPool.yml --stack-name CognitoUserPool-test --capabilities CAPABILITY_IAM --profile dev-southeast

Waiting for changeset to be created..
Waiting for stack create/update to complete

Failed to create/update the stack. Run the following command
to fetch the list of events leading up to the failure
aws cloudformation describe-stack-events --stack-name CognitoUserPool-test


{
"StackId": "arn:aws:cloudformation:ap-southeast-2:00000894962:stack/CognitoUserPool-test/f6e05000-0000-11e9-ba1c-0664273e8e22",
"EventId": "CognitoUserPool-CREATE_FAILED-2019-08-15T07:26:25.833Z",
"StackName": "CognitoUserPool-test",
"LogicalResourceId": "CognitoUserPool",
"PhysicalResourceId": "",
"ResourceType": "AWS::Cognito::UserPool",
"Timestamp": "2019-08-15T07:26:25.833Z",
"ResourceStatus": "CREATE_FAILED",
"ResourceStatusReason": "Property validation failure: [Encountered unsupported properties in {/Schema/0}: [Required\"]]",
"ResourceProperties":


Schema:
- Name: "name"
AttributeDataType: String
Mutable: true
Required": true

誤字。。

Other

AWS – Cognitoでemailを変更した場合、認証してなくても古いメアドはログインできない

Posted by dowell on

タイトル通りで

Cogitoでまずユーザを登録する。


var attributeList = [];
attributeList.push(new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute({
Name: 'name',
Value: $('#name').val()
}));
attributeList.push(new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute({
Name: 'email',
Value: $('#email').val()
}));
userPool.signUp($('#email').val(), $('#password').val(), attributeList, null, function(err, result) {
if (err) {
console.log(err);
return;
}
cognitoUser = result.user;
console.log('Username:' + cognitoUser.getUsername());
});

登録後、認証コードが送られてくるので

Other

GoogleのGoogleDrive乗っ取られた?エロ画像を置かれた

Posted by dowell on

GoogleDriveは使ってないんですが
たまたまGmailのメールから添付Drive経由で開いて、削除しようと一覧を開いたらエロ画像が置かれていて、x****@gmail.comと共有になっていて、半年以上前からになっていて、Googleに削除されなかったのが救い。。

何かアプリをインストールした時なのか、わからないけどドライブへの許可をしてたみたいで、API経由でアップロードなのかシェアされていたみたい。

使わないつもりのサービスでもたまにチェックしないと、不意にアカウント停止の対象になるかもしれない。

Other

Android 9 (Pie)でandroid.view.InflateException: Binary XML file lineが発生、Android8などでは動作するがPieでInflateExceptionエラー

Posted by dowell on

リリースしたアプリがAndroid9でクラッシュしてしまうらしい。
手元にAndroid9(Pie)がないのでエミュレーターで確認すると、確かにMainActivityが起動できていない。
ログを見ると、android.view.InflateExceptionが発生していた。
Android8とかでは何機種試したけど、普通に動作するんだけどな。。


Process: com.doroidpanic.test, PID: 28843
    android.view.InflateException: Binary XML file line #28: Binary XML file line #28: Error inflating class TextView
    Caused by: android.view.InflateException: Binary XML file line #28: Error inflating class TextView
    Caused by: java.lang.NumberFormatException: For input string: "bold"

「java.lang.NumberFormatException: For input string: “bold”」???
ログに出てるXMLを追ってくと、確かにTextViewに行き着いて
そのTextViewにはtextFontWeightが指定してある。


android:textFontWeight="bold"

AndroidStudioが「Attribute textFontWeight is only used in API level 28 and higher r (current min is 21)」と言ってるけど、非推奨とかじゃないしな。。

この書き方も同じエラーで落ちる。


android:textStyle="bold"

Other

Android Oでフォアグラウンドサービスがjava.lang.RuntimeException [Caused by: java.lang.SecurityExceptio at android.app.Service.startForeground]

Posted by dowell on

Playコンソールでエラーを見つけた・・


java.lang.RuntimeException: 
  at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3698)
  at android.app.ActivityThread.access$1600 (ActivityThread.java:200)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1691)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:193)
  at android.app.ActivityThread.main (ActivityThread.java:6762)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)
Caused by: java.lang.SecurityException: 
  at android.os.Parcel.createException (Parcel.java:1950)
  at android.os.Parcel.readException (Parcel.java:1918)
  at android.os.Parcel.readException (Parcel.java:1868)
  at android.app.IActivityManager$Stub$Proxy.setServiceForeground (IActivityManager.java:5198)
  at android.app.Service.startForeground (Service.java:695)
  at com.doroidpanic.apps.service.xxyba.a (Xxyba.java:150)
  at com.doroidpanic.apps.service.xxyba.onStartCommand (Xxyba.java:102)
  at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3679)
Caused by: android.os.RemoteException: 
  at com.android.server.am.ActivityManagerService.enforcePermission (ActivityManagerService.java:9331)
  at com.android.server.am.ActiveServices.setServiceForegroundInnerLocked (ActiveServices.java:1193)
  at com.android.server.am.ActiveServices.setServiceForegroundLocked (ActiveServices.java:874)
  at com.android.server.am.ActivityManagerService.setServiceForeground (ActivityManagerService.java:20597)
  at android.app.IActivityManager$Stub.onTransact (IActivityManager.java:976)

ここにあった。
https://developer.android.com/about/versions/pie/android-9.0-changes-28#fg-svc

パーミッションが足りてないのか


< uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

動作の変更点: API レベル 28+ をターゲットとするアプリ
Android 9(API レベル 28)では、Android システムにさまざまな変更が加えられています。 以下の動作の変更点は、API レベル 28 以降をターゲットとするアプリのみに適用されます。 targetSdkVersion を API レベル 28 以降に設定するアプリは、必要に応じてアプリを修正してこれらの動作を適切にサポートする必要があります。
Android 9 で実行されるすべてのアプリに影響を与える変更点については、ターゲットとする API レベルに関係なく、動作の変更点: すべてのアプリをご覧ください。
フォアグラウンド サービス
Android 9 以降をターゲットにするアプリは、フォアグラウンド サービスを使用する際に FOREGROUND_SERVICE パーミッションをリクエストする必要があります。 これは Normal パーミッションなので、リクエストしたアプリに自動で付与されます。

Android 9 以降をターゲットにするアプリが FOREGROUND_SERVICE をリクエストせずに、フォアグラウンド サービスの作成を試みると、システムにより、SecurityException がスローされます。

Other

残高はあるのにtruffle deployで「Error encountered, bailing」- HDWalletProvider

Posted by dowell on

Using network 'rinkeby'.

Running migration: 1_initial_migrations.js
  Deploying Migrations...
Error encountered, bailing. Network state unknown. Review successful transactions manually.
insufficient funds for gas * price + value

今回で言えばrinkebyの残高があるアドレスはMetamaskの5番目に生成したアドレスで
HDWalletProviderがそのアドレスを見ていなかったのが原因
HDWalletProviderに指定したいアドレスのindexを引き渡してあげる。


return new HDWalletProvider(
          MNEMONIC,
          "https://rinkeby.infura.io/" + INFURA_KEY
        , index );
Other

opensea向けのDappsを作ろうと思ったらnpm installでエラー – gyp ERR! not ok

Posted by dowell on

npm installで「gyp ERR! not ok」となってしまう。


gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack     at ChildProcess.emit (events.js:182:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12)
gyp ERR! System Darwin 18.2.0
gyp ERR! command "/usr/local/Cellar/node/10.11.0/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/dp/src/Ethereum/opensea-creatures/node_modules/sha3
gyp ERR! node -v v10.11.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok

package.jsonをみたらNodeのバージョンが高すぎるみたい。。


"engines": {
    "node": "8.11.x",
    "npm": "5.6.x"
  }

nodebrewを使ってるので、切り替えてOK


nodebrew install-binary v8.11.0
nodebrew use v8.11.0