目次
3.4 Weibo の共有 [compileSdkVersion = 29]
最近では、多くのサードパーティ SDK プロバイダーも市場監督規則に従って対応する調整を行っています。Umeng は昔ながらのサードパーティ SDK 統合開発プラットフォームであり、その SDK もかなりアップグレードされ、更新されています。著者の Android APP が接続されている Umeng SDK は古いバージョンですが、新しい規制規則が出た今でも、規制に違反してアプリが削除されないよう注意する必要があります。次に、Umeng SDK プロセスの最新バージョンと関連する問題に接続します。
1.モバイル統計SDK
SDK 統合プロセスのリファレンス ドキュメント: https://developer.umeng.com/docs/119267/detail/118584
上記のドキュメントに従ってください。プロセスは非常に簡単で、統合プロセス中に問題は発生しません。関連する参照パッケージをインポートするには自動統合を使用することをお勧めします。
implementation 'com.umeng.umsdk:common:9.5.2'// 必选
implementation 'com.umeng.umsdk:asms:1.6.3'// 必选
implementation 'com.umeng.umsdk:apm:1.7.0' //错误分析模块改为独立库,看crash和性能数据请一定集成
implementation 'com.umeng.umsdk:abtest:1.0.0'//使用U-App中ABTest能力,可选
2. メッセージプッシュ U-push
SDK v6.5.5 自動統合ドキュメント: https://developer.umeng.com/docs/67966/detail/206987
参考パッケージ:
implementation 'com.umeng.umsdk:push:6.5.5'
1. アプリケーションのパッケージ名の問題を変更する
ここで、開発プロセス中にアプリケーションのパッケージ名を変更する場合は、変更したパッケージ名を、Umeng のプッシュ バックグラウンド管理設定のパッケージ名と一致させることを忘れないようにする必要があることに注意してください [下図を参照]。そうでない場合は、プッシュ顧客側へのメッセージはエラーをスローします。
2. サードパーティの依存関係の競合によりエラーが発生する
アプリケーションプロジェクトに複数の依存関係を追加すると、これらの「直接的な依存関係」と「間接的/推移的な依存関係」が直接競合する可能性があり、同様の状況が発生した場合、プロジェクトのビルド時にエラーが報告されます。著者による記事 記事: Android サードパーティ依存関係の競合解決 - 例として、Umeng Push (U-Push SDK) と Alibaba Cloud Mobile User Feedback (Mobile Feedback SDK) の統合を取り上げる_Si Tao のブログ Blog-CSDN ブログ
3. サードパーティプラットフォームの共有
ソーシャル共有統合ドキュメント: https://developer.umeng.com/docs/128606/detail/193879
著者は、WeChat、QQ、Weibo など、いくつかの主流プラットフォームを統合しました。統合方法には、自動統合と手動統合もあります。ネットワーク速度が高く、壁を自由に回避できる場合は、「自動統合」を使用することをお勧めします。 」という比較方法が便利です。統合されたサードパーティ プラットフォームのこの部分には最も多くの SDK が含まれているため、統合プロセス中に発生する問題も最も多くなります。
1. 手動統合
たとえば、以下は「share_android_7.2.1 sdk」の内容です。手動での統合方法はかなり面倒です。Umeng はプラットフォームごとに各プラットフォームの lib パッケージを分類していますが、各 jar パッケージを手動でコピーする必要があります。アプリの libs ディレクトリに配置されます。また、プロジェクトの対応するディレクトリに 1 つずつコピーする必要がある解像度画像リソースとレイアウト ファイルも多数あります。
筆者も最初は手動で統合する方法を使っていましたが、コンパイル中に常にエラーが報告されたり、ファイルが欠落したりするなど、作業がスムーズではなく、諦めていました。コピーされた一部のリソース ファイルは自動 jar 統合のリソース ファイルと重複しますが、コンパイル、パッケージ化、実行には問題ありません。
2. 自動統合
implementation 'com.umeng.umsdk:share-core:7.2.1'//分享核心库,必选
implementation 'com.umeng.umsdk:share-board:7.2.1'//分享面板功能,可选
implementation 'com.umeng.umsdk:share-wx:7.2.1'//微信完整版
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.8.0'//微信官方依赖库,必选
implementation 'com.umeng.umsdk:share-qq:7.2.1'//QQ完整版
implementation files('libs/open_sdk_3.5.12.2_r97423a8_lite.jar') //QQ官方依赖库,必选
implementation 'com.umeng.umsdk:share-sina:7.2.1'//新浪微博完整版
implementation 'io.github.sinaweibosdk:core:12.5.0@aar'//新浪微博官方SDK依赖库,必选
ここで注意してください: QQ の公式依存関係パッケージは手動でダウンロードし、アプリの libs ディレクトリにコピーする必要があります。QQ オープン プラットフォームで作成者によってダウンロードされたパッケージ: [open_sdk_3.5.13.83_rc564928_lite.jar]、上記の Umeng との比較公式 Web サイトの統合ドキュメント バージョン: [open_sdk_3.5.12.2_r97423a8_lite.jar] の方が新しく、QQ オープン プラットフォームでは過去のバージョンのダウンロードが提供されません。
Open_sdk_3.5.13.83_rc564928_lite.jar アドレス: https://wiki.connect.qq.com/sdk%e4%b8%8b%e8%bd%bd
3. 統合プロセスにおける問題
3.1 Android マニフェスト XML の構成
ここの公式ドキュメントの記述は曖昧さを招きやすく、筆者もここでかなり落とし穴を踏んだので、それも記録しておきます。
以下は統合ドキュメントの一部のスクリーンショットです. 作成者は統合バージョン 7.2.1. この公式ドキュメントの説明を参照してください. WXEntryActivity を追加する必要がありますか?
AndroidManifest.xml ファイルがインポートされた com.umeng.umsdk:share-wx:7.2.1@aar に含まれているため、このアクティビティを宣言している以下の図を参照してください。以前に宣言する必要があるものは、現在は必要ありません。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.umeng.socialize.weixin"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="12"
android:targetSdkVersion="22" />
<application>
<activity
android:name="${applicationId}.wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
</application>
</manifest>
まとめると、古いバージョンでは、AndroidManifest.xml で宣言する必要があるアクティビティは基本的にキャンセルされます。以下のコード部分は旧バージョンに記載されており、現在はコメントアウトされています。不安な場合は、上記の作成者が示した例を参照し、インポートされたサードパーティ パッケージを展開し、内部の AndroidManifest.xml に関連する宣言があるかどうかを確認してください。
以下は、以前のバージョンの SDK で必要な AndroidManifest.xml で宣言されているアクティビティです。現在はコメントアウトできます。
<!-- weixin -->
<!--
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
-->
<!-- QQ -->
<!-- 在QQ开放平台申请应用分配的APP ID:101835469 -->
<!--
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="tencent101835469"/>
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
-->
<!-- sina -->
<!--
<activity
android:name="com.umeng.socialize.media.WBShareCallBackActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity>
<activity
android:name="com.sina.weibo.sdk.share.WBShareCallBackActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity>
<activity
android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:windowSoftInputMode="adjustResize"></activity>
<activity
android:name="com.sina.weibo.sdk.share.WbShareTransActivity"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
-->
3.2. qqappid 欠落エラー:
AndroidManifest.xml の属性 data@scheme にはプレースホルダー置換が必要ですが、<qqappid> の値が提供されていません。
エラーの理由は、com.umeng.umsdk:share-qq:7.2.1 の AndroidManifest ファイルに次のテキストが含まれているためです。
<data android:scheme="tencent${qqappid}" />
以下に示すように:
解決策: QQ 開発プラットフォームに適用されたアプリ キーをアプリの build.gradle に追加します。
android {
defaultConfig {
manifestPlaceholders = [qqappid: "12345678"]
}
}
3.3 QQ 認証コード
//QQ官方sdk授权
//目前采用的是v7.2.1的版本,经测试,不加上授权代码,点击分分享会提示错误toast:
//分享失败错误码: 2003 错误信息:分享失败----用户未授权,暂时无法使用QQ登录及分享等功能
//分享v7.2.0 SDK中的QQ SDK版本是v3.5.12,暂时只支持离线引入jar包和官方依赖库,并且需要调用授权api才可以正常使用授权和分享功能
Tencent.setIsPermissionGranted(true);
3.4 Weibo の共有 [compileSdkVersion = 29]
共有ドキュメントには次のように記載されています: Sina Weibo SDK は Share 7.1.4 以降にアップグレードされており、プロジェクトの CompileSdkVersion は 29 以降である必要があります。作成者の CompileSdkVersion は 26 であり、ビルド プロセス中にエラーが報告されます。29 に変更すると、普通:
AAPT: エラー: 属性 android:requestLegacyExternalStorage が見つかりません。