お絵描きやプログラミングやアーマードコアについて綴っていくつもりです。プログラミングは備忘録的に使うつもりだったりする。
プロフィール

typeすつーか

Author:typeすつーか
FC2ブログへようこそ!

最新トラックバック
カウンターです
ついったー

広告とか

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--/--/-- --:-- スポンサー広告 TB(-) CM(-)
今日も元気にOOMしてます!
直りません!


今日は良さげな回避策を見つけたのでそれをやってみる。
[Android]OutOfMemoryError(メモリリーク)対策


Eclipseのプラグインを2つインストールした
http://download.eclipse.org/birt/update-site/2.5
http://download.eclipse.org/mat/1.2/update-site/
スポンサーサイト
2013/04/16 17:42 Android TB(0) CM(0)
このあたりのコードでエラーが出た時の、具体的な原因(たぶん)がぼんやり見えてきたのでメモ。

java.security.InvalidKeyException: Key length not 128/192/256 bits.


このエラーはどうやら秘密鍵の桁数が合っていない場合にも出るようです。



javax.crypto.BadPaddingException: pad block corrupted


こちらのエラーは秘密鍵の桁数が合っていて、値があっていない場合に出ました。


今回は以上です。

(※この場合の秘密鍵の意味は通常の秘密鍵の意味と異なるそうです。)
参考サイト
2013/03/31 15:29 Android TB(0) CM(0)
Apache Ant - Binary Distributionsからapache-ant-1.9.0-bin.zipをダウンロードして、展開したフォルダを適当なフォルダにおく。
んでパスを通す。

vim .zprofileにて(記述するのはこのファイルの最後でいいんだっけか。後日調べます)

export ANT_HOME="/Applications/sdk/platform-tools/apache-ant-1.9.0"
export PATH="$PATH:$ANT_HOME/bin"



%source .zprofile

-[4352] ( ◠‿◠ )☛ % ant -version
Apache Ant(TM) version 1.9.0 compiled on March 5 2013



よし。これでおk。
バージョン上げたのはいいけど特に使わない・・・w
2013/03/31 13:48 Android TB(0) CM(0)
元をたどればapktoolにて.smaliから.apkにコンパイルして、そこから端末にインストール出来ない症状が出て困ったのが発端。

adb-multitoolなら一発なのになー????

だいたいはここに書いてあるけど、署名のところがうまく出来なかった。全部署名してくれなかったらしい。

apktool -d hoge.apk smali
vim hoge.smali
apktool -b smali hoge.apk
keytool -genkey -keystore test.keystore -validity 10000 -alias test//keystoreの作成
jarsigner -keystore test.keystore -verbose hoge.apk test//←このコマンドで署名出来るはずだった...。
adb install -r hoge.apk

-[4181] ( ◠‿◠ )☛ % adb install -r hoge.apk
1257 KB/s (131000 bytes in 0.101s)
pkg: /data/local/tmp/hoge.apk
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]


と、エラー文。

ググってみると、なにやらjava7は署名ができないらしい。(というのは不正確。・・・後から分かったんだけどこの判断がいけなかった。)

-[4349] ( ◠‿◠ )☛ % java -version
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)



「java6だと成功するよ〜!」とかネットで見かけまくったので、必死でjava7からjava6に変更しようとしてました。
3時間くらい・・・? いい忘れていたけれど環境はOSXの10.8あたり。数年前まではrvmみたいにバージョンを切り替えれたみたいだったけど、今はもう無理だった。簡単な方法なら、あの手この手の策を弄したけどダメで、じゃぁ他になにか別の角度から対処できないかな、と。

「実はjava7でも署名できるようになってたりして・・・?」
そんな疑問が頭をよぎった。瞬間ぐぐってた。


・・・あった
さらに詳しいのがあった。
でも、これはantでビルド、すなわち
$ant release
とかでやる方法だったので、apktool d でやってたのとはちょっと違うなと。
antも試したけどダメで、(今思えば多分別のアルゴリズムを指定しておけばいけたかもしれない)最終的には
jarsignerコマンドのオプション指定だったらいけるっしょ、ってアタリをつけて

jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore test.keystore -verbose SignedHoge.apk test


でやったけどダメ。

困ったらやっぱドキュメントなのかなと、
jarsigner - JAR Signing and Verification Tool(JavaSE7)
jarsigner - JAR Signing and Verification Tool(JavaSE6)

Supported Algorithms
By default, jarsigner signs a JAR file using either

DSA (Digital Signature Algorithm) with the SHA-1 digest algorithm, or
the RSA algorithm with the MD5 digest algorithm.
That is, if the signer's public and private keys are DSA keys, jarsigner will sign the JAR file using the "SHA1withDSA" algorithm. If the signer's keys are RSA keys, jarsigner will attempt to sign the JAR file using the "MD5withRSA" algorithm.

These default signature algorithms can be overridden using the -sigalg option.





DSAって単語が出てきたから

jarsigner -sigalg SHA1withDSA -digestalg SHA1 -keystore test.keystore -verbose SignedHoge.apk test


でやっといけた。

-[4325] ( ◠‿◠ )☛ % adb install -r SignedHoge.apk
1295 KB/s (130817 bytes in 0.098s)
pkg: /data/local/tmp/SignedHoge.apk
Success




(おまけ)
%adb pull /mnt/sdcard/hoge.txt .
で持ってこれる。
2013/03/31 13:35 Android TB(0) CM(0)
Androidアプリでgoogle map apiを使おうとしたけど、
import com.google.*;系が軒並みエラー吐いてた。
おかしいなと思いつつもAndroid SDK ManagerでGoogleAPIを全部ダウンロード。

それでもダメだった。エラーのまま。存在しません。


ググったら問題解決したのでメモ。

解決策>Eclipse において Google API を参照するように変更する.
Project > Properties > Android > Google APIsにチェック




これでたぶんおk

2013/03/11 04:35 Android TB(0) CM(0)
検索フォーム
ブロとも申請フォーム
QRコード
QR
IPv4枯渇時計
linuxコマンド
ぶくろぐ
本棚です
icat
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。