Closed Kotaro666-dev closed 1 year ago
Error: The apk for your currently selected variant (Unknown output) is not signed. Please specify a signing configuration for this variant (release).
キーストアを作成して、releaseバリアントの署名設定をする
$ keytool -v -list -keystore jp.co.yumemi.android.codecheck.jks
Enter keystore password:
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: app_key
Creation date: Dec 30, 2022
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Kotaro666-dev
Issuer: CN=Kotaro666-dev
Serial number: 102d6a1f
Valid from: Fri Dec 30 19:49:06 JST 2022 until: Tue Dec 24 19:49:06 JST 2047
Certificate fingerprints:
SHA1: E8:20:43:46:B3:A9:D0:B5:FA:EC:3E:7A:DA:90:F0:1B:DE:B5:73:5B
SHA256: C9:13:A7:18:9F:57:1E:30:A3:8E:B9:BA:29:8C:0B:20:A5:60:A5:82:7F:5D:29:13:20:D8:53:EE:CD:04:8F:20
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
Extensions:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 73 1A C6 A8 23 14 75 9C FB 42 90 20 5D 63 5E D6 s...#.u..B. ]c^.
0010: 97 8E E5 AB ....
]
]
*******************************************
*******************************************
$ adb shell am start -n "jp.co.yumemi.android.codecheck.release/jp.co.yumemi.android.code_check.TopActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 21335 on device 'google-pixel_3-8CSX1SS92'.
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
W/decheck.releas: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: jp.co.yumemi.android.codecheck.release, PID: 21335
java.lang.RuntimeException: Unable to start activity ComponentInfo{jp.co.yumemi.android.codecheck.release/jp.co.yumemi.android.code_check.TopActivity}: java.lang.RuntimeException: Exception inflating jp.co.yumemi.android.codecheck.release:navigation/nav_graph line 25
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.RuntimeException: Exception inflating jp.co.yumemi.android.codecheck.release:navigation/nav_graph line 25
at androidx.navigation.r.c(:97)
at androidx.navigation.NavController.w(:557)
at androidx.navigation.NavController.v(:539)
at androidx.navigation.fragment.NavHostFragment.l0(:248)
at androidx.fragment.app.Fragment.M0(:2949)
at androidx.fragment.app.s.e(:475)
at androidx.fragment.app.s.m(:278)
at androidx.fragment.app.t.r(:112)
at androidx.fragment.app.m.G0(:1647)
at androidx.fragment.app.m.O(:3128)
at androidx.fragment.app.m.y(:3061)
at androidx.fragment.app.h.f(:240)
at androidx.fragment.app.e.onCreate(:276)
at android.app.Activity.performCreate(Activity.java:7825)
at android.app.Activity.performCreate(Activity.java:7814)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: jp.co.yumemi.android.code_check.item
at androidx.navigation.t.a(:181)
at androidx.navigation.r.e(:191)
at androidx.navigation.r.g(:155)
at androidx.navigation.r.b(:128)
at androidx.navigation.r.b(:141)
at androidx.navigation.r.c(:88)
at androidx.navigation.NavController.w(:557)
at androidx.navigation.NavController.v(:539)
at androidx.navigation.fragment.NavHostFragment.l0(:248)
at androidx.fragment.app.Fragment.M0(:2949)
at androidx.fragment.app.s.e(:475)
at androidx.fragment.app.s.m(:278)
at androidx.fragment.app.t.r(:112)
at androidx.fragment.app.m.G0(:1647)
at androidx.fragment.app.m.O(:3128)
at androidx.fragment.app.m.y(:3061)
at androidx.fragment.app.h.f(:240)
at androidx.fragment.app.e.onCreate(:276)
at android.app.Activity.performCreate(Activity.java:7825)
at android.app.Activity.performCreate(Activity.java:7814)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.ClassNotFoundException: jp.co.yumemi.android.code_check.item
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at java.lang.Class.forName(Class.java:379)
at androidx.navigation.t.a(:169)
at androidx.navigation.r.e(:191)
at androidx.navigation.r.g(:155)
at androidx.navigation.r.b(:128)
at androidx.navigation.r.b(:141)
at androidx.navigation.r.c(:88)
at androidx.navigation.NavController.w(:557)
at androidx.navigation.NavController.v(:539)
at androidx.navigation.fragment.NavHostFragment.l0(:248)
at androidx.fragment.app.Fragment.M0(:2949)
at androidx.fragment.app.s.e(:475)
at androidx.fragment.app.s.m(:278)
at androidx.fragment.app.t.r(:112)
at androidx.fragment.app.m.G0(:1647)
at androidx.fragment.app.m.O(:3128)
at androidx.fragment.app.m.y(:3061)
at androidx.fragment.app.h.f(:240)
at androidx.fragment.app.e.onCreate(:276)
at android.app.Activity.performCreate(Activity.java:7825)
at android.app.Activity.performCreate(Activity.java:7814)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.ClassNotFoundException: Didn't find class "jp.co.yumemi.android.code_check.item" on path: DexPathList[[zip file "/data/app/jp.co.yumemi.android.codecheck.release-jmN5-D-aVQFnwrBlTGNlUg==/base.apk"],nativeLibraryDirectories=[/data/app/jp.co.yumemi.android.codecheck.release-jmN5-D-aVQFnwrBlTGNlUg==/lib/arm64, /system/lib64, /product/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at java.lang.Class.forName(Class.java:379)
at androidx.navigation.t.a(:169)
at androidx.navigation.r.e(:191)
at androidx.navigation.r.g(:155)
at androidx.navigation.r.b(:128)
at androidx.navigation.r.b(:141)
at androidx.navigation.r.c(:88)
at androidx.navigation.NavController.w(:557)
at androidx.navigation.NavController.v(:539)
at androidx.navigation.fragment.NavHostFragment.l0(:248)
at androidx.fragment.app.Fragment.M0(:2949)
at androidx.fragment.app.s.e(:475)
at androidx.fragment.app.s.m(:278)
at androidx.fragment.app.t.r(:112)
at androidx.fragment.app.m.G0(:1647)
at androidx.fragment.app.m.O(:3128)
at androidx.fragment.app.m.y(:3061)
at androidx.fragment.app.h.f(:240)
at androidx.fragment.app.e.onCreate(:276)
at android.app.Activity.performCreate(Activity.java:7825)
at android.app.Activity.performCreate(Activity.java:7814)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
カスタム proguard に原因となっているクラスを保持するようにルールを記載した。
Path: app/proguard-rules.pro
# 通常ビルド時に発生した以下のエラー対応
# Caused by: java.lang.ClassNotFoundException: Didn't find class "jp.co.yumemi.android.code_check.item" on path: DexPathList[[zip file "/data/app/jp.co.yumemi.android.codecheck.release-jmN5-D-aVQFnwrBlTGNlUg==/base.apk"],nativeLibraryDirectories=[/data/app/jp.co.yumemi.android.codecheck.release-jmN5-D-aVQFnwrBlTGNlUg==/lib/arm64, /system/lib64, /product/lib64]]
# 背景: コードの圧縮時に該当クラスファイルが削除されてしまっていた可能性がある
# 参考資料: https://developer.android.com/studio/build/shrink-code#keep-code
-keep public class jp.co.yumemi.android.code_check.item
本 issue の要件が達成できたため、issue をクローズします。
要件
開発をスタートする準備を整えてください
完了条件
TODO 項目を完了すること
手順
参考資料