AdMobは

クリック単価低いなー。平均すると1クリック2~3円ぐらいか?へたすりゃAdSenseの1/50とかになってしまう。

CTRはAdSenceよりちょっとだけいいから、UUとPV上げまくって稼ぐしかないか。
それ難しいな。

Android Ver2.2系で「パッケージファイルに正しく署名されていません」の対応

Android Ver2.2系で「パッケージファイルに正しく署名されていません」エラー発生

Androidの「SDK Tools」か「Build-tools」のVerの影響で、作成したapkをVer2.2系にインストールしようとすると「パッケージファイルに正しく署名されていません」というエラーが発生。
どうも署名 or Zipのライブラリが変わったのが原因の模様。と、いうことで手動で署名&Zipすればいけたのでそのメモ。


手順

1. eclipseで未署名のapkを作成

通常通りに。

2. 署名

> jarsigner -verbose -keystore keystore-file -storepass pass -keypass pass target.apk alias
これも通常通りに。

3. Zip

> android-sdks\tools\zipalign.exe -f -v4 target.apk output.apk
これが原因かも。

ということで、無事Google Playにアップ、Ver2.2系でinstallできてOK,OK。

Androidの秒なしDigitalClock widget

Verによって秒ありと秒なしのウィジェットがあるようで。

SDKのAPIバージョンにが2.2までは秒ありで、2.3以上は秒なしとなっている模様。
これからアプリを開発する場合は、もう2.2系をサポートすることはないか思いますが2.2系で秒なしのウィジェットを使いたい場合は、2.3のソースをそのまま持ってくれば動く模様。

2.2系 秒あり DigitalClock.java

2.3系 秒なし DigitalClock.java

違いは、フォーマット指定の「h:mm:ss」か「h:mm」。
    private final static String m12 = "h:mm:ss aa";
    private final static String m24 = "k:mm:ss";

    private final static String m12 = "h:mm aa";
    private final static String m24 = "k:mm";

作り的には、2.2系の方が簡単なので、2.2のソースのフォーマットを変えて別クラス名にして使用中。
後は、1秒ごとに更新させるか60秒ごとに更新させるかの違いぐらい。

AndroidデバイスをSDKのADB Interfaceとして認識させる方法

Android SDKに添付されているGoogle usb_driverを使ってUSBデバッグ接続する方法のメモ。

AndroidスマホでUSBデバッグをするときに、すぐドライバが見つかればいいのですがなかなか見つからなかったり、そもそもなかったりする場合もあります。そんな時はSDKに付属のusb_driverをドライバとして利用すると接続可能になります。

1. ハードウェアIDの確認

とりあえずデバイスを接続して、ハードウェアIDを調べる。デバイスマネージャーを開くとエラーになっているはずなので、それを右クリックでしてプロパティの詳細を開く。
android_device_setting-01-1.png

プロパティからハードウェアIDを選択して値を調べ、コピっておく。2行とも。
android_device_setting-02.png


2. android_winusb.infの編集

Android SDKをインストールすると、ドライバ用のシステム定義ファイル(android_winusb.inf)がインストールされるので、1で調べたIDを追記する。
android_winusb.infはSDKをインストールした下記フォルダにある。

android-sdks\extras\google\usb_driver

ハードウェアIDは2つあるが、1行目をSingleAdbInterfaceに、2行目をCompositeAdbInterfaceに指定する(ダメな場合は逆にしてみる)。
android_device_setting-03.png
[Google.NTx86]と[Google.NTamd64]の両方に書いているが、実際には開発する環境によって1つのみでOK。
例えば全て64bitの環境であれば、[Google.NTamd64]だけでいい。


3. ドライバのインストール

デバイスのプロパティから、ドライバの更新を選択。
android_device_setting-04.png

手動でドライバーのインストールを選択。
android_device_setting-05.png

2で修正したusb_driverのフォルダを指定。
android_device_setting-06.png

警告がでるがかまわずインストール。
android_device_setting-07.png
android_device_setting-08.png


4. 利用できるか確認

デバイスマネージャには、Android ADB Interfaceとして表示される。
android_device_setting-10.png

adbコマンド(adb devices)で参照できることを確認。
android_device_setting-11.png

当然、eclipseでも実行時に追加したデバイス表示される。
android_device_setting-12.png


これで無事このデバイスでのテストも可能。パチパチ。


Androidのデバッグ用apkの署名方法と確認方法

Androidでデバッグ用にbuildしたapkに署名をつけるのが何気に面倒だったので忘れないようにメモ。

1. keystore

デバッグ用keystoreは、android sdkを入れると

$HOME\.android\debug.keystore

に、defaultのものが作成される。公式ドキュメントは:Signing in Debug Mode
このkeystoreのパラメータは下記の通り。
keyvalue
Keystore namedebug.keystore
Keystore passwordandroid
Key aliasandroiddebugkey
Key passwordandroid
CNCN=Android Debug,O=Android,C=US

当然ながら、このkeystoreで署名したものはGoogle Play上にリリースできない(ハズ)。


2. apkの作成

eclipse上での作業。「Package Explorer」を右クリックして、
「Android Tools」-「Export Unsigned Application Package...」
を指定。もしかしたら、Signed Package作成で、上記keystoreを指定すれば、BuildConfig.DEBUG =true で作成されるのかもしれない。

Signed Packageでも、自動ビルドを外した状態で一旦綺麗にcleanしないとデバッグモードのapkができたことがあったので、eclipse上でclean&build後apk作成でいけるかも。


3. 署名

署名するには、jarsignerコマンドを実行。
jarsignerは、Javaと共にinstallされる(Androidのsdkではない)。場所は下記のようなjdk配下のbinの中。
C:\Program Files\Java\jdk1.6.0_38\bin\jarsigner.exe

実行例:
C:\Users\user01\Documents\android-test>jarsigner -verbose -keystore ..\.android\debug.keystore -storepass android -keypass android test.apk androiddebugkey

   追加中: META-INF/MANIFEST.MF
   追加中: META-INF/ANDROIDD.SF
   追加中: META-INF/ANDROIDD.RSA
  署名中: res/layout/main.xml
  署名中: AndroidManifest.xml
  署名中: resources.arsc
  署名中: res/drawable-hdpi/ic_launcher.png
  署名中: res/drawable-ldpi/ic_launcher.png
  署名中: res/drawable-mdpi/ic_launcher.png
  署名中: res/drawable-xhdpi/ic_launcher.png
  署名中: classes.dex
keystoreとapkの場所さえ間違わなければ、defaultのものを使う限りパラメータはいつも一緒なのでコピペでいける。
問題なければ、指定したapkに署名がされる。

4. 署名の確認

署名の確認も、同じく、jarsignerコマンドにて可能。

実行例:
C:\Users\user01\Documents\android-test>jarsigner -verify -verbose -certs test.apk

         691 Mon Feb 11 23:48:44 JST 2013 META-INF/MANIFEST.MF
         812 Mon Feb 11 23:48:44 JST 2013 META-INF/ANDROIDD.SF
         776 Mon Feb 11 23:48:44 JST 2013 META-INF/ANDROIDD.RSA
sm      1556 Mon Feb 11 23:39:34 JST 2013 res/layout/main.xml

      X.509, CN=Android Debug, O=Android, C=US
      [証明書は 12/12/30 0:56 から 42/12/23 0:56 まで有効です]

sm      1684 Mon Feb 11 23:39:34 JST 2013 AndroidManifest.xml

      X.509, CN=Android Debug, O=Android, C=US
      [証明書は 12/12/30 0:56 から 42/12/23 0:56 まで有効です]

  ・・・

  s = 署名が検証されました。
  m = エントリがマニフェスト内にリストされます。
  k = 1 つ以上の証明書がキーストアで検出されました。
  i = 1 つ以上の証明書がアイデンティティスコープで検出されました。

jar が検証されました。
例の通り、どの署名がされてるかは、CNを見るとわかる。


カテゴリ

Amazon

アクセスランキング

[ジャンルランキング]
コンピュータ
249位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
38位
アクセスランキングを見る>>

RSSリンクの表示

ブロとも申請フォーム

Copyright © nopgm