1

アンドロイドプレイストアでアプリを最後に更新してから別の問題に直面しています。最近、APKのサイズが急増しました。検査の結果、libsプラットフォームは現在、新しいバージョンのCPUアーキテクチャをサポートしていることが判明しました(サイズの40%以上の増加)。この時点で、APKをCPU単位で分割することにしました(グラデル経由)。apkの分割以来、Playstore経由でキャンペーントラッキングが動作しない

これを公開した後、私たちはキャンペーントラッキングの問題に直面しました。私たちのキャンペーン追跡番号は劇的に減少しました。何かが間違っていると思ったので、分析の統合を再訪し、SDKと対応する設定ファイルを最新のライブラリ(play-services-9.0.0)にアップグレードしました。また、キャンペーンモニタリングテストを実施しました。しかし、キャンペーントラッキングはまだ期待通りに機能していません(80%以上の帰属)。

誰でもこの設定で何が不足していると指摘できますか?ありがとうございます。

参考までに、build.gradle、AndroidManifest.xml、キャンペーンレシーバファイルを投稿しています。

build.gradle(特定できる情報は削除)

buildscript { 
    repositories { 
     maven { url 'https://maven.fabric.io/public' } 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'io.fabric.tools:gradle:1.+' 
     classpath 'com.android.tools.build:gradle:2.1.0' 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 
apply plugin: 'com.android.application' 
apply plugin: 'io.fabric' 
apply plugin: 'com.google.gms.google-services' 

repositories { 
    maven { url 'https://maven.fabric.io/public' } 
    mavenCentral() 
    flatDir { 
     dirs 'libs' 
    } 
} 


android { 
    compileSdkVersion 23 
    buildToolsVersion '23.0.3' 

    defaultConfig { 
     applicationId "com.example.app" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0.0" 
     renderscriptTargetApi 19 
     renderscriptSupportModeEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    applicationVariants.all { variant -> 
     variant.outputs.each { output -> 
      output.outputFile = new File(
        output.outputFile.parent, 
        output.outputFile.name.replace(".apk", "-${variant.versionCode}-${variant.versionName}.apk")) 
     } 
    } 
    splits { 
     abi { 
      enable true 
      reset() 
      include 'arm64-v8a', 'x86', 'armeabi', 'armeabi-v7a', 'mips'/*, 'x86_64', 'mips64'*/ 
      universalApk true 
     } 
    } 
    sourceSets { main { assets.srcDirs = ['src/main/assets', 'src/main/assets/fonts'] } } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.android.support:recyclerview-v7:23.4.0' 
    compile 'com.google.android.gms:play-services-base:9.0.0' 
    compile 'com.google.android.gms:play-services-plus:9.0.0' 
    compile 'com.google.android.gms:play-services-analytics:9.0.0' 
    compile 'com.google.android.gms:play-services-appindexing:9.0.0' 
    compile 'com.google.android.gms:play-services-gcm:9.0.0' 
    compile 'com.google.android.gms:play-services-location:9.0.0' 
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true; 
    } 
    compile('com.twitter.sdk.android:tweet-composer:[email protected]') { 
     transitive = true; 
    } 
} 

のAndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.app" > 
<!--android:installLocation="auto" for adoptable storage--> 
    <uses-permission .... /> 

    <application 
     android:name="com.example.app.toolbelt.ComBank" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:largeHeap="true" 
     android:screenOrientation="portrait" 
     android:theme="@style/Theme.Light" > 
     ... 
     <receiver 
      android:name="com.example.app.services.campaign.CampaignReceiver" 
      android:enabled="true" android:exported="true"> 
      <intent-filter> 
       <action android:name="com.android.vending.INSTALL_REFERRER" /> 
      </intent-filter> 
     </receiver> 
     <receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver" 
     android:enabled="true" 
     android:exported="true"> 
      <intent-filter> 
       <action android:name="com.android.vending.INSTALL_REFERRER" /> 
      </intent-filter> 
     </receiver> 
     <service android:name="com.google.android.gms.analytics.CampaignTrackingService" /> 
     <!-- Optionally, register AnalyticsReceiver and AnalyticsService to support background 
     dispatching on non-Google Play devices --> 
     <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver" 
      android:enabled="true"> 
      <intent-filter> 
       <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /> 
      </intent-filter> 
     </receiver> 
     <service android:name="com.google.android.gms.analytics.AnalyticsService" 
      android:enabled="true" 
      android:exported="false"/> 
    </application> 

</manifest> 

CampaignReceiver.java

import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

import com.example.app.toolbelt.ComBank; 
import com.example.app.toolbelt.Tracking; 
import com.google.android.gms.analytics.CampaignTrackingReceiver; 

import java.io.UnsupportedEncodingException; 
import java.net.URLDecoder; 

/** 
* Created by rokha on 1/8/15. 
*/ 
public class CampaignReceiver extends CampaignTrackingReceiver { 
    static final String TAG = CampaignReceiver.class.getSimpleName(); 
    Tracking tracking; 
    Context mContext; 


    @Override 
    public void onReceive(Context context, Intent intent) { 

     String rawReferrer = intent.getStringExtra("referrer"); 

     Log.d(TAG, "received broadcast"); 

     if (rawReferrer != null) { 
      Log.d(TAG, "raw: " + rawReferrer); 

      String referrer = ""; 

      try { 
       referrer = URLDecoder.decode(rawReferrer, "UTF-8"); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); // This should not happen. 
      } 

      Log.d(TAG, "decoded: " + referrer); 

      if (ComBank.sharedPref.getString(CampaignHelper.REFERRED, "").length() == 0) { 
       ComBank.editor.putString(CampaignHelper.REFERRER, referrer).commit(); 
      } 
     } else { 
      Log.e(TAG, "referrer is null"); 
     } 
     super.onReceive(context, intent); 
    } 
} 

答えて

0

このようなマニフェストの変更を試してみて、それが動作します

<receiver 
     android:name="*.InstallSourceReceiver" 
     android:exported="true"> 
     <intent-filter android:priority="10"> 
      <action android:name="com.android.vending.INSTALL_REFERRER"/> 
     </intent-filter> 

     <meta-data 
      android:name="forward.GoogleAnalytic" 
      android:value="com.google.analytics.tracking.android.CampaignTrackingReceiver" /> 
    </receiver> 

トラッキングに複数の受信機を使用する場合は、優先度を設定します。異なるCPUアーキテクチャ用に複数のAPKを作成するには

また、あなたのキャンペーントラッキングURLを共有してください。この

productFlavors { 
    x86 { 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' 
     versionCode 4 + defaultConfig.versionCode 
     ndk { 
      abiFilter "x86" 
     } 
    } 
    mips { 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' 
     versionCode 3 + defaultConfig.versionCode 
     ndk { 
      abiFilter "mips" 
     } 
    } 
    armv7 { 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' 
     versionCode 2 + defaultConfig.versionCode 
     ndk { 
      abiFilter "armeabi-v7a" 
     } 
    } 
    arm { 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' 
     versionCode 1 + defaultConfig.versionCode 
     ndk { 
      abiFilter "armeabi" 
     } 
    } 
} 

のような製品のフレーバーを使用する必要があります。

+0

[リンク1](https://play.google.com/store/apps/details?id=com.example.app&referrer=utm_source%3Doffline%26utm_medium%3Dbanner%26utm_campaign%3DKT) [リンク2](HTTPS ://play.google.com/store/apps/details?id = com.example.app&referrer = utm_source%3DKA%26utm_medium%3Dbanner%26utm_campaign%3Dslogan) – user1802486

+0

詳細すべてのAPKはバージョンコードが異なるのであなたは異なるGAキーを取る必要がありますので、最高のものだけを取って、apkによるgradle経由で送ってください。 5つのapkアプリケーションを作成しましたか? –

+0

@zahid:はい、私は5つのapkを作成しました(5回前にgradleを実行しています...より良い自動化のため、上記の方法も展開しました) 私はアンドロイドの優先順位を探していました。私はAPKに複数のソリューションを導入したので、まだカウンターテストを実行する必要があります。私はより良い理解を持っていれば私の結果をここに掲載するでしょう。 – user1802486

関連する問題