Unity--Android api level 28のピット記録をアップグレード


背景:プロジェクトで使用されているUnityバージョンは5.4.4 f 1,Android targetSdkVarsionは22で、targetSdkVarsionを28(少なくとも26)にアップグレードするよう通知されました.
実践:targetSdkValersonを22から28に直接変更し、Unity Buildでandroid apkパッケージを生成し、異なる携帯電話にインストールして実行する
質問:小米cc 9 e携帯電話で、appアイコンをクリックするとすぐに点滅し、表現には何のヒントもありません.
位置決め:コマンドラインadb logcat>log.txtを使用してandroidログをlog.txtファイルにエクスポートします.もちろん、マシン上のandroid開発環境が完備している場合は、eclipseまたはAndroid Studioでログを直接表示できます.
チェックして、1行の情報が表示されます.
E/Unity: Unable to query for permission: Fragment null must be a public static class to be properly recreated from instance state

GoogleでこれがUnityのバグであることが判明し、Unityプログラムが起動した後に申請できずに自分でプロセスを殺した.Unityは2018バージョン以降に修復を行ったが、すでにオンラインになったプロジェクトに対しては、Unityバージョンをアップグレードする代価が大きすぎて、リスクも高く、Unityバージョンをアップグレードするのは明らかに現実的ではない
解決策:Unity対応のバージョンは基本的に対応するパッチがあることを思い出して、そこでUnity 5.4.4 p 1をダウンロードして試みて、最終的にBuildの出てくるapkパッケージはインストールした後に、appアイコンをクリックした後にすぐにフラッシュバックすることはできなくて、unityパッチはウェブサイトをダウンロードします
質問:フラッシュバックはありませんが、アプリケーションが起動してからずっと黒い画面で、何のヒントもありません.
位置付け:コマンドラインadb logcat>log 1.txtを使用して、androidログをlog 1.txtファイルにエクスポートし、検索を通じて、1行の情報を見て、Google検索を通じて、これはGoogleの最新の権限政策で、Android api level 23の後、Googleは権限を分類して、大類は危険権限と正常権限に分けて、正常な権限はxmlで配置すればいいです.危険な権限はコードを通じて動的に申請する必要があり、アプリケーションの起動時に権限ウィンドウをポップアップしてユーザーに権限を許可するか禁止するかを選択させ、Googleはアプリケーション権限のウェブサイトを要求し、権限を申請するコードはこのウェブサイトにあります.
ソリューション:動的購買依頼権限コードをプライマリActivityに追加
質問:アプリケーションが起動した後、ライセンスが許可された後も、アプリケーションは黒い画面で何のヒントもありません.
位置付け:コマンドラインadb logcat>log 3.txtを使用して、androidログをlog 3.txtファイルにエクスポートします.チェックすることで、上のような問題が表示されます.私はすでに動的に権限を申請しているのではないでしょうか.許可されていますか.どうしてまた?
解決策:重要な関数にロゴを付け、最終的にログからライセンス前に上記の間違いを報告したことを特定します.つまり、ライセンス前に対応する権限を使用する必要があります(一部の携帯電話はライセンス後に直接ゲームに入ることができ、一部の携帯電話は黒い画面で、異なる携帯電話の実現が異なる可能性があります.Android api levelと関係がある可能性があります).Activityを新規作成し、申請権限のコードをActivityで実行し、処理後にメインActivityにジャンプします.
その他の質問:java.lang.NoClassDefFoundError:Failed resolution of:Log/apache/http/conn/scheme/schemeRegistry;
Apache HTTPクライアント廃棄(Android 9.0公式変更説明より抜粋)Android 6.0でApache HTTPクライアントのサポートをキャンセルしました.Android 9から、デフォルトではbootclasspathからコンテンツライブラリが削除され、アプリケーションに使用できません.Apache HTTPクライアントを引き続き使用するには、Android 9以降のアプリケーションでAndroid Manifest.xmlに次の内容を追加します.エラーが発生した場合は***/android-sdk-windows/platforms/android-xx/optional/ディレクトリの下でorg.apache.http.legacy.jarを自分のプロジェクトのlibsディレクトリの下にコピーします.
プロンプトボックスがポップアップされ、Detected problems with API compatibility(visit g.co/dev/appcompat for more info)が表示されます.  Android P後、Googleは開発者が非公式公開APIメソッドやインタフェースを呼び出すことを制限し、反射を使ってソースコードを直接呼び出すとこのようなヒント弾窓が現れ、コードを使って弾枠を取り除く
private void closeAndroidPDialog(){
        try {
            Class aClass = Class.forName("android.content.pm.PackageParser$Package");
            Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class);
            declaredConstructor.setAccessible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            Class cls = Class.forName("android.app.ActivityThread");
            Method declaredMethod = cls.getDeclaredMethod("currentActivityThread");
            declaredMethod.setAccessible(true);
            Object activityThread = declaredMethod.invoke(null);
            Field mHiddenApiWarningShown = cls.getDeclaredField("mHiddenApiWarningShown");
            mHiddenApiWarningShown.setAccessible(true);
            mHiddenApiWarningShown.setBoolean(activityThread, true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Android 8.0携帯電話でフラッシュバックし、Only fullscreen opaque activities can request orientation                                                            AndroidManifastファイルに関連するActivityクラスの登録を見つけ、android:screenOrientation='portrait'を削除                                         スタイルファイルでtrueを探し、trueをfalseに変更
java.net.UnknownServiceException:CLEARTEXT communication**not permitted by network security policy                    Googleは、ユーザーデータとデバイスのセキュリティを確保するため、次世代Androidシステム(Android P)のアプリケーションに対して、デフォルトで暗号化接続を使用し、構成によってネットワークセキュリティ構成を変更し、res/xmlディレクトリの下でnetwork_を作成するよう求めます.security_config.xml、内容は以下の通りです


    

AndroidManifest.xmlファイルのアプリケーションラベルに次のプロパティを追加します.