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

typeすつーか

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

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

広告とか

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--/--/-- --:-- スポンサー広告 TB(-) CM(-)
元をたどれば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)
コメント















 管理者にだけ表示を許可する

トラックバック
http://stukacoding.blog.fc2.com/tb.php/76-190f33cc
検索フォーム
ブロとも申請フォーム
QRコード
QR
IPv4枯渇時計
linuxコマンド
ぶくろぐ
本棚です
icat
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。