Android でリリース用KeyStoreだけでなく、デバッグ用も外だし(共通化)してコマンドからAPKを作る

build.gradle signingConfig/ 配下を外だしするので、build.gradleではIncludeするような指定を行う apply from: 'signingConfigs/config.gradle', to: android の部分 signingConfig signingConfigs.debug の部分を追加することで、 通常のAndroid署名キー( %USERPROFILE%/.android/debug.keystore )を参照しなくなる模様 apply from: 'signingConfigs/config.gradle', to: android buildTypes { debug { debuggable true applicationIdSuffix = '.debug' versionNameSuffix = '-debug' signingConfig signingConfigs.debug } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } } signingConfig/config.gradle VCS管理外のシークレット情報として、以下 app/signingConfig/** signingConfigs/ ├── config.gradle ├── debug.jks └── release.jks debug.jks は Windowsの場合 %USERPROFILE%/.android/debug.keystore からコピーすると Windowsで使用していた署名キーを引き継げる. storePassword や keyAlias は Androidデフォルトの値 signingConfigs { debug { storeFile file('....

2022-12-22 ·  2022-12-22 · 2 分 · 310 文字

Android アプリ開発時にアンインストール=>インストールでデータが残る問題

アプリで保存したデータが再インストールで復活する事や、 WebViewで実装した画面のローカルストレージ保存したデータ等が復活する事が気になっていたの調べた. 特にWebViewでログイン画面実装して、アカウント情報などをWebViewキャッシュ保存とかしてると、 再インストールとかしたのに復活するので、開発時などは無効設定が好ましい. 単純にAndroidのバックアップ機能が有効になっていた. AndroidManifest.xml android:allowBackup: バックアップ自体を実施するかどうか <application android:allowBackup="false" ... /> android:fullBackupContent: バックアップする内容を指定 android:fullBackupContent <application android:allowBackup="true" android:fullBackupContent="@xml/backup_rules" ... /> @xml/backup_rules <?xml version="1.0" encoding="utf-8"?> <full-backup-content> <include domain="sharedpref" path="."/> <exclude domain="sharedpref" path="device.xml"/> </full-backup-content> ユーザデータの自動バックアップ設定 Android 6.0(API レベル 23)以上をターゲットとするアプリで、自動的に自動バックアップが有効 アプリデータはGoogleDriveにバックアップされる Android9以降のデバイスでは、デバイスのPIN、パスワード、パターンを使用し、エンドツーエンドで暗号化 アプリ1つあたり25Mb,最新データのみ保存 バックアップデータに関しては追加料金なし Refs 自動バックアップでユーザーデータをバックアップする | Android デベロッパー | Android Developers

2022-10-24 ·  2023-04-30 · 1 分 · 49 文字

Android で環境設定ファイルからBuildConfig環境変数を生成する

環境設定ファイル(env.propertiese)に定義したをビルドタイプで設定値を読み分ける関数を定義して、 それぞれの環境ビルド時に buildConfigField で定義 という感じ def envPropertiesFile = rootProject.file("env.properties"); def envProperties = new Properties() envProperties.load(new FileInputStream(envPropertiesFile)) ext.buildConfigFieldFromEnvProp = { env -> def keys = ["apiPrefix", "cognitoPoolId", "cognitoClientId", "cognitoClientSecret", "cognitoRegion"] for (key in keys) { defaultConfig.buildConfigField("String", key, "\"${envProperties["$env.$key"]}\"") } } buildTypes { debug { debuggable true applicationIdSuffix = '.debug' versionNameSuffix = '-debug' buildConfigFieldFromEnvProp("dev") } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release buildConfigFieldFromEnvProp("prd") } } dev.apiPrefix=https://xxxx dev.cognitoPoolId=xxx dev.cognitoClientId=xxx dev.cognitoClientSecret=xxx dev.cognitoRegion=xxx

2022-10-18 ·  2022-10-18 · 1 分 · 70 文字

Android で 位置情報取得&Bluetooth接続を定期実行するForegroundServiceを実装する

Android で 位置情報取得を定期実行する方法をしらべたので、メモっておく Foreground 実装 フォアグラウンドサービスの最低限の実装について【Kotlin, Android Studio, バックグラウンドでのアプリ実行】 - アンラッキーシステムズのやり方、方法論。 Foreground Serviceの基本 - Qiita AndroidアプリでForeground Serviceを使って、画面スリープ状態でも位置情報を定期取得する | DevelopersIO Android Service の使い方 趣味のプログラム: Android Foreground Serviceのメモ フォアグラウンド サービスの起動に関する制限 | Android 12 | Android Developers Android - Foreground Service実行 長期間Serviceを起動したい時 | 技術情報 | アプリ関連ニュース | ギガスジャパン Auto-Start Foreground Service in Android | by CodingwithSaud | The Startup | Medium Androidアプリでバックグラウンド状態で位置情報が取得できるのか調査した - 酢ろぐ! バックグラウンドで位置情報アクセスするアプリには特別な審査が必要 審査に必要なものは、Google公式のバックグラウンド位置情報にアクセスするアプリの審査を円滑に進めるためのヒントにも書かれている通り以下のものを準備する必要がある。 機密情報に関わる申請 を行う ・デモ動画が必要 アプリ内での位置情報使用の開示を行う (位置情報許諾ダイアログ) プライバシーポリシー にバックグラウンドで位置情報を取得する件について書く...

2022-10-07 ·  2023-05-13 · 2 分 · 412 文字

Android で kotlin-logging を使用してLogcatと同時にファイル出力も行う

とある案件でネイティブAndroidアプリを作成しているが、内部でエラーが発生したか、 どう動いたかなど、問い合わせがあった場合にログが無い困るケースがあった 標準のログではLogcatで流れてしまい、また端末をPCへ接続できないと、やはりデバッグとしては辛い Android でログをファイル出力する方法を模索し、slf4j 使ってファイル保存することにした。 保存したログファイルは別途S3へアップロード ここでは、slf4j でログ出力するところを記載 app/build.gradle implementation 'org.slf4j:slf4j-api:1.7.25' implementation 'com.github.tony19:logback-android:2.0.0' app/src/main/assets/logback.xml <?xml version="1.0" encoding="UTF-8"?> <configuration debug="true"> <appender name="logcat" class="ch.qos.logback.classic.android.LogcatAppender"> <tagEncoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %class{0}.%method:%L</pattern> </tagEncoder> <encoder> <pattern>[%t] %-5level %msg%n</pattern> </encoder> </appender> <property name="LOG_DIR" value="/data/data/${PACKAGE_NAME}/files/logs" /> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_DIR}/app.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_DIR}/archives/app.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <!-- each archived file, size max 10MB --> <maxFileSize>10MB</maxFileSize> <!-- total size of all archive files, if total size > 5GB, it will delete old archived file --> <totalSizeCap>5GB</totalSizeCap> <maxHistory>60</maxHistory> </rollingPolicy> <append>true</append> <encoder> <!...

2022-09-13 ·  2023-04-24 · 2 分 · 228 文字