66 lines
2.4 KiB
Python
66 lines
2.4 KiB
Python
# BUILDING SupportLeanbackShowcase app using local library.
|
|
import sys
|
|
import subprocess
|
|
import os
|
|
import fileinput
|
|
import re
|
|
|
|
# Does an inplace substitution of the pattern with newVal in inputFile
|
|
def replace(inputFile, pattern, newVal, ):
|
|
print 'About to replace repo path to {0} in {1}'.format(newVal, inputFile)
|
|
replaced = False
|
|
try:
|
|
for line in fileinput.input(inputFile, inplace = 1):
|
|
if re.match(pattern, line, re.I|re.M):
|
|
line = re.sub(pattern, newVal, line)
|
|
replaced = True
|
|
print line,
|
|
except IOError as e:
|
|
print "Failed to open file ", e
|
|
|
|
if not replaced:
|
|
file = open(inputFile, "a")
|
|
file.write(newVal + "\n")
|
|
|
|
# Finds the local leanback library version based on leanback-v17/maven-metadata.xml
|
|
def lookup_local_library_version(repo_path):
|
|
leanback_maven_metadata_path = repo_path + "/out/host/gradle/frameworks/support/build/support_repo/com/android/support/leanback-v17/maven-metadata.xml"
|
|
if not os.path.exists(leanback_maven_metadata_path):
|
|
print "ERROR: Missing leanback-v17 library {} in local repo".format(leanback_maven_metadata_path)
|
|
|
|
file = open(leanback_maven_metadata_path, "r")
|
|
for line in file:
|
|
matchObj = re.match(r'\s*<version>(.*)</version>', line)
|
|
if matchObj:
|
|
return matchObj.group(1).strip(' \t\n\r')
|
|
|
|
# Get repo path
|
|
current_path = os.getcwd()
|
|
index = current_path.find("development/samples/SupportLeanbackShowcase")
|
|
if index < 0:
|
|
print "ERROR: Invalid repo {0}".format(current_path)
|
|
exit(0)
|
|
|
|
repo_path = current_path[:index]
|
|
support_frameworks_path = repo_path + "/frameworks/support"
|
|
if not (os.path.isdir(repo_path) or os.path.isdir(support_frameworks_path)):
|
|
print 'ERROR : Repo "{0}" does not exist'.format(repo_path)
|
|
print 'Please run gradlew uploadArchives inside frameworks/support'
|
|
exit(0)
|
|
|
|
# Substitute LIBRARY_VERSION/LOCAL_REPO in local.properties
|
|
library_version = lookup_local_library_version(repo_path)
|
|
replace(os.getcwd()+"/local.properties", r'(.*)LOCAL_REPO(.*)', 'LOCAL_REPO='+repo_path)
|
|
replace(os.getcwd()+"/local.properties", r'(.*)LIBRARY_VERSION(.*)', 'LIBRARY_VERSION='+library_version)
|
|
|
|
# Build
|
|
print "Building SupportLeanbackShowcase app..."
|
|
subprocess.call(["./gradlew", "assembleDebug"])
|
|
|
|
#Install apk
|
|
print "Installing SupportLeanbackShowcase..."
|
|
subprocess.call(["adb", "install", "-r", "./app/build/outputs/apk/app-debug.apk"])
|
|
|
|
print "Finished installing SupportLeanbackShowcase app."
|
|
|