1. 程式人生 > >解決釋出測試版和正式版修改N多程式碼的問題

解決釋出測試版和正式版修改N多程式碼的問題

前言:有時候我們需要在手機上能同時安裝測試版和正式版app,這就要求我們app的包名不同,包名不同的話,就要求我們的測試版用的第三方SDK的app key就不同,比如專案中用了極光推送,我們就要申請兩個app key。
如果不借助gradle話每次手動修改包名、app key、極光server的category顯然很容易弄混淆。

在android studio中是通過applicationId來判斷是否為同一個app,並且server中的category節點的包名其實也是applicationId,在android studio中如果沒有寫applicationId那麼預設與packageName是一樣的。

核心程式碼:

 productFlavors {

 //釋出正式環境
        prod{ //如果是多渠道打包就把這個花括號中的內容寫到 productFlavors.all 中
            applicationId = "com.xxx.xxxx"
            //可以在manifet.xml引用manifestPlaceholders的鍵值對
            manifestPlaceholders = [APP_NAME:"雲MAS",
                                    PGYER_APPID : "85fb81911exxxxxxxxxxxxx773d7de34"
,//設定app_key JPUSH_APPKEY:"1910xxxxxxxxxxxxxb10d0e8",//設定app_key APPLICATION_ID : applicationId]
//設定程式包名,區別packageName //可以在java程式碼中來獲取url,第一個引數表示型別,第二個引數表示引用名,第三個引數表示引用的值,注意字串型別需要在爽引號的基礎上再打上單引號。 buildConfigField("String"
,"HOST_URL",'"1xx.xx.xx.xx:xx00/xxxxx/app"') //可以在java程式碼中來獲取這個圖片 buildConfigField("int","ICON_CLOUD","R.drawable.xxxxx") } //釋出測試環境 dev{ applicationId = "com.xxx.xxx.beta" manifestPlaceholders = [APP_NAME:"雲MAS(測試)", PGYER_APPID : "85fb81911exxxxxxxxxxxxx73d7de34", JPUSH_APPKEY:"1910xxxxxxxxxxxxxxxxx0e8", APPLICATION_ID : applicationId] buildConfigField("String","HOST_URL",'"1xx.3x.xx.7x:9000/messaxxxxxxice/app"') buildConfigField("int","ICON_CLOUD","R.drawable.xxxxx_test") } }

在manifest.xml中引用:

//極光推送的許可權需要包名
<uses-permission android:name="${APPLICATION_ID}.permission.JPUSH_MESSAGE" />

//動態改變app名
tools:replace="android:label"
android:label="${APP_NAME}"

//服務中引用包名
<service
     android:name="cn.jpush.android.service.DaemonService"
     android:enabled="true"
     android:exported="true" >
     <intent-filter>
         <action android:name="cn.jpush.android.intent.DaemonService" />

         <category android:name="${APPLICATION_ID}" />
     </intent-filter>
 </service>

java程式碼中動態設定

//動態設定RUL,測試版使用測試版的url,正式版使用正式版的url,使用前需要同步gradle,否則就會找不到HOST_URL
private static String serverAddress= BuildConfig.HOST_URL;

//動態設定圖片,測試版使用測試版的圖片,正式版使用正式版的圖片,使用前需要同步gradle,否則就會找不到ICON_CLOUD
iamgeView.setImageResource(BuildConfig.ICON_CLOUD);

相關推薦

解決釋出測試正式修改N程式碼的問題

前言:有時候我們需要在手機上能同時安裝測試版和正式版app,這就要求我們app的包名不同,包名不同的話,就要求我們的測試版用的第三方SDK的app key就不同,比如專案中用了極光推送,我們就要申請兩個app key。 如果不借助gradle話每次手動修改包名

android-studio如何獲取除錯正式sha1值

1.除錯版 首先,找到studio的terminal; 然後,找到jdk的bin目錄下,輸入命令:keytool -list -v  -keystore debug.keystore檔案路徑; 例如我的是keytool -list -v  -keystore C:\User

PhotoZoom正式試用的區別是什麽?

Corel 正版 ucs 詳細 hot 如圖所示 程序 內容 平面設計 通常的工具對數碼圖片進行放大時,總會降低圖片的品質,而這款軟體使用了S-SPLINE技術(一種申請過專利的,擁有自動調節、進階的插值算法的技術),可以將盡可能地提高放大圖片的品質。程序最大的特色是可以對

WindowsMAC解決--This license **** has been cancelled

註冊碼地址:http://idea.lanyus.com Windows版: 1、在我的電腦-C:\Windows\System32\drivers\etc,開啟該目錄下的hosts檔案(以文字形式開啟),在最後新增: 0.0.0.0 account.jetbrains.co

關於googlemap程式key的正式debug申請

          這兩天一直糾結這個問題,因為網上給的都是debug版本的,不知道為什麼我debug版本的打包成APK以後,地圖就出不來為此也很是糾結很是不解。沒辦法最後看了官網的文件才知道,原來測試使用debug版本,正式釋出的話還要另外申請一個正式版的。今天試了下終於

獲取高德百度SHA1碼(釋出除錯都有)

高德和百度都是一樣的 如圖下圖:需要釋出版的SHA1和除錯版的SHA1  除錯版的SHA1獲取: 在控制檯視窗C盤目錄下輸入 cd .android 定位到 .android 資料夾 除錯版使用debug.keystore(預設),命令為: keytool

[資源] Visual Studio 2015正式離線iso及線上下載,附專業企業可用key!

原文地址:https://blog.csdn.net/u012394290/article/details/51682135VS2015下載地址:Visual Studio Community 2015簡體中文版(社群版,針對個人免費): 離線iso效驗資訊:MD5: 05D

【翻譯自mos文章】rman 標準企業的兼容性

ont 數據庫 rac targe cati als track class dup rman 標準版和企業版的兼容性 來源於: RMAN Standard and Enterprise Edition Compatibility (文檔 ID 730193.1

AspectJ註解XML

post 規範 {} spring imp sele aik update sel 什麽是AspectJ? AspectJ是一個面向切面的框架,它擴展了Java語言。AspectJ定義了AOP語法,所以它有一個專門的編譯器用來生成遵守Java字節編碼規範的Class文件。

MIT 6.001:SICP 2nd (wordchm)共享下載

MIT 6.001:SICP 2nd (Structure and Interpretation of Computer Programs -Second edition)   Harold Abelson and Gerald Jay Sussman   這本

通過策略模式來實現redis的單機叢集的轉換

(1)首要介面JedisClient package com.wine.jedis; public interface JedisClient { String set(String key, String value); String get(String key); Boo

spring - 淺談spring的事務管理(程式設計式,宣告式(XML註解))

事務管理的目的:               將若干sql語句作為一個整體 , 要麼全部成功 , 要麼全部失敗! 事務套路:  &nb

redis單機叢集工具類

單機版叢集版共同實現的介面 package com.hr.common.redis; public interface JedisClient { String set(String key ,String value); String get(Stri

使用jedis客戶端連線redis,單機叢集

單機版 1.入門例項 @Test public void testJedis(){ //建立一個jedis物件,需要指定服務的ip和埠號 Jedis jedis=new Jedis("192.168.25.11",

Windows server 2012 R2 評估升級正式

管理員執行cmd 輸入  DISM /online /Set-Edition:ServerStandard /ProductKey:MR88Y-BXNRY-VH3DR-349CB-3GK8M /AcceptEula [Key]: MR88Y-BXNRY-VH3DR-349C

統計天數javac

題目背景 統計天數 題目描述 炎熱的夏日,KC非常的不爽。他寧可忍受北極的寒冷,也不願忍受廈門的夏天。最近,他開始研究天氣的變化。他希望用研究的結果預測未來的天氣。 經歷千辛萬苦,他收集了連續N(1&

ubuntu alternatedesktop區別

ubuntu 釋出的linux 裡面有一個非常具有迷惑性的版本-desktop 。因為有一套server ,所以desktop 很容易從字面上被理解成桌面版。而這樣理解的人通常會弄不明白剩下那個alternate 是什麼東西。 其實desktop 是Live C

mybatis(5) : 逆向工程IDEAEclipse

generatorConfig.xml 配置 text欄位轉換 <table tableName="mock_config" domainObjectName="MockConfig"> <columnOverride

專案中使用redis單機叢集

redis搭建請看上一篇文章新增jedis依賴: <!-- Redis客戶端 --> <dependency> <groupId>redis.clients</groupId> &l

springBoot整合Redis(單機叢集

        Spring Boot中除了對常用的關係型資料庫提供了優秀的自動化支援之外,對於很多NoSQL資料庫一樣提供了自動化配置的支援,包括:Redis, MongoDB, Elasticsearch, Solr和Cassandra。        Redis是一個開