解決釋出測試版和正式版修改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技術(一種申請過專利的,擁有自動調節、進階的插值算法的技術),可以將盡可能地提高放大圖片的品質。程序最大的特色是可以對
Windows版和MAC版解決--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 (word版和chm版)共享下載
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
統計天數java版和c版
題目背景 統計天數 題目描述 炎熱的夏日,KC非常的不爽。他寧可忍受北極的寒冷,也不願忍受廈門的夏天。最近,他開始研究天氣的變化。他希望用研究的結果預測未來的天氣。 經歷千辛萬苦,他收集了連續N(1&
ubuntu alternate版和desktop版區別
ubuntu 釋出的linux 裡面有一個非常具有迷惑性的版本-desktop 。因為有一套server ,所以desktop 很容易從字面上被理解成桌面版。而這樣理解的人通常會弄不明白剩下那個alternate 是什麼東西。 其實desktop 是Live C
mybatis(5) : 逆向工程IDEA版和Eclipse版
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是一個開