1. 程式人生 > >安卓開發 做商城類APP遇到的一些坑

安卓開發 做商城類APP遇到的一些坑

一、安卓8.0以上,通知要做 通知渠道(NotificationChannel),不做的話收不到任何通知。

解決方案:要麼更改 targetSdkVersion 到26以下,要麼做通知渠道分類。搜一下安卓8.0通知適配,會有很多方案程式碼。

二、網路請求錯誤的提示:error:CLEARTEXT communication to host(主機名) not permitted by network security policy 

原因:由於 Android P 限制了明文流量的網路請求,非加密的流量請求都會被系統禁止掉。

解決方案:在res下新建一個xml目錄 建立名為network_security_config.xml 檔案 ,該檔案內容如下:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

然後在 AndroidManifest.xml application 標籤內應用上面的xml配置:

android:networkSecurityConfig="@xml/network_security_config"

 此問題解決。

3.阿里百川 電商SDK Adnroid P版本下閃退 

報錯資訊如下(我剛處理完,複製的百川論壇的一個兄弟的報錯資訊,跟我遇到的一模一樣。):

10-21 13:52:42.446 17244-17440/com.amkj.dmsh E/Tinker.TinkerUncaughtExceptionHandler: uncaughtException:Failed resolution of: Lorg/apache/http/entity/ByteArrayEntity;
10-21 13:52:42.447 17244-17440/com.amkj.dmsh E/Tinker.UncaughtHandler: TinkerUncaughtHandler catch exception:java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/entity/ByteArrayEntity;
at com.taobao.wireless.security.adapter.common.c.a(Unknown Source:9)
at com.taobao.wireless.security.adapter.datareport.DataReportJniBridge.sendReportBridge(Unknown Source:23)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.entity.ByteArrayEntity" on path: DexPathList[[zip file "/data/user/0/com.amkj.dmsh/app_SGLib/libsgmain_312768000000.zip"],nativeLibraryDirectories=[/data/app/com.amkj.dmsh-Tro5E9BIyEj-fC9syfsbbA==/lib/x86, /data/user/0/com.amkj.dmsh/app_SGLib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.taobao.wireless.security.adapter.common.c.a(Unknown Source:9) 
at com.taobao.wireless.security.adapter.datareport.DataReportJniBridge.sendReportBridge(Unknown Source:23) 

 公司做的有另一個集成了百川的APP,但是我安裝他的APP沒有閃退。拿到他的程式碼,對比了一下sdk的依賴。發現他沒有用到百川提供的安全基礎包。我把安全基礎包的依賴去掉之後編譯不過。然後又查看了他的build.gradle清單檔案。發現他集成了阿里的實人認證的SDK。實人認證SDK裡包括了關於安全的jar包。

我抱著試一試的態度,申請實人認證的SDK接入。程式不閃退了。

附上阿里實人認證的幫助文件:

更新 此方法太麻煩 ,請參照第4條做。完美解決。

4. 整合友盟時進行前期分享遇到的

ClassNotFoundException: Didn't find class "org.apache.http.conn.scheme.SchemeRegistry"

Apache HTTP 客戶端棄用
在 Android 6.0 中,我們取消了對 Apache HTTP 客戶端的支援。 從 Android 9 開始,預設情況下該內容庫已從 bootclasspath 中移除且不可用於應用。

要繼續使用 Apache HTTP 客戶端,以 Android 9 及更高版本為目標的應用可以向其 AndroidManifest.xml的application節點下 新增以下內容:

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

<application
        android:name=".Global.MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:networkSecurityConfig="@xml/network_security_config"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:allowBackup">
        <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />
</application>

5.Android Studio Git錯誤:

報錯資訊:

Can't Update
		No tracked branch configured for branch master or the branch doesn't exist.
		To make your branch track a remote branch call, for example,
		git branch --set-upstream-to=origin/master master (show balloon)

 網上搜了。用VCS——》Git——》Rebase 方法無效。

解決方案:

找到專案目錄 右鍵開啟Git Bash Here 

然後輸入命令:

第一步:

git push origin master

origin根據情況變化,例如我的名字是sqb 就是git push sqb master

 第二步:

git push -u origin master

 完成。再去Android Studio 操作,一切正常。

目前持續爬坑中,會更新到專案結束