有料アプリにはライセンス認証機能をつける場合が多いと思います。
しかしながら、起動の度にネットワークを必要とするのは可用性に問題があります。
そこでライセンス認証成功後、端末固有情報などを記録し、次回からは記録が有ればライセンス認証を行わないようするなど、工夫が必要です。
端末固有情報はハードウエアの関連からチョイスするのが手ごろです。
2012年7月25日水曜日
APK Expansion Files 追加リソースファイル
今年の4月くらいから「APK Expansion Files」機能がグーグルプレイで使用可能になりました。
この機能を使うとアプリのサイズ上限を4Gバイトまで拡張できます。
しかし、この機能はANDROID2.3.3以降でないとインストール時に追加ファイルをダウンロードしてくれませんでした。
なので追加ファイルをダウンロードするプログラムを実装しないといけません。
面倒ですがライセンス認証機能も含まれるのでセキュリティー向上につながります。
アップロードできるファイルは2個までで、ダウンロードされるファイルの名前は*.OBBになります。
アップロードしたファイル名が自動的にリネームされまが、圧縮処理などはされていません。
展開には通常のZIP解凍処理でも可能ですが、サンプルを手本にした方が効率的です。
この機能を使うとアプリのサイズ上限を4Gバイトまで拡張できます。
しかし、この機能はANDROID2.3.3以降でないとインストール時に追加ファイルをダウンロードしてくれませんでした。
なので追加ファイルをダウンロードするプログラムを実装しないといけません。
面倒ですがライセンス認証機能も含まれるのでセキュリティー向上につながります。
アップロードできるファイルは2個までで、ダウンロードされるファイルの名前は*.OBBになります。
アップロードしたファイル名が自動的にリネームされまが、圧縮処理などはされていません。
展開には通常のZIP解凍処理でも可能ですが、サンプルを手本にした方が効率的です。
2012年7月24日火曜日
invalid proguard configuration file path コンパイルエラー
新しいアプリを公開しようと思い、コンパイルをしてみたとこと「invalid proguard configuration file path」とエラーメッセージが表示されてコンパイルできませんでした。
メッセージの内容を見ればパスの参照先が存在しないのがわかると思います。
どうやらプロジェクト作成時に「proguard.cfg」が作成されていなかったようです。
これも開発環境を弄ったの原因ですね。。
プロジェクト直下にファイルを追加すればエラーは解消されます。
ファイル名[proguard.cfg]
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
それでもエラーがある場合は不要なライブラリが入っていないかを確認してみてください
メッセージの内容を見ればパスの参照先が存在しないのがわかると思います。
どうやらプロジェクト作成時に「proguard.cfg」が作成されていなかったようです。
これも開発環境を弄ったの原因ですね。。
プロジェクト直下にファイルを追加すればエラーは解消されます。
ファイル名[proguard.cfg]
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
それでもエラーがある場合は不要なライブラリが入っていないかを確認してみてください
2012年7月20日金曜日
ルネッサンス 絵画集
無料アプリ「ルネッサンス絵画集」を公開しました。
盛期ルネサンス三大巨匠の絵画作品を、オフラインで観賞する事ができます。
指定した画家の作品を、スライドショーで表示する事ができます。
お気に入りの絵画を壁紙に設定可能です。
..収録画家
レオナルド ダビンチ
ミケランジェロ
ラファエロ
..主な機能
拡大縮小 ダブルタップ
画像の切り替え スワイプ
スライドショー
画家名の検索とフィルタリング
作品一覧表示
壁紙設定
現在画像数は216枚です。
グーグルプレイの追加ファイルダウンロード機能が安定し次第、画像数を4816毎にする予定です。
そのための検索機能を充実させてあります。
※作品数が多いので作品タイトルは表示しないかもしれません
盛期ルネサンス三大巨匠の絵画作品を、オフラインで観賞する事ができます。
指定した画家の作品を、スライドショーで表示する事ができます。
お気に入りの絵画を壁紙に設定可能です。
..収録画家
レオナルド ダビンチ
ミケランジェロ
ラファエロ
..主な機能
拡大縮小 ダブルタップ
画像の切り替え スワイプ
スライドショー
画家名の検索とフィルタリング
作品一覧表示
壁紙設定
現在画像数は216枚です。
グーグルプレイの追加ファイルダウンロード機能が安定し次第、画像数を4816毎にする予定です。
そのための検索機能を充実させてあります。
※作品数が多いので作品タイトルは表示しないかもしれません
No Launcher activity found! 新規プロジェクト
ANDROID SDKをサンプル(market_apk_expansion)を入れるついでに アップデートしたらまたエラーが……あれほど開発環境を更新してはいけないと肝に銘じておいたのですが、好奇心に負けました。
新規プロジェクトを作成し、実行してみたところ。
「No Launcher activity found!
The launch will only sync the application package on the device!
成功
....Test.apk installed on device
終了」
調べてみたところマニュフェストファイルのインテントフィルタータグが自動作成されなくなっていました。
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="nanikore" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
メイトデータタグの下にインテントフィルターと実行タグを追記したところ実行できるようになりました。
新規プロジェクトを作成し、実行してみたところ。
「No Launcher activity found!
The launch will only sync the application package on the device!
成功
....Test.apk installed on device
終了」
調べてみたところマニュフェストファイルのインテントフィルタータグが自動作成されなくなっていました。
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="nanikore" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
メイトデータタグの下にインテントフィルターと実行タグを追記したところ実行できるようになりました。
2012年7月18日水曜日
Can't open keycharmap file 壁紙設定
インテントから壁紙を設定しようとしたところ
「Can't open keycharmap file」
「Error loading keycharmap file '/system/usr/keychars/atmel-touchscreen.kcm.bin'. hw.keyboards.65538.devname='atmel-touchscreen'」
以上のエラーが表示されて壁紙が設定できませんでした。
インテント先でのエラーなので問題が見えづらく、こちらで処理する事も出来ませんが。
ただ単に、画像がリサイズで壁紙の最小サイズよりなていただけでした。
「Can't open keycharmap file」
「Error loading keycharmap file '/system/usr/keychars/atmel-touchscreen.kcm.bin'. hw.keyboards.65538.devname='atmel-touchscreen'」
以上のエラーが表示されて壁紙が設定できませんでした。
インテント先でのエラーなので問題が見えづらく、こちらで処理する事も出来ませんが。
ただ単に、画像がリサイズで壁紙の最小サイズよりなていただけでした。
2012年7月17日火曜日
org.eclipse.wst.xml.ui.internal.contentassist.XMLStructuredContentAssistProcessor.setAutoActivationDelay(I)V
エクリプスのプラグインを幾つか導入してみたところ。
「org.eclipse.wst.xml.ui.internal.contentassist.XMLStructuredContentAssistProcessor.setAutoActivationDelay(I)V」
XMLファイルが開けなくなりました。
カラーテーマのプラグインが影響しているのかと思いアンインストール→クリーン
しかし、問題は解消されず。
他のプラグインも全て削除しても同じでした。
仕方が無いのでANDROID周りのプラグインを更新したら問題が解消されました。
通常のJAVA開発以外でプラグインを使用しないほうがいいかもしれません。
「org.eclipse.wst.xml.ui.internal.contentassist.XMLStructuredContentAssistProcessor.setAutoActivationDelay(I)V」
XMLファイルが開けなくなりました。
カラーテーマのプラグインが影響しているのかと思いアンインストール→クリーン
しかし、問題は解消されず。
他のプラグインも全て削除しても同じでした。
仕方が無いのでANDROID周りのプラグインを更新したら問題が解消されました。
通常のJAVA開発以外でプラグインを使用しないほうがいいかもしれません。
登録:
投稿 (Atom)
